1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 12:33:33 +02:00
llvm-mirror/test/Transforms/GlobalOpt
Nick Lewycky bad48a142a 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.

llvm-svn: 149847
2012-02-05 19:56:38 +00:00
..
2004-10-10-CastStoreOnce.ll
2005-06-15-LocalizeConstExprCrash.ll
2005-09-27-Crash.ll Land the long talked about "type system rewrite" patch. This 2011-07-09 17:41:24 +00:00
2006-07-07-InlineAsmCrash.ll
2006-11-01-ShrinkGlobalPhiCrash.ll
2007-04-05-Crash.ll manually upgrade a bunch of tests to modern syntax, and remove some that 2011-06-17 03:14:27 +00:00
2007-05-13-Crash.ll
2007-06-04-PackedStruct.ll
2007-11-09-GEP-GEP-Crash.ll
2008-01-03-Crash.ll
2008-01-13-OutOfRangeSROA.ll
2008-01-29-VolatileGlobal.ll 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
2008-04-26-SROA-Global-Align.ll Add unnamed_addr when we can show that address of a global is not used. 2011-01-19 16:32:21 +00:00
2008-07-17-addrspace.ll
2008-12-16-HeapSRACrash-2.ll manually upgrade a bunch of tests to modern syntax, and remove some that 2011-06-17 03:14:27 +00:00
2008-12-16-HeapSRACrash.ll manually upgrade a bunch of tests to modern syntax, and remove some that 2011-06-17 03:14:27 +00:00
2009-01-13-phi-user.ll
2009-02-15-BitcastAlias.ll
2009-02-15-ResolveAlias.ll
2009-03-05-dbg.ll
2009-03-06-Anonymous.ll
2009-03-07-PromotePtrToBool.ll Add unnamed_addr when we can show that address of a global is not used. 2011-01-19 16:32:21 +00:00
2009-06-01-RecursivePHI.ll
2009-11-16-BrokenPerformHeapAllocSRoA.ll
2009-11-16-MallocSingleStoreToGlobalVar.ll Add unnamed_addr when we can show that address of a global is not used. 2011-01-19 16:32:21 +00:00
2010-02-25-MallocPromote.ll
2010-02-26-MallocSROA.ll
2010-10-19-WeakOdr.ll
2011-04-09-EmptyGlobalCtors.ll Add back a couple checks removed by r129128; the fact that an intitializer 2011-04-09 09:11:09 +00:00
alias-resolve.ll
atomic.ll Teach GlobalOpt to handle atomic accesses to globals. 2012-02-05 19:56:38 +00:00
basictest.ll
constantexpr-dangle.ll
constantfold-initializers.ll
crash.ll fix PR9856, an incorrectly conservative assertion: a global can be 2011-05-22 07:15:13 +00:00
ctor-list-opt-constexpr.ll PR11705, part 2: globalopt shouldn't put inttoptr/ptrtoint operations into global initializers if there's an implied extension or truncation. 2012-01-05 23:03:32 +00:00
ctor-list-opt-inbounds.ll
ctor-list-opt.ll Reduce and merge testcases. 2011-01-16 09:13:31 +00:00
cxx-dtor.ll Add an optimization to GlobalOpt that eliminates calls to __cxa_atexit, if the function passed is empty. 2011-03-20 17:59:11 +00:00
deadfunction.ll Refactor code from inlining and globalopt that checks whether a function definition is unused, and enhance it so it can tell that functions which are only used by a blockaddress are in fact dead. This probably doesn't happen much on most code, but the Linux kernel's _THIS_IP_ can trigger this issue with blockaddress. (GlobalDCE can also handle the given tescase, but we only run that at -O3.) Found while looking at PR11180. 2011-10-20 05:23:42 +00:00
deadglobal-2.ll
deadglobal.ll
dg.exp
globalsra-partial.ll
globalsra-unknown-index.ll Add unnamed_addr when we can show that address of a global is not used. 2011-01-19 16:32:21 +00:00
globalsra.ll
heap-sra-1.ll
heap-sra-2.ll
heap-sra-3.ll
heap-sra-4.ll
heap-sra-phi.ll
integer-bool.ll
iterate.ll
load-store-global.ll
malloc-promote-1.ll
malloc-promote-2.ll
memcpy.ll rip out a ton of intrinsic modernization logic from AutoUpgrade.cpp, which is 2011-06-18 06:05:24 +00:00
memset-null.ll Add testcase for r132290, to check for the crasher caught by the buildbots 2011-05-29 19:41:14 +00:00
memset.ll rip out a ton of intrinsic modernization logic from AutoUpgrade.cpp, which is 2011-06-18 06:05:24 +00:00
metadata.ll
phi-select.ll
storepointer-compare.ll
storepointer.ll
trivialstore.ll
undef-init.ll
unnamed-addr.ll Add unnamed_addr when we can show that address of a global is not used. 2011-01-19 16:32:21 +00:00