llvm-6502/lib
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 Persuade GCC that there is nothing worth warning about here (there isn't). 2012-02-05 14:20:11 +00:00
Archive Avoid using an invalidated iterator. 2012-01-23 05:07:16 +00:00
AsmParser reapply the patches reverted in r149470 that reenable ConstantDataArray, 2012-02-05 02:29:43 +00:00
Bitcode Improve the bitcode reader's handling of constant strings to use 2012-02-05 02:41:35 +00:00
CodeGen Persuade GCC that there is nothing worth warning about here (there isn't). 2012-02-05 14:20:11 +00:00
DebugInfo More dead code removal (using -Wunreachable-code) 2012-01-20 21:51:11 +00:00
ExecutionEngine Explain to the compiler why TargetAddr is not used uninitialized later. 2012-02-05 14:14:35 +00:00
Linker use Constant::getAggregateElement to simplify a bunch of code. 2012-01-25 06:48:06 +00:00
MC Modified the Enhanced Disassembler to create and 2012-02-04 07:45:35 +00:00
Object Object: avoid undefined behavior when bounds-checking 2012-02-04 02:41:39 +00:00
Support Persuade GCC that there is nothing worth warning about here (there isn't). 2012-02-05 14:20:11 +00:00
TableGen Implement String Cast from Integer 2012-01-30 20:47:04 +00:00
Target DefinesPredicate should only look for def operands. Patch by Ludwig Meier. 2012-02-05 19:55:04 +00:00
Transforms Teach GlobalOpt to handle atomic accesses to globals. 2012-02-05 19:56:38 +00:00
VMCore reapply the patches reverted in r149470 that reenable ConstantDataArray, 2012-02-05 02:29:43 +00:00
CMakeLists.txt Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile Remove more of llvmc and dependencies. 2011-09-20 00:34:27 +00:00