[llvm] r261258 - [IR] Straighten out bundle overload of IRBuilder::CreateCall
David Majnemer via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 18 13:07:55 PST 2016
Can this be merged into 3.8?
On Thu, Feb 18, 2016 at 12:57 PM, Reid Kleckner via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: rnk
> Date: Thu Feb 18 14:57:41 2016
> New Revision: 261258
>
> URL: http://llvm.org/viewvc/llvm-project?rev=261258&view=rev
> Log:
> [IR] Straighten out bundle overload of IRBuilder::CreateCall
>
> IRBuilder has two ways of putting bundle operands on calls: the default
> operand bundle, and an overload of CreateCall that takes an operand
> bundle list.
>
> Previously, this overload used a default argument of None. This made it
> impossible to distinguish between the case were the caller doesn't care
> about bundles, and the case where the caller explicitly wants no
> bundles. We behaved as if they wanted the latter behavior rather than
> the former, which led to problems with simplifylibcalls and WinEH.
>
> This change fixes it by making the parameter non-optional, so we can
> distinguish these two cases.
>
> Modified:
> llvm/trunk/include/llvm/IR/IRBuilder.h
> llvm/trunk/test/Transforms/InstCombine/fprintf-1.ll
>
> Modified: llvm/trunk/include/llvm/IR/IRBuilder.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/IRBuilder.h?rev=261258&r1=261257&r2=261258&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/IRBuilder.h (original)
> +++ llvm/trunk/include/llvm/IR/IRBuilder.h Thu Feb 18 14:57:41 2016
> @@ -1547,16 +1547,7 @@ public:
> }
>
> CallInst *CreateCall(Value *Callee, ArrayRef<Value *> Args = None,
> - ArrayRef<OperandBundleDef> OpBundles = None,
> const Twine &Name = "", MDNode *FPMathTag =
> nullptr) {
> - CallInst *CI = CallInst::Create(Callee, Args, OpBundles);
> - if (isa<FPMathOperator>(CI))
> - CI = cast<CallInst>(AddFPMathAttributes(CI, FPMathTag, FMF));
> - return Insert(CI, Name);
> - }
> -
> - CallInst *CreateCall(Value *Callee, ArrayRef<Value *> Args,
> - const Twine &Name, MDNode *FPMathTag = nullptr) {
> PointerType *PTy = cast<PointerType>(Callee->getType());
> FunctionType *FTy = cast<FunctionType>(PTy->getElementType());
> return CreateCall(FTy, Callee, Args, Name, FPMathTag);
> @@ -1569,6 +1560,15 @@ public:
> if (isa<FPMathOperator>(CI))
> CI = cast<CallInst>(AddFPMathAttributes(CI, FPMathTag, FMF));
> return Insert(CI, Name);
> + }
> +
> + CallInst *CreateCall(Value *Callee, ArrayRef<Value *> Args,
> + ArrayRef<OperandBundleDef> OpBundles,
> + const Twine &Name = "", MDNode *FPMathTag =
> nullptr) {
> + CallInst *CI = CallInst::Create(Callee, Args, OpBundles);
> + if (isa<FPMathOperator>(CI))
> + CI = cast<CallInst>(AddFPMathAttributes(CI, FPMathTag, FMF));
> + return Insert(CI, Name);
> }
>
> CallInst *CreateCall(Function *Callee, ArrayRef<Value *> Args,
>
> Modified: llvm/trunk/test/Transforms/InstCombine/fprintf-1.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/fprintf-1.ll?rev=261258&r1=261257&r2=261258&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Transforms/InstCombine/fprintf-1.ll (original)
> +++ llvm/trunk/test/Transforms/InstCombine/fprintf-1.ll Thu Feb 18
> 14:57:41 2016
> @@ -61,6 +61,15 @@ define void @test_simplify4(%FILE* %fp)
> ; CHECK-IPRINTF-NEXT: ret void
> }
>
> +define void @test_simplify5(%FILE* %fp) {
> +; CHECK-LABEL: @test_simplify5(
> + %fmt = getelementptr [13 x i8], [13 x i8]* @hello_world, i32 0, i32 0
> + call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* %fmt) [ "deopt"() ]
> +; CHECK-NEXT: call i32 @fwrite(i8* getelementptr inbounds ([13 x i8], [13
> x i8]* @hello_world, i32 0, i32 0), i32 12, i32 1, %FILE* %fp) [ "deopt"() ]
> + ret void
> +; CHECK-NEXT: ret void
> +}
> +
> define void @test_no_simplify1(%FILE* %fp) {
> ; CHECK-IPRINTF-LABEL: @test_no_simplify1(
> %fmt = getelementptr [3 x i8], [3 x i8]* @percent_f, i32 0, i32 0
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160218/573412e5/attachment.html>
More information about the llvm-commits
mailing list