summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/expression_command/macros/main.cpp
diff options
context:
space:
mode:
authorAnna Thomas <anna@azul.com>2017-06-12 21:26:53 +0000
committerAnna Thomas <anna@azul.com>2017-06-12 21:26:53 +0000
commit4b027e8f89a273fdfb275a5eee20a3eea078e4ad (patch)
tree6c001ca4c88e312bef11673110db913e8bc41dda /lldb/packages/Python/lldbsuite/test/expression_command/macros/main.cpp
parent13073a6425e1971dcc3a905bd5e997870ad25cb3 (diff)
downloadbcm5719-llvm-4b027e8f89a273fdfb275a5eee20a3eea078e4ad.tar.gz
bcm5719-llvm-4b027e8f89a273fdfb275a5eee20a3eea078e4ad.zip
[RS4GC] Drop invalid metadata after pointers are relocated
Summary: After RS4GC, we should drop metadata that is no longer valid. These metadata is used by optimizations scheduled after RS4GC, and can cause a miscompile. One such metadata is invariant.load which is used by LICM sinking transform. After rewriting statepoints, the address of a load maybe relocated. With invariant.load metadata on a load instruction, LICM sinking assumes the loaded value (from a dererenceable address) to be invariant, and rematerializes the load operand and the load at the exit block. This transforms the IR to have an unrelocated use of the address after a statepoint, which is incorrect. Other metadata we conservatively remove are related to dereferenceability and noalias metadata. This patch drops such metadata on store and load instructions after rewriting statepoints. Reviewers: reames, sanjoy, apilipenko Reviewed by: reames Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D33756 llvm-svn: 305234
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/expression_command/macros/main.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud