From f3edc2fa81b71c32fbc3546be6c0012ff77ec07c Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Thu, 13 Nov 2008 02:20:34 +0000 Subject: [PATCH] Easy IRgen improvement for bitfields, don't emit x >> 0. - 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 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index 3d8d192a2d..ad2f78b8e7 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/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 = -- 2.50.1