author | Matthias Braun <matze@braunis.de> | |
Fri, 11 Oct 2013 19:04:37 +0000 (19:04 +0000) | ||
committer | Matthias Braun <matze@braunis.de> | |
Fri, 11 Oct 2013 19:04:37 +0000 (19:04 +0000) | ||
commit | 85733840109907e1e0f8ffc03dcd2f5fd8e49d47 | |
tree | 87423d3c855a7ec6916d40f810aae340687f51a5 | tree | snapshot (tar.xz tar.gz zip) |
parent | da74817c50873d0691a3e4d3f392235584ead551 | commit | diff |
Remove kill flags after if conversion if necessary
When if converting something like:
true:
... = R0<kill>
false:
... = R0<kill>
then the instructions of the true block must not have a <kill> flag
anymore, as the instruction of the false block follow and do still read
the R0 value.
Specifically this patch determines the set of register live-in in the
false block (possibly after simulating the liveness changes of the
duplicated instructions). Each of these live-in registers mustn't be
killed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192482 91177308-0d34-0410-b5e6-96231b3b80d8
When if converting something like:
true:
... = R0<kill>
false:
... = R0<kill>
then the instructions of the true block must not have a <kill> flag
anymore, as the instruction of the false block follow and do still read
the R0 value.
Specifically this patch determines the set of register live-in in the
false block (possibly after simulating the liveness changes of the
duplicated instructions). Each of these live-in registers mustn't be
killed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192482 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/IfConversion.cpp | diff | blob | history | |
test/CodeGen/ARM/ifconv-kills.ll | [new file with mode: 0644] | blob |