llvm-6502/test/Transforms
Nick Lewycky fad4d40f37 Teach GlobalOpt to handle atomic accesses to globals.
* Most of the transforms come through intact by having each transformed load or
store copy the ordering and synchronization scope of the original.
 * The transform that turns a global only accessed in main() into an alloca
(since main is non-recursive) with a store of the initial value uses an
unordered store, since it's guaranteed to be the first thing to happen in main.
(Threads may have started before main (!) but they can't have the address of a
function local before the point in the entry block we insert our code.)
 * The heap-SRoA transforms are disabled in the face of atomic operations. This
can probably be improved; it seems odd to have atomic accesses to an alloca
that doesn't have its address taken.

AnalyzeGlobal keeps track of the strongest ordering found in any use of the
global. This is more information than we need right now, but it's cheap to
compute and likely to be useful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149847 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-05 19:56:38 +00:00
..
ADCE
ArgumentPromotion
BBVectorize Boost the effective chain depth of loads and stores. 2012-02-04 04:14:04 +00:00
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantMerge If the global variable is removed by the linker, then don't constant merge it 2012-01-11 00:13:08 +00:00
ConstProp Add r149110 back with a fix for when the vector and the int have the same 2012-01-27 23:33:07 +00:00
CorrelatedValuePropagation
DeadArgElim Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
DeadStoreElimination Fix infinite loop in DSE when deleting a free in a reachable loop that's also 2011-12-08 22:36:35 +00:00
EarlyCSE Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
FunctionAttrs Change CaptureTracking to pass a Use* instead of a Value* when a value is 2011-12-28 23:24:21 +00:00
GlobalDCE remove a test that is using old-style llvm.dbg intrinsics, apparently only 2011-11-27 18:13:47 +00:00
GlobalOpt Teach GlobalOpt to handle atomic accesses to globals. 2012-02-05 19:56:38 +00:00
GVN Reduce the number of dom queries made by GVN's conditional propagation 2012-02-05 18:25:50 +00:00
IndVarSimplify Extended replaceCongruentPhis to handle mixed phi types. 2012-01-07 01:12:09 +00:00
Inline Remove all references to the old EH. 2012-01-31 02:09:07 +00:00
InstCombine Revert "Disable InstCombine unsafe folding bitcasts of calls w/ varargs." 2012-02-03 00:00:50 +00:00
InstSimplify Add support for vectors of pointers. 2011-12-05 06:29:09 +00:00
Internalize
IPConstantProp Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
JumpThreading Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
LCSSA
LICM Move Instruction::isSafeToSpeculativelyExecute out of VMCore and 2011-12-14 23:49:11 +00:00
LoopDeletion
LoopIdiom
LoopRotate
LoopSimplify Make loop preheader insertion in LoopSimplify handle the case where the loop header is a landing pad correctly (by splitting the landingpad out of the loop header). Make some adjustments to the rest of LoopSimplify to make it clear that the rest of LoopSimplify isn't making bad assumptions about the presence of landing pads. PR11575. 2011-12-15 00:50:34 +00:00
LoopStrengthReduce Handle a corner case with IV chain collection with bailout instead of assert. 2012-01-20 21:23:40 +00:00
LoopUnroll Add -unroll-runtime for unrolling loops with run-time trip counts. 2011-12-09 06:19:40 +00:00
LoopUnswitch Improved compile time: 2012-01-11 08:40:51 +00:00
LowerAtomic
LowerExpectIntrinsic
LowerInvoke
LowerSwitch
Mem2Reg Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
MemCpyOpt Probably not a good idea to convert a single vector load into a memcpy. We 2011-12-06 00:19:08 +00:00
MergeFunc Convert to the new EH model. 2011-11-08 00:23:01 +00:00
ObjCARC Set the "tail" flag on pattern-matched objc_storeStrong calls. 2012-01-19 19:14:36 +00:00
PhaseOrdering
PruneEH
Reassociate
ScalarRepl Fix SSAUpdaterImpl's RecordMatchingPHI to record exactly the 2012-02-03 01:07:01 +00:00
SCCP Remove all references to the old EH. 2012-01-31 02:09:07 +00:00
SimplifyCFG Make Value::isDereferenceablePointer() handle unreachable code blocks. (This 2012-01-23 00:05:17 +00:00
SimplifyLibCalls Turn cos(-x) into cos(x). Patch by Alexander Malyshev! 2011-12-27 18:25:50 +00:00
Sink Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
StripSymbols
TailCallElim Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
TailDup