diff options
| author | Matthias Braun <matze@braunis.de> | 2016-02-26 03:18:50 +0000 |
|---|---|---|
| committer | Matthias Braun <matze@braunis.de> | 2016-02-26 03:18:50 +0000 |
| commit | e39ff706851efee34063cf99fdde509ee5d95fd3 (patch) | |
| tree | 392c7588eebf421b67eb89851188c19368617b49 /lldb/source/Interpreter/OptionValueArray.cpp | |
| parent | e3fda8a19da30aec8687e66d3700a55e7acba847 (diff) | |
| download | bcm5719-llvm-e39ff706851efee34063cf99fdde509ee5d95fd3.tar.gz bcm5719-llvm-e39ff706851efee34063cf99fdde509ee5d95fd3.zip | |
MachineCopyPropagation: Keep scanning through instructions with regmasks
This also simplifies the code by removing the overly conservative
NoInterveningSideEffect() function. This function checked:
- That the two copies belong to the same block: We only process one
block at a time and clear our maps in between it is impossible to find a
copy from a different block.
- There is no terminator between the two copy instructions: This is not
allowed anyway (the MachineVerifier would complain)
- Does not have instructions with hasUnmodeledSideEffects() or isCall()
set: Even for those instructuction we must have all clobbers/defs of
registers explicit as an operand. If the register is explicitely
clobbered we would never come to the point of checking for
NoInterveningSideEffect() anyway.
(I also checked this with a temporary build of the test-suite with all
potentially failing conditions in NoInterveningSideEffect() turned into
asserts)
Differential Revision: http://reviews.llvm.org/D17474
llvm-svn: 261965
Diffstat (limited to 'lldb/source/Interpreter/OptionValueArray.cpp')
0 files changed, 0 insertions, 0 deletions

