llvm/lib
Chandler Carruth f8c8a9cbb4 Teach the function cloner (and thus the inliner) to simplify PHINodes
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153410 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-25 10:34:54 +00:00
..
Analysis Try to harden the recursive simplification still further. This is again 2012-03-24 22:34:26 +00:00
Archive Include cstdio in a few place that depended on getting it transitively through StringExtras.h 2012-03-23 11:35:30 +00:00
AsmParser Convert assert(0) to llvm_unreachable 2012-02-07 05:05:23 +00:00
Bitcode llvm::SwitchInst 2012-03-11 06:09:17 +00:00
CodeGen Add the ability to promote legal integer VAARGs. This is required for the PPC64 SVR4 ABI. 2012-03-24 03:53:52 +00:00
DebugInfo More dead code removal (using -Wunreachable-code) 2012-01-20 21:51:11 +00:00
ExecutionEngine Make it feasible for clients using EngineBuilder to capture the TargetMachine that is created as part of selecting the appropriate target. 2012-03-23 17:40:56 +00:00
Linker It's possible for two types, which are isomorphic, to be added to the 2012-03-23 23:17:38 +00:00
MC Add a hook in MCELFObjectTargetWriter to allow targets to sort relocation 2012-03-23 23:06:45 +00:00
Object [Object/COFF]: Expose getSectionContents. 2012-03-19 20:27:37 +00:00
Support Fix null to integer conversion warnings. 2012-03-24 22:17:50 +00:00
TableGen Fix infinite loop in nested multiclasses. 2012-03-07 16:39:35 +00:00
Target Fix small-integer VAARG on SVR4 ABI PPC64. 2012-03-24 03:53:55 +00:00
Transforms Teach the function cloner (and thus the inliner) to simplify PHINodes 2012-03-25 10:34:54 +00:00
VMCore Remove always true variable. 2012-03-24 20:02:25 +00:00
CMakeLists.txt Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile Remove more of llvmc and dependencies. 2011-09-20 00:34:27 +00:00