diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 06a0e9668a9..b2eb17f34aa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-08-03 Richard Henderson + + * dbxout.c (dbxout_symbol_location): Flatten subregs first; + don't take REGNO of a non-register. + 2001-08-03 John David Anglin * gthr-dce.h (__GTHREAD_MUTEX_INIT_FUNCTION and diff --git a/gcc/dbxout.c b/gcc/dbxout.c index 0d330c22653..4eea7ca82c0 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -2096,13 +2096,7 @@ dbxout_symbol_location (decl, type, suffix, home) If the decl was from an inline function, then its rtl is not identically the rtl that was used in this particular compilation. */ - if (GET_CODE (home) == REG) - { - regno = REGNO (home); - if (regno >= FIRST_PSEUDO_REGISTER) - return 0; - } - else if (GET_CODE (home) == SUBREG) + if (GET_CODE (home) == SUBREG) { rtx value = home; @@ -2113,7 +2107,13 @@ dbxout_symbol_location (decl, type, suffix, home) if (REGNO (value) >= FIRST_PSEUDO_REGISTER) return 0; } - regno = REGNO (alter_subreg (home)); + home = alter_subreg (home); + } + if (GET_CODE (home) == REG) + { + regno = REGNO (home); + if (regno >= FIRST_PSEUDO_REGISTER) + return 0; } /* The kind-of-variable letter depends on where