[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