OSDN Git Service

[SystemZ] Make the CCRegs regclass non-allocatable.
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>
Thu, 29 Oct 2015 16:13:55 +0000 (16:13 +0000)
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>
Thu, 29 Oct 2015 16:13:55 +0000 (16:13 +0000)
commitea81d62d3775ccd81c3957c26ae9ff20f9601cbc
tree52e1cbb019ebfa112bc9b4c863400a0dedd34d6e
parent40e7b16d547cc006096814d22a37cf9bb43fcf1f
[SystemZ] Make the CCRegs regclass non-allocatable.

This was discovered to be necessary while running memchr-01.ll with
-verify-machinstrs, because it is not allowed to have a phys reg live
accross block boundaries while on SSA form, if the register is
allocatable (expect in entry block and landing pads).

In this test case, stringRRE pseudos are expanded after isel by adding
a loop block which produces a live out CC register. To make the test
pass, it was also necessary to not say that StringRRELoop pseudo uses
R0L, this is only true for the StringRRE opcode.

-verify-machineinstrs added to memchr-01.ll test.

New test case int-cmp-51.ll to test that MachineCSE can eliminate
an identical compare (which it couldn't do before).

Reviewed by Ulrich Weigand

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251634 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/SystemZ/SystemZInstrFormats.td
lib/Target/SystemZ/SystemZInstrInfo.td
lib/Target/SystemZ/SystemZRegisterInfo.td
test/CodeGen/SystemZ/int-cmp-51.ll [new file with mode: 0644]
test/CodeGen/SystemZ/memchr-01.ll