[llvm-commits] [llvm] r147037 - /llvm/trunk/lib/Analysis/InlineCost.cpp

Devang Patel dpatel at apple.com
Wed Dec 21 11:20:13 PST 2011


On Dec 20, 2011, at 10:06 PM, Nick Lewycky wrote:

> Author: nicholas
> Date: Wed Dec 21 00:06:30 2011
> New Revision: 147037
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=147037&view=rev
> Log:
> A call to a function marked 'noinline' is not an inline candidate.


> The sole call site of an intrinsic is also not an inline candidate.

Really ?
-
Devang

> While here, make it
> more obvious that this code ignores all intrinsics. Noticed by inspection!
> 
> Modified:
>    llvm/trunk/lib/Analysis/InlineCost.cpp
> 
> Modified: llvm/trunk/lib/Analysis/InlineCost.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/InlineCost.cpp?rev=147037&r1=147036&r2=147037&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/InlineCost.cpp (original)
> +++ llvm/trunk/lib/Analysis/InlineCost.cpp Wed Dec 21 00:06:30 2011
> @@ -63,8 +63,8 @@
> 
>     // Special handling for calls.
>     if (isa<CallInst>(II) || isa<InvokeInst>(II)) {
> -      if (isa<DbgInfoIntrinsic>(II))
> -        continue;  // Debug intrinsics don't count as size.
> +      if (isa<IntrinsicInst>(II))
> +        continue;  // Intrinsics have no argument setup and can't be inlined.
> 
>       ImmutableCallSite CS(cast<Instruction>(II));
> 
> @@ -72,7 +72,7 @@
>         // If a function is both internal and has a single use, then it is
>         // extremely likely to get inlined in the future (it was probably
>         // exposed by an interleaved devirtualization pass).
> -        if (F->hasInternalLinkage() && F->hasOneUse())
> +        if (!CS.isNoInline() && F->hasInternalLinkage() && F->hasOneUse())
>           ++NumInlineCandidates;
> 
>         // If this call is to function itself, then the function is recursive.
> @@ -83,7 +83,7 @@
>           isRecursive = true;
>       }
> 
> -      if (!isa<IntrinsicInst>(II) && !callIsSmall(CS.getCalledFunction())) {
> +      if (!callIsSmall(CS.getCalledFunction())) {
>         // Each argument to a call takes on average one instruction to set up.
>         NumInsts += CS.arg_size();
> 
> 
> 
> _______________________________________________
> 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