[llvm] r175470 - Check to see if the 'no-builtin' attribute is set before simplifying a library call.
Chris Lattner
clattner at apple.com
Mon Feb 18 16:48:32 PST 2013
On Feb 18, 2013, at 3:17 PM, Bill Wendling <isanbard at gmail.com> wrote:
> Author: void
> Date: Mon Feb 18 17:17:16 2013
> New Revision: 175470
>
> URL: http://llvm.org/viewvc/llvm-project?rev=175470&view=rev
> Log:
> Check to see if the 'no-builtin' attribute is set before simplifying a library call.
Hi Bill,
I'm concerned with this approach, lets talk over the design on llvmdev first. Sorry for the delay responding.
-Chris
>
> Added:
> llvm/trunk/test/Transforms/InstCombine/no-builtin.ll
> Modified:
> llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp
>
> Modified: llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp?rev=175470&r1=175469&r2=175470&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp Mon Feb 18 17:17:16 2013
> @@ -1889,6 +1889,9 @@ LibCallSimplifier::~LibCallSimplifier()
> }
>
> Value *LibCallSimplifier::optimizeCall(CallInst *CI) {
> + Function *F = CI->getParent()->getParent();
> + // We don't want to "optimize" if the function doesn't want builtins.
> + if (F->hasFnAttribute("no-builtin")) return 0;
> return Impl->optimizeCall(CI);
> }
>
>
> Added: llvm/trunk/test/Transforms/InstCombine/no-builtin.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/no-builtin.ll?rev=175470&view=auto
> ==============================================================================
> --- llvm/trunk/test/Transforms/InstCombine/no-builtin.ll (added)
> +++ llvm/trunk/test/Transforms/InstCombine/no-builtin.ll Mon Feb 18 17:17:16 2013
> @@ -0,0 +1,23 @@
> +; RUN: opt < %s -instcombine -S | FileCheck %s
> + at .str = private unnamed_addr constant [14 x i8] c"hello world!\0A\00", align 1
> +
> +; CHECK: @foo
> +; CHECK: printf
> +define void @foo() nounwind ssp uwtable "no-builtin" {
> +entry:
> + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([14 x i8]* @.str, i32 0, i32 0))
> + ret void
> +}
> +
> +; CHECK: @bar
> +; CHECK: puts
> +define void @bar() nounwind ssp uwtable {
> +entry:
> + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([14 x i8]* @.str, i32 0, i32 0))
> + ret void
> +}
> +
> +declare i32 @printf(i8*, ...)
> +
> +attributes #0 = { nounwind ssp uwtable "no-builtin" }
> +attributes #1 = { nounwind ssp uwtable }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list