ira: Fix elimination for global hard FPs [PR91957]
authorRichard Sandiford <richard.sandiford@arm.com>
Fri, 18 Sep 2020 15:55:45 +0000 (16:55 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Fri, 18 Sep 2020 15:55:45 +0000 (16:55 +0100)
commit3c7c5f1d4a4b8328fb4c07483cdbfe4ea7762155
tree0f8006892f070e8f42d6c46084958d9cf64b5320
parentf89e9bfac36d45dcf82c462ce51163b0b196cc45
ira: Fix elimination for global hard FPs [PR91957]

If the hard frame pointer is being used as a global register,
we should skip the usual handling for eliminations.  As the
comment says, the register cannot in that case be eliminated
(or eliminated to) and is already marked live where appropriate.

Doing this removes the duplicate error for gcc.target/i386/pr82673.c.
The “cannot be used in 'asm' here” message is meant to be for asm
statements rather than register asms, and the function that the
error is reported against doesn't use asm.

gcc/
2020-09-18  Richard Sandiford  <richard.sandiford@arm.com>

PR middle-end/91957
* ira.c (ira_setup_eliminable_regset): Skip the special elimination
handling of the hard frame pointer if the hard frame pointer is fixed.

gcc/testsuite/
2020-09-18  H.J. Lu  <hjl.tools@gmail.com>
    Richard Sandiford  <richard.sandiford@arm.com>

PR middle-end/91957
* g++.target/i386/pr97054.C: New test.
* gcc.target/i386/pr82673.c: Remove redundant extra message.
gcc/ira.c
gcc/testsuite/g++.target/i386/pr97054.C [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr82673.c