llvm-6502/test
Chandler Carruth 81f4bf79a1 [PM/AA] Disable the core unsafe aspect of GlobalsModRef in the face of
basic changes to the IR such as folding pointers through PHIs, Selects,
integer casts, store/load pairs, or outlining.

This leaves the feature available behind a flag. This flag's default
could be flipped if necessary, but the real-world performance impact of
this particular feature of GMR may not be sufficiently significant for
many folks to want to run the risk.

Currently, the risk here is somewhat mitigated by half-hearted attempts
to update GlobalsModRef when the rest of the optimizer changes
something. However, I am currently trying to remove that update
mechanism as it makes migrating the AA infrastructure to a form that can
be readily shared between new and old pass managers very challenging.
Without this update mechanism, it is possible that this still unlikely
failure mode will start to trip people, and so I wanted to try to
proactively avoid that.

There is a lengthy discussion on the mailing list about why the core
approach here is flawed, and likely would need to look totally different
to be both reasonably effective and resilient to basic IR changes
occuring. This patch is essentially the first of two which will enact
the result of that discussion. The next patch will remove the current
update mechanism.

Thanks to lots of folks that helped look at this from different angles.
Especial thanks to Michael Zolotukhin for doing some very prelimanary
benchmarking of LTO without GlobalsModRef to get a rough idea of the
impact we could be facing here. So far, it looks very small, but there
are some concerns lingering from other benchmarking. The default here
may get flipped if performance results end up pointing at this as a more
significant issue.

Also thanks to Pete and Gerolf for reviewing!

Differential Revision: http://reviews.llvm.org/D11213

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242512 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-17 06:58:24 +00:00
..
Analysis [PM/AA] Disable the core unsafe aspect of GlobalsModRef in the face of 2015-07-17 06:58:24 +00:00
Assembler
Bindings
Bitcode
BugPoint
CodeGen ARM: Enable MachineScheduler and disable PostRAScheduler for swift. 2015-07-17 01:44:31 +00:00
DebugInfo Add a "debugger tuning" concept that allows us to fine-tune how we 2015-07-15 22:04:54 +00:00
ExecutionEngine
Feature
FileCheck
Instrumentation [asan] Fix invalid debug info for promotable allocas 2015-07-17 06:29:57 +00:00
Integer
JitListener
LibDriver
Linker
LTO
MC
Object Trying to fix the windows bots. 2015-07-16 00:38:34 +00:00
Other
SymbolRewriter
TableGen
tools
Transforms [NVPTX] enable SpeculativeExecution in NVPTX 2015-07-16 20:13:48 +00:00
Unit
Verifier
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg
lit.site.cfg.in
Makefile
Makefile.tests
TestRunner.sh