]> granicus.if.org Git - clang/commitdiff
Moving CGF::EmitAlignmentAssumption to IRBuilder
authorHal Finkel <hfinkel@anl.gov>
Wed, 15 Oct 2014 23:45:08 +0000 (23:45 +0000)
committerHal Finkel <hfinkel@anl.gov>
Wed, 15 Oct 2014 23:45:08 +0000 (23:45 +0000)
The functionality contained in CodeGenFunction::EmitAlignmentAssumption has
been moved to IRBuilder (so that it can also be used by LLVM-level code).
Remove this now-duplicate implementation in favor of the IRBuilder code.

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

lib/CodeGen/CGExpr.cpp
lib/CodeGen/CodeGenFunction.h

index b7504ca12230004ea94d33f2a5b4732a027d1caf..927b163d605d00f7be4dadaf481316d346f3de81 100644 (file)
@@ -715,35 +715,6 @@ EmitComplexPrePostIncDec(const UnaryOperator *E, LValue LV,
   return isPre ? IncVal : InVal;
 }
 
-void CodeGenFunction::EmitAlignmentAssumption(llvm::Value *PtrValue,
-                                              unsigned Alignment,
-                                              llvm::Value *OffsetValue) {
-  llvm::Value *PtrIntValue =
-    Builder.CreatePtrToInt(PtrValue, IntPtrTy, "ptrint");
-
-  llvm::Value *Mask = llvm::ConstantInt::get(IntPtrTy,
-    Alignment > 0 ? Alignment - 1 : 0);
-  if (OffsetValue) {
-    bool IsOffsetZero = false;
-    if (llvm::ConstantInt *CI = dyn_cast<llvm::ConstantInt>(OffsetValue))
-      IsOffsetZero = CI->isZero();
-
-    if (!IsOffsetZero) {
-      if (OffsetValue->getType() != IntPtrTy)
-        OffsetValue = Builder.CreateIntCast(OffsetValue, IntPtrTy,
-                        /*isSigned*/true, "offsetcast");
-      PtrIntValue = Builder.CreateSub(PtrIntValue, OffsetValue, "offsetptr");
-    }
-  }
-
-  llvm::Value *Zero = llvm::ConstantInt::get(IntPtrTy, 0);
-  llvm::Value *MaskedPtr = Builder.CreateAnd(PtrIntValue, Mask, "maskedptr");
-  llvm::Value *InvCond = Builder.CreateICmpEQ(MaskedPtr, Zero, "maskcond");
-
-  llvm::Value *FnAssume = CGM.getIntrinsic(llvm::Intrinsic::assume);
-  Builder.CreateCall(FnAssume, InvCond);
-}
-
 //===----------------------------------------------------------------------===//
 //                         LValue Expression Emission
 //===----------------------------------------------------------------------===//
index 865f1c9668ffd79dd9e41fa4f70ff0937a4b6158..09b12713a84c19d2cd2bb6ff9a678e69b3250b6e 100644 (file)
@@ -1807,7 +1807,10 @@ public:
                                          bool isInc, bool isPre);
 
   void EmitAlignmentAssumption(llvm::Value *PtrValue, unsigned Alignment,
-                               llvm::Value *OffsetValue = nullptr);
+                               llvm::Value *OffsetValue = nullptr) {
+    Builder.CreateAlignmentAssumption(CGM.getDataLayout(), PtrValue, Alignment,
+                                      OffsetValue);
+  }
 
   //===--------------------------------------------------------------------===//
   //                            Declaration Emission