diff options
| author | Duncan Sands <baldrick@free.fr> | 2008-09-29 11:25:42 +0000 | 
|---|---|---|
| committer | Duncan Sands <baldrick@free.fr> | 2008-09-29 11:25:42 +0000 | 
| commit | 08d91178e9ae469e933212f9a5f7ee7cf89a03d5 (patch) | |
| tree | b25ef555131d566a703bbee15fb2820852dda6b7 /llvm/lib/Transforms/Utils | |
| parent | be4fc9b9fb57e6d39e2b3847539ed6c5a492aa93 (diff) | |
| download | bcm5719-llvm-08d91178e9ae469e933212f9a5f7ee7cf89a03d5.tar.gz bcm5719-llvm-08d91178e9ae469e933212f9a5f7ee7cf89a03d5.zip | |
Rename isWeakForLinker to mayBeOverridden.  Use it
instead of hasWeakLinkage in a bunch of optimization
passes.
llvm-svn: 56782
Diffstat (limited to 'llvm/lib/Transforms/Utils')
| -rw-r--r-- | llvm/lib/Transforms/Utils/InlineCost.cpp | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/llvm/lib/Transforms/Utils/InlineCost.cpp b/llvm/lib/Transforms/Utils/InlineCost.cpp index d0b51855d9c..c665b126345 100644 --- a/llvm/lib/Transforms/Utils/InlineCost.cpp +++ b/llvm/lib/Transforms/Utils/InlineCost.cpp @@ -174,17 +174,21 @@ int InlineCostAnalyzer::getInlineCost(CallSite CS,    Instruction *TheCall = CS.getInstruction();    Function *Callee = CS.getCalledFunction();    const Function *Caller = TheCall->getParent()->getParent(); -   +    // Don't inline a directly recursive call.    if (Caller == Callee ||        // Don't inline functions which can be redefined at link-time to mean -      // something else.  link-once linkage is ok though. -      Callee->hasWeakLinkage() || -       +      // something else. +      // FIXME: We allow link-once linkage since in practice all versions of +      // the function have the same body (C++ ODR) - but the LLVM definition +      // of LinkOnceLinkage doesn't require this. +      (Callee->mayBeOverridden() && !Callee->hasLinkOnceLinkage() +       ) || +        // Don't inline functions marked noinline.        NeverInline.count(Callee))      return 2000000000; -   +    // InlineCost - This value measures how good of an inline candidate this call    // site is to inline.  A lower inline cost make is more likely for the call to    // be inlined.  This value may go negative. | 

