summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2008-11-13 02:20:34 +0000
committerDaniel Dunbar <daniel@zuster.org>2008-11-13 02:20:34 +0000
commitf7fb75044ff27b0426876fe17246c2e59ed51d44 (patch)
tree8593df52f901555b21742075f7dac046ac240a9e /clang/lib/CodeGen
parent8553a98b8e53c9c74ca46d57a29c995f736dd46b (diff)
downloadbcm5719-llvm-f7fb75044ff27b0426876fe17246c2e59ed51d44.tar.gz
bcm5719-llvm-f7fb75044ff27b0426876fe17246c2e59ed51d44.zip
Easy IRgen improvement for bitfields, don't emit x >> 0.
- Logic such as this quite possibly should be optional builder behavior. llvm-svn: 59213
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CGExpr.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index 3d8d192a2d8..ad2f78b8e77 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -214,8 +214,9 @@ RValue CodeGenFunction::EmitLoadOfBitfieldLValue(LValue LV,
llvm::Value *Val = Builder.CreateLoad(Ptr, LV.isVolatileQualified(), "tmp");
// Shift to proper location.
- Val = Builder.CreateLShr(Val, llvm::ConstantInt::get(EltTy, StartBit),
- "bf.lo");
+ if (StartBit)
+ Val = Builder.CreateLShr(Val, llvm::ConstantInt::get(EltTy, StartBit),
+ "bf.lo");
// Mask off unused bits.
llvm::Constant *LowMask =
OpenPOWER on IntegriCloud