diff --git a/clang/lib/CodeGen/SwiftCallingConv.cpp b/clang/lib/CodeGen/SwiftCallingConv.cpp --- a/clang/lib/CodeGen/SwiftCallingConv.cpp +++ b/clang/lib/CodeGen/SwiftCallingConv.cpp @@ -99,6 +99,15 @@ auto atomicSize = CGM.getContext().getTypeSizeInChars(atomicType); auto valueSize = CGM.getContext().getTypeSizeInChars(valueType); + auto valueTy = atomicType->getValueType(); + // _Atomic(_Bool) does not correspond to i1. + if (valueTy == CGM.getContext().BoolTy) { + addTypedData(llvm::Type::getIntNTy(CGM.getLLVMContext(), + CGM.getContext().toBits(valueSize)), + begin); + } else { + addTypedData(atomicType->getValueType(), begin); + } addTypedData(atomicType->getValueType(), begin); // Add atomic padding.