diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2008-11-13 02:20:34 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2008-11-13 02:20:34 +0000 |
| commit | f7fb75044ff27b0426876fe17246c2e59ed51d44 (patch) | |
| tree | 8593df52f901555b21742075f7dac046ac240a9e /clang/lib/CodeGen | |
| parent | 8553a98b8e53c9c74ca46d57a29c995f736dd46b (diff) | |
| download | bcm5719-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.cpp | 5 |
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 = |

