1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-31 16:02:52 +01:00
llvm-mirror/test/Transforms/Inline
Chandler Carruth f3295eafa5 Fix a stunning oversight in the inline cost analysis. It was never
propagating one of the values it simplified to a constant across
a myriad of instructions. Notably, ptrtoint instructions when we had
a constant pointer (say, 0) didn't propagate that, blocking a massive
number of down-stream optimizations.

This was uncovered when investigating why we fail to inline and delete
the boilerplate in:

  void f() {
    std::vector<int> v;
    v.push_back(1);
  }

It turns out most of the efforts I've made thus far to improve the
analysis weren't making it far purely because of this. After this is
fixed, the store-to-load forwarding patch enables LLVM to optimize the
above to an empty function. We still can't nuke a second push_back, but
for different reasons.

There is a very real chance this will cause somewhat noticable changes
in inlining behavior, so please let me know if you see regressions (or
improvements!) because of this patch.

llvm-svn: 171196
2012-12-28 14:43:42 +00:00
..
2003-09-14-InlineValue.ll
2003-09-22-PHINodeInlineFail.ll
2003-09-22-PHINodesInExceptionDest.ll
2003-09-22-PHINodesInNormalInvokeDest.ll
2003-10-13-AllocaDominanceProblem.ll
2004-04-15-InlineDeletesCall.ll
2004-04-20-InlineLinkOnce.ll
2004-10-17-InlineFunctionWithoutReturn.ll
2006-01-14-CallGraphUpdate.ll
2006-07-12-InlinePruneCGUpdate.ll
2006-11-09-InlineCGUpdate-2.ll
2006-11-09-InlineCGUpdate.ll
2007-04-15-InlineEH.ll
2007-06-25-WeakInline.ll
2007-12-19-InlineNoUnwind.ll
2008-09-02-NoInline.ll
2009-01-08-NoInlineDynamicAlloca.ll
2009-01-13-RecursiveInlineCrash.ll
2009-05-07-CallUsingSelfCrash.ll
2010-05-12-ValueMap.ll
2010-05-31-ByvalTailcall.ll
alloca_test.ll
alloca-bonus.ll
alloca-in-scc.ll
always-inline.ll
array_merge.ll
basictest.ll Add a new attribute, 'noduplicate'. If a function contains a noduplicate call, the call cannot be duplicated - Jump threading, loop unrolling, loop unswitching, and loop rotation are inhibited if they would duplicate the call. 2012-12-20 16:04:27 +00:00
blockaddress.ll
byval.ll
callgraph-update.ll
casts.ll
cfg_preserve_test.ll
crash2.ll
crash.ll
delete-call.ll
devirtualize-2.ll
devirtualize-3.ll
devirtualize.ll
dynamic_alloca_test.ll
externally_available.ll
gvn-inline-iteration.ll
inline_cleanup.ll
inline_constprop.ll Fix a stunning oversight in the inline cost analysis. It was never 2012-12-28 14:43:42 +00:00
inline_dce.ll
inline_invoke.ll
inline_minisize.ll Take into account minimize size attribute in the inliner. 2012-12-13 01:05:25 +00:00
inline_prune.ll
inline_returns_twice.ll
inline-byval-bonus.ll
inline-invoke-tail.ll
inline-optsize.ll
inline-tail.ll
invoke_test-1.ll
invoke_test-2.ll
invoke_test-3.ll
lifetime-no-datalayout.ll
lifetime.ll
lit.local.cfg
nested-inline.ll
noinline-recursive-fn.ll
noinline.ll
PR4909.ll
ptr-diff.ll
recursive.ll