Teach ARMLoadStoreOptimizer to remove kill flags from merged instructions as well.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 15 Feb 2011 19:51:58 +0000 (19:51 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 15 Feb 2011 19:51:58 +0000 (19:51 +0000)
commit79bb6dd363fd0a23040910b32d69a282063521bd
tree3cfdf3de1bb60807889b15a92021a015b1afc199
parentd3526eab46b96509d3195cf3367811af67b6d2c7
Teach ARMLoadStoreOptimizer to remove kill flags from merged instructions as well.

This is necessary to avoid a crash in certain tangled situations where a kill
flag is first correctly moved to a merged instruction, and then needs to be
moved again:

  STR %R0, a...
  STR %R0<kill>, b...

First becomes:

  STR %R0, b...
  STM a, %R0<kill>, ...

and then:

  STM a, %R0, ...
  STM b, %R0<kill>, ...

We can now remove the kill flag from the merged STM when needed. 8960050.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125591 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMLoadStoreOptimizer.cpp