summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2009-12-01 22:31:51 +0000
committerEli Friedman <eli.friedman@gmail.com>2009-12-01 22:31:51 +0000
commitb2b120f6648019c2d87b7db87279eca08dc1526e (patch)
tree5220370f08e2b1c6da3adb56dfd3d1339b88418a /clang/lib/CodeGen
parent8aa46bc6fdf210b30dc2c63db3b06cd9c5062951 (diff)
downloadbcm5719-llvm-b2b120f6648019c2d87b7db87279eca08dc1526e.tar.gz
bcm5719-llvm-b2b120f6648019c2d87b7db87279eca08dc1526e.zip
Make EmitStoreOfScalar generate a more sane representation of boolean stores.
"Fixes" PR5645. llvm-svn: 90272
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CGExpr.cpp7
1 files changed, 1 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index 63fca2d4dda..a5156eb67bd 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -330,13 +330,8 @@ void CodeGenFunction::EmitStoreOfScalar(llvm::Value *Value, llvm::Value *Addr,
if (Ty->isBooleanType()) {
// Bool can have different representation in memory than in registers.
- const llvm::Type *SrcTy = Value->getType();
const llvm::PointerType *DstPtr = cast<llvm::PointerType>(Addr->getType());
- if (DstPtr->getElementType() != SrcTy) {
- const llvm::Type *MemTy =
- llvm::PointerType::get(SrcTy, DstPtr->getAddressSpace());
- Addr = Builder.CreateBitCast(Addr, MemTy, "storetmp");
- }
+ Value = Builder.CreateIntCast(Value, DstPtr->getElementType(), false);
}
Builder.CreateStore(Value, Addr, Volatile);
}
OpenPOWER on IntegriCloud