CodeGen: Correctly convert atomic bool from i8 to i1
Bools are a little tricky, they are i8 in memory and must be coerced
back to i1 before further operations can be performed on them.
This fixes PR22577.
llvm-svn: 229204
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index 568f949..d82fff8 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -1140,7 +1140,7 @@
LValue lvalue = LValue::MakeAddr(Addr, Ty,
CharUnits::fromQuantity(Alignment),
getContext(), TBAAInfo);
- return EmitAtomicLoad(lvalue, Loc).getScalarVal();
+ return EmitFromMemory(EmitAtomicLoad(lvalue, Loc).getScalarVal(), Ty);
}
llvm::LoadInst *Load = Builder.CreateLoad(Addr);