[PowerPC] Don't use a non-allocatable register to implement the 'cc' alias
authorHal Finkel <hfinkel@anl.gov>
Mon, 8 Dec 2014 22:54:22 +0000 (22:54 +0000)
committerHal Finkel <hfinkel@anl.gov>
Mon, 8 Dec 2014 22:54:22 +0000 (22:54 +0000)
commitb849e04d2ba3fc0bb8126323766e2eef8c10a2f0
treef48be5e15457b1f1cb08b0b78218c5890c1506ce
parent7ec769c97181dd5d86b61b0d6a559d1c79b7dc88
[PowerPC] Don't use a non-allocatable register to implement the 'cc' alias

GCC accepts 'cc' as an alias for 'cr0', and we need to do the same when
processing inline asm constraints. This had previously been implemented using a
non-allocatable register, named 'cc', that was listed as an alias of 'cr0', but
the infrastructure does not seem to support this properly (neither the register
allocator nor the scheduler properly accounts for the alias). Instead, we can
just process this as a naming alias inside of the inline asm
constraint-processing code, so we'll do that instead.

There are two regression tests, one where the post-RA scheduler did the wrong
thing with the non-allocatable alias, and one where the register allocator did
the wrong thing. Fixes PR21742.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223708 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/PPCISelLowering.cpp
lib/Target/PowerPC/PPCRegisterInfo.td
test/CodeGen/PowerPC/subreg-postra-2.ll [new file with mode: 0644]
test/CodeGen/PowerPC/subreg-postra.ll [new file with mode: 0644]