aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@cygnus.com>1997-11-14 01:39:43 +0000
committerJeff Law <law@gcc.gnu.org>1997-11-13 18:39:43 -0700
commit9571f69bfd3e6524b556fbb608f8ea23f4492f6f (patch)
tree3e94df4849f69f73de4ce8cf8a3dbbfeb6835e73
parente7cbb6b66e279adaa5bba51256264659a474d37f (diff)
downloadgcc-9571f69bfd3e6524b556fbb608f8ea23f4492f6f.zip
gcc-9571f69bfd3e6524b556fbb608f8ea23f4492f6f.tar.gz
gcc-9571f69bfd3e6524b556fbb608f8ea23f4492f6f.tar.bz2
dbxout.c (dbxout_symbol_location): Don't assume that variables whose address is the stack or argument pointers are...
* dbxout.c (dbxout_symbol_location): Don't assume that variables whose address is the stack or argument pointers are indirect pointers. From-SVN: r16475
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dbxout.c7
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e6543f8..a7aa7be 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Thu Nov 13 18:41:02 1997 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <eggert@twinsun.com>
* cccp.c, cpplib.c (compare_defs):
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 9255768..00bbcc8 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