From: Hal Finkel Date: Wed, 15 Oct 2014 23:45:08 +0000 (+0000) Subject: Moving CGF::EmitAlignmentAssumption to IRBuilder X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5e551b01d7ee018695573ad027f645ee236156c3;p=clang Moving CGF::EmitAlignmentAssumption to IRBuilder 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 --- diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index b7504ca122..927b163d60 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -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(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 //===----------------------------------------------------------------------===// diff --git a/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h index 865f1c9668..09b12713a8 100644 --- a/lib/CodeGen/CodeGenFunction.h +++ b/lib/CodeGen/CodeGenFunction.h @@ -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