mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-30 15:45:26 +00:00
fc1ee5b5d6
aggressively. There are lots of dire warnings about this being expensive that seem to predate switching to the TrackingVH-based value remapper that is automatically updated on RAUW. This makes it easy to not just prune single-entry PHIs, but to fully simplify PHIs, and to recursively simplify the newly inlined code to propagate PHINode simplifications. This introduces a bit of a thorny problem though. We may end up simplifying a branch condition to a constant when we fold PHINodes, and we would like to nuke any dead blocks resulting from this so that time isn't wasted continually analyzing them, but this isn't easy. Deleting basic blocks *after* they are fully cloned and mapped into the new function currently requires manually updating the value map. The last piece of the simplification-during-inlining puzzle will require either switching to WeakVH mappings or some other piece of refactoring. I've left a FIXME in the testcase about this. llvm-svn: 153410 |
||
---|---|---|
.. | ||
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-AlwaysInline.ll | ||
2008-09-02-NoInline.ll | ||
2008-10-30-AlwaysInline.ll | ||
2008-11-04-AlwaysInline.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_dyn_alloca.ll | ||
array_merge.ll | ||
basictest.ll | ||
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 | ||
inline_dce.ll | ||
inline_invoke.ll | ||
inline_prune.ll | ||
inline_returns_twice.ll | ||
inline-invoke-tail.ll | ||
inline-tail.ll | ||
invoke_test-1.ll | ||
invoke_test-2.ll | ||
invoke_test-3.ll | ||
lifetime.ll | ||
lit.local.cfg | ||
nested-inline.ll | ||
noinline-recursive-fn.ll | ||
noinline.ll | ||
PR4909.ll | ||
ptr-diff.ll |