rs6000: Make debug regnums independent of internal ones
authorSegher Boessenkool <segher@kernel.crashing.org>
Thu, 2 May 2019 18:46:38 +0000 (20:46 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Thu, 2 May 2019 18:46:38 +0000 (20:46 +0200)
commitfc9613c640c28ca85ea988f6890d13cb4d912e11
tree49d967cb2a1fa94ac724f2836d4bf90d39130ba1
parentf58bd252753e1c2458dc009a71726fca772643a8
rs6000: Make debug regnums independent of internal ones

Where we use "internal GCC register numbers" in debug info, that
defines an ABI, so we cannot change those numbers.  But we want to
change the internal numbers, and sometimes we do that without
remembering this gotcha anyway; so let's make everything independent
of the internal numbers.

For those registers that are not recognised here (we still have MQ for
example, but also the GCC-internal frame pointer and arg pointer
registers), this just returns the internal register number.  This is a
bit worrying: that number could be the same as that for a register we
validly want to have in debug info.  I first had a gcc_unreachable ()
for that, but this does now work because dwarf2cfi calls
rs6000_dbx_register_number for every internal register.  Then I just
returned 0 for the internal regs, but that causes various regression
tests to fail.  So now I return the internal register number again,
as it was before; but this needs to be fixed.

* config/rs6000/rs6000.c (rs6000_dbx_register_number): Do not use
the internal register number, for any "real" register.

From-SVN: r270820
gcc/ChangeLog
gcc/config/rs6000/rs6000.c