aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@cygnus.com>1998-06-17 13:05:54 +0000
committerAndrew Macleod <amacleod@gcc.gnu.org>1998-06-17 13:05:54 +0000
commit3301dc51911505b0c7e9b60160ddf6666bd31424 (patch)
tree22bc8784a037d4b0cfa19fb8c9ca1a0567bf8d46 /gcc
parent33f264afdaf61ef056db4c94d210c60a50460eca (diff)
downloadgcc-3301dc51911505b0c7e9b60160ddf6666bd31424.zip
gcc-3301dc51911505b0c7e9b60160ddf6666bd31424.tar.gz
gcc-3301dc51911505b0c7e9b60160ddf6666bd31424.tar.bz2
eh-common.h (struct eh_context): Add comment for hidden use of field dynamic_handler_chain.
* eh-common.h (struct eh_context): Add comment for hidden use of field dynamic_handler_chain. * except.c (get_dynamic_handler_chain): Comment on, and use the correct offset of the dynamic_handler_chain field. From-SVN: r20540
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/eh-common.h5
-rw-r--r--gcc/except.c5
3 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a8c08dc..18888da 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+Wed Jun 17 15:57:48 EDT 1998 Andrew MacLeod (amacleod@cygnus.com)
+
+ * eh-common.h (struct eh_context): Add comment for hidden use of
+ field dynamic_handler_chain.
+ * except.c (get_dynamic_handler_chain): Comment on, and use the
+ correct offset of the dynamic_handler_chain field.
+
1998-06-17 12:46:56 1998 Jim Wilson <wilson@cygnus.com>
* mips/iris6.h (LINK_SPEC): Add -woff 131.
diff --git a/gcc/eh-common.h b/gcc/eh-common.h
index 51ecf31..c16d66a 100644
--- a/gcc/eh-common.h
+++ b/gcc/eh-common.h
@@ -20,7 +20,10 @@
/* The handler_label field MUST be the first field in this structure. The
__throw() library routine expects uses __eh_stub() from except.c, which
- simply dereferences the context pointer to get the handler */
+ simply dereferences the context pointer to get the handler.
+ The routine get_dynamic_handler_chain() also has a dependancy on
+ the location of 'dynamic_handler_chain'. If its location is changed,
+ that routine must be modified as well. */
struct eh_context
{
diff --git a/gcc/except.c b/gcc/except.c
index e76f21c..c5c7259 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -1017,7 +1017,10 @@ get_dynamic_handler_chain ()
rtx ehc, dhc, result;
ehc = get_eh_context ();
- dhc = ehc;
+
+ /* This is the offset of dynamic_handler_chain in the eh_context struct
+ declared in eh-common.h. If its location is change, change this offset */
+ dhc = plus_constant (ehc, GET_MODE_SIZE (Pmode));
result = copy_to_reg (dhc);