[reg scavenger] Fix the isUsed/isAliasUsed functions so as to not report a false
authorChad Rosier <mcrosier@apple.com>
Thu, 15 Nov 2012 18:13:20 +0000 (18:13 +0000)
committerChad Rosier <mcrosier@apple.com>
Thu, 15 Nov 2012 18:13:20 +0000 (18:13 +0000)
commit4823be3be1d87632fbd51ce8e51a58ee5e44b115
treebe9d3e486d6b3d8396897f8e810c51e3639bc1ae
parent009cf9e9a3a386f89db2686a105736481aed10ca
[reg scavenger] Fix the isUsed/isAliasUsed functions so as to not report a false
positive.

In this particular case, R6 was being spilled by the register scavenger when it
was in fact dead.  The isUsed function reported R6 as used because the R6_R7
alias was reserved (due to the fact that we've reserved R7 as the FP).  The
solution is to only check if the original register (i.e., R6) isReserved and
not the aliases.  The aliases are only checked to make sure they're available.

The test case is derived from one of the nightly tester benchmarks and is rather
intractable and difficult to reproduce, so I haven't included it.
rdar://12592448

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168054 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/RegisterScavenging.h
lib/CodeGen/RegisterScavenging.cpp