diff options
author | Anna Thomas <anna@azul.com> | 2017-06-12 21:26:53 +0000 |
---|---|---|
committer | Anna Thomas <anna@azul.com> | 2017-06-12 21:26:53 +0000 |
commit | 4b027e8f89a273fdfb275a5eee20a3eea078e4ad (patch) | |
tree | 6c001ca4c88e312bef11673110db913e8bc41dda /lldb/packages/Python/lldbsuite/test/expression_command/macros/main.cpp | |
parent | 13073a6425e1971dcc3a905bd5e997870ad25cb3 (diff) | |
download | bcm5719-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