@@ -269,28 +269,34 @@ func evaluateIfConfig(
269269 versioned: fn. isVersioned
270270 )
271271
272- case . _pointerBitWidth:
272+ case . _pointerBitWidth, . _hasAtomicBitWidth :
273273 // Ensure that we have a single argument that is a simple identifier, which
274274 // is an underscore followed by an integer.
275275 guard let argExpr = call. arguments. singleUnlabeledExpression,
276276 let arg = argExpr. simpleIdentifierExpr,
277277 let argFirst = arg. first,
278278 argFirst == " _ " ,
279- let expectedPointerBitWidth = Int ( arg. dropFirst ( ) )
279+ let expectedBitWidth = Int ( arg. dropFirst ( ) )
280280 else {
281281 throw recordedError (
282282 . requiresUnlabeledArgument(
283283 name: fnName,
284- role: " pointer bit with ('_' followed by an integer)" ,
284+ role: " bit width ('_' followed by an integer) " ,
285285 syntax: ExprSyntax ( call)
286286 )
287287 )
288288 }
289289
290- return (
291- active: configuration. targetPointerBitWidth == expectedPointerBitWidth,
292- versioned: fn. isVersioned
293- )
290+ let active : Bool
291+ if fn == . _pointerBitWidth {
292+ active = configuration. targetPointerBitWidth == expectedBitWidth
293+ } else if fn == . _hasAtomicBitWidth {
294+ active = configuration. targetAtomicBitWidths. contains ( expectedBitWidth)
295+ } else {
296+ fatalError ( " extraneous case above not handled " )
297+ }
298+
299+ return ( active: active, versioned: fn. isVersioned)
294300
295301 case . swift:
296302 return try doVersionComparisonCheck ( configuration. languageVersion)
0 commit comments