llvm/test
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
..
Analysis Change CaptureTracking to pass a Use* instead of a Value* when a value is 2011-12-28 23:24:21 +00:00
Archive
Assembler Add an explicit test of the auto-upgrade functionality for the new 2011-12-12 11:23:11 +00:00
Bindings/Ocaml OCaml bindings: add some missing functions and testcases. 2011-10-14 20:38:33 +00:00
Bitcode remove some old autoupgrade logic 2011-11-27 06:10:54 +00:00
BugPoint
CodeGen Testcase for commit 149833 (use of an uninitialized variable noticed 2012-02-05 19:27:57 +00:00
DebugInfo Fix the testcases for the previous patch. 2012-01-24 10:11:49 +00:00
ExecutionEngine Remove "XFAIL: arm" from test/ExecutionEngine/test-return.ll 2012-01-17 18:21:05 +00:00
Feature The powers that be have decided that LLVM IR should now support 16-bit 2011-12-17 00:04:22 +00:00
Instrumentation/AddressSanitizer [asan] enable asan only for the functions that have Attribute::AddressSafety 2012-01-24 19:34:43 +00:00
Integer
lib tests: Rip out a bunch of now unused test code relating to use of llvm-gcc in LLVM tests. 2011-10-27 20:59:26 +00:00
Linker Link symbols with different visibilities according to the rules in the 2012-01-05 23:02:01 +00:00
MC Fixed a crash in llvm-mc for Mach-O when a symbol difference expression uses a 2012-01-31 23:02:57 +00:00
Object Fixed ObjectFile functions: 2011-11-29 17:40:10 +00:00
Other Update test to new EH model. 2012-01-31 02:04:20 +00:00
Scripts
TableGen Add an (interleave A, B, ...) SetTheory operator. 2012-01-24 18:06:05 +00:00
Transforms Teach GlobalOpt to handle atomic accesses to globals. 2012-02-05 19:56:38 +00:00
Unit tests: Rip out a bunch of now unused test code relating to use of llvm-gcc in LLVM tests. 2011-10-27 20:59:26 +00:00
Verifier Teach the verifier to reject all non-constant arguments to the second 2011-12-12 04:36:02 +00:00
CMakeLists.txt CMake: Promote the testing targets out of folders on IDE. 2012-01-30 03:15:47 +00:00
lit.cfg Adding a basic ELF dynamic loader and MC-JIT for ELF. Functionality is currently basic and will be enhanced with future patches. 2012-01-16 08:56:09 +00:00
lit.site.cfg.in tests: Rip out a bunch of now unused test code relating to use of llvm-gcc in LLVM tests. 2011-10-27 20:59:26 +00:00
Makefile build/make/test: Get rid of unused BUGPOINT_TOPTS variable. 2011-11-16 23:56:03 +00:00
Makefile.tests
site.exp.in tests: Rip out a bunch of now unused test code relating to use of llvm-gcc in LLVM tests. 2011-10-27 20:59:26 +00:00
TestRunner.sh