diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e6543f88d3f..a7aa7bee21f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Thu Nov 13 18:41:02 1997 Michael Meissner + + * dbxout.c (dbxout_symbol_location): Don't assume that variables + whose address is the stack or argument pointers are indirect + pointers. + 1997-11-13 Paul Eggert * cccp.c, cpplib.c (compare_defs): diff --git a/gcc/dbxout.c b/gcc/dbxout.c index 92557685b31..00bbcc840ac 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -1980,7 +1980,12 @@ dbxout_symbol_location (decl, type, suffix, home) else if (GET_CODE (home) == MEM && (GET_CODE (XEXP (home, 0)) == MEM || (GET_CODE (XEXP (home, 0)) == REG - && REGNO (XEXP (home, 0)) != HARD_FRAME_POINTER_REGNUM))) + && REGNO (XEXP (home, 0)) != HARD_FRAME_POINTER_REGNUM + && REGNO (XEXP (home, 0)) != STACK_POINTER_REGNUM +#if ARG_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM + && REGNO (XEXP (home, 0)) != ARG_POINTER_REGNUM +#endif + ))) /* If the value is indirect by memory or by a register that isn't the frame pointer then it means the object is variable-sized and address through