llvm-6502/lib/Transforms/Utils
Eli Friedman 12bb766ae9 Fix for PR3016: detect the tricky case, where there are
unfoldable references to a PHI node in the block being folded, and disable
the transformation in that case.  The correct transformation of such PHI
nodes depends on whether BB dominates Succ, and dominance is expensive 
to compute here.  (Alternatively, it's possible to check whether any 
uses are live, but that's also essentially a dominance calculation. 
Another alternative is to use reg2mem, but it probably isn't a good idea to
use that in simplifycfg.)

Also, remove some incorrect code from CanPropagatePredecessorsForPHIs 
which is made unnecessary with this patch: it didn't consider the case 
where a PHI node in BB has multiple uses.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79174 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 04:23:49 +00:00
..
AddrModeMatcher.cpp Remove a bunch more now-unnecessary Context arguments. 2009-08-12 16:23:25 +00:00
BasicBlockUtils.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
BasicInliner.cpp available_externall linkage is not local, this was confusing the codegenerator, 2009-05-23 14:06:57 +00:00
BreakCriticalEdges.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
CloneFunction.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
CloneLoop.cpp Simplify code by using SmallVector's pop_back_val() instead of 2009-05-06 17:22:41 +00:00
CloneModule.cpp Get rid of the Pass+Context magic. 2009-07-22 00:24:57 +00:00
CloneTrace.cpp
CMakeLists.txt Update CMake files. 2009-07-21 17:43:20 +00:00
CodeExtractor.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
DemoteRegToStack.cpp Revert yesterday's change by removing the LLVMContext parameter to AllocaInst and MallocInst. 2009-07-15 23:53:25 +00:00
InlineCost.cpp Remove Value::{isName, getNameRef}. 2009-07-25 23:55:21 +00:00
InlineFunction.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
InstructionNamer.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
LCSSA.cpp Move more code back to 2.5 APIs. 2009-07-30 23:03:37 +00:00
Local.cpp Move more code back to 2.5 APIs. 2009-07-30 23:03:37 +00:00
LoopSimplify.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
LowerAllocations.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
LowerInvoke.cpp Actually privatize a IntegerTypes, and fix a few bugs exposed by this. 2009-08-13 23:27:32 +00:00
LowerSwitch.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
Makefile Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Mem2Reg.cpp Get rid of the Pass+Context magic. 2009-07-22 00:24:57 +00:00
PromoteMemoryToRegister.cpp Fix a bunch of namespace pollution. 2009-08-07 01:32:21 +00:00
SimplifyCFG.cpp Fix for PR3016: detect the tricky case, where there are 2009-08-16 04:23:49 +00:00
SSI.cpp SSI construction should just go ahead and ignore instructions in unreachable 2009-08-15 20:12:18 +00:00
UnifyFunctionExitNodes.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
UnrollLoop.cpp More migration to raw_ostream, the water has dried up around the iostream hole. 2009-07-25 00:23:56 +00:00
ValueMapper.cpp Rename MDNode.h header. It defines MDnode and other metadata classes. 2009-07-28 21:49:47 +00:00