]> granicus.if.org Git - clang/commitdiff
Easy IRgen improvement for bitfields, don't emit x >> 0.
authorDaniel Dunbar <daniel@zuster.org>
Thu, 13 Nov 2008 02:20:34 +0000 (02:20 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 13 Nov 2008 02:20:34 +0000 (02:20 +0000)
 - Logic such as this quite possibly should be optional builder
   behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59213 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExpr.cpp

index 3d8d192a2d876054b960d0192816812674bdd96b..ad2f78b8e77d5c6d90bc07d3a5544924f510ba6d 100644 (file)
@@ -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 =