llvm-6502/lib/Transforms/Scalar
Tom Stellard 7c038bc15f StructurizeCFG: Use a reverse post-order traversal
We were previously doing a post-order traversal and operating on the
list in reverse, however this would occasionaly cause backedges for
loops to be visited before some of the other blocks in the loop.

We know use a reverse post-order traversal, which avoids this issue.

The reverse post-order traversal is not completely ideal, so we need
to manually fixup the list to ensure that inner loop backedges are
visited before outer loop backedges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228186 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-04 20:49:44 +00:00
..
ADCE.cpp Update SetVector to rely on the underlying set's insert to return a pair<iterator, bool> 2014-11-19 07:49:26 +00:00
AlignmentFromAssumptions.cpp [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
CMakeLists.txt Add a pass for inserting safepoints into (nearly) arbitrary IR 2015-02-04 00:37:33 +00:00
ConstantHoisting.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
ConstantProp.cpp [PM] Separate the TargetLibraryInfo object from the immutable pass. 2015-01-15 10:41:28 +00:00
CorrelatedValuePropagation.cpp Make use of @llvm.assume from LazyValueInfo 2014-09-07 20:29:59 +00:00
DCE.cpp [PM] Separate the TargetLibraryInfo object from the immutable pass. 2015-01-15 10:41:28 +00:00
DeadStoreElimination.cpp [PM] Move TargetLibraryInfo into the Analysis library. 2015-01-15 02:16:27 +00:00
EarlyCSE.cpp EarlyCSE: Replace custom hash mixing with Hashing.h 2015-02-01 12:30:59 +00:00
FlattenCFGPass.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
GVN.cpp Allow PRE to insert no-cost phi nodes 2015-02-03 20:37:08 +00:00
InductiveRangeCheckElimination.cpp Teach IRCE to look at branch weights when recognizing range checks 2015-01-27 21:38:12 +00:00
IndVarSimplify.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
JumpThreading.cpp [PM] Replace the Pass argument to SplitEdge with specific analyses used 2015-01-19 12:36:53 +00:00
LICM.cpp [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
LLVMBuild.txt Update libdeps since TLI was moved from Target to Analysis in r226078. 2015-01-15 05:21:00 +00:00
LoadCombine.cpp Use AA in LoadCombine 2014-11-03 23:19:16 +00:00
LoopDeletion.cpp [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
LoopIdiomRecognize.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
LoopInstSimplify.cpp [LPM] Stop using the string based preservation API. It is an 2015-01-28 04:57:56 +00:00
LoopRerollPass.cpp [LoopReroll] Alter the data structures used during reroll validation. 2015-01-29 21:52:03 +00:00
LoopRotation.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
LoopStrengthReduce.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
LoopUnrollPass.cpp Resurrect the assertion removed by r227717 2015-02-02 20:41:11 +00:00
LoopUnswitch.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
LowerAtomic.cpp IR: add "cmpxchg weak" variant to support permitted failure. 2014-06-13 14:24:07 +00:00
LowerExpectIntrinsic.cpp [PM] Port LowerExpectIntrinsic to the new pass manager. 2015-01-24 11:13:02 +00:00
Makefile
MemCpyOptimizer.cpp [PM] Separate the TargetLibraryInfo object from the immutable pass. 2015-01-15 10:41:28 +00:00
MergedLoadStoreMotion.cpp [PM] Separate the TargetLibraryInfo object from the immutable pass. 2015-01-15 10:41:28 +00:00
PartiallyInlineLibCalls.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
PlaceSafepoints.cpp Fix a warning in non-asserts builds 2015-02-04 05:11:20 +00:00
Reassociate.cpp Fix Reassociate handling of constant in presence of undef float 2015-01-16 03:00:58 +00:00
Reg2Mem.cpp Standardize {pred,succ,use,user}_empty() 2015-01-13 03:46:47 +00:00
SampleProfile.cpp [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
Scalar.cpp Add a pass for inserting safepoints into (nearly) arbitrary IR 2015-02-04 00:37:33 +00:00
Scalarizer.cpp Revert "IR: MDNode => Value" 2014-11-11 21:30:22 +00:00
ScalarReplAggregates.cpp [PM] Split the AssumptionTracker immutable pass into two separate APIs: 2015-01-04 12:03:27 +00:00
SCCP.cpp [PM] Separate the TargetLibraryInfo object from the immutable pass. 2015-01-15 10:41:28 +00:00
SeparateConstOffsetFromGEP.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
SimplifyCFGPass.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
Sink.cpp [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
SROA.cpp Fix PR22393. When recursively replacing an aggregate with a smaller 2015-02-01 00:58:04 +00:00
StraightLineStrengthReduce.cpp Fixing a -Wsign-compare warning; NFC 2015-02-04 14:01:08 +00:00
StructurizeCFG.cpp StructurizeCFG: Use a reverse post-order traversal 2015-02-04 20:49:44 +00:00
TailRecursionElimination.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00