diff options
author | Joseph Myers <joseph@codesourcery.com> | 2005-02-18 21:23:16 +0000 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2005-02-18 21:23:16 +0000 |
commit | 5b4275dbe96d3d6e5da8189adda0501e76e72a8b (patch) | |
tree | 4dab641272e45b4b07a089df63ed84926aeef2cf /gcc | |
parent | d6083c7d69ace6293905f43dc3f182b1e5a9c7fc (diff) | |
download | gcc-5b4275dbe96d3d6e5da8189adda0501e76e72a8b.zip gcc-5b4275dbe96d3d6e5da8189adda0501e76e72a8b.tar.gz gcc-5b4275dbe96d3d6e5da8189adda0501e76e72a8b.tar.bz2 |
re PR target/19886 (g++.dg/eh/registers1.C execution test fails)
PR target/19886
* config/ia64/ia64.h (struct machine_function): Add state_num.
* config/ia64/ia64.c (process_epilogue,
process_for_unwind_directive): Use new unwind state numbers each
time rather than state 1.
From-SVN: r95234
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 6 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.h | 3 |
3 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8271af2..317bcb0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2005-02-18 Joseph S. Myers <joseph@codesourcery.com> + + PR target/19886 + * config/ia64/ia64.h (struct machine_function): Add state_num. + * config/ia64/ia64.c (process_epilogue, + process_for_unwind_directive): Use new unwind state numbers each + time rather than state 1. + 2005-02-18 Ulrich Weigand <uweigand@de.ibm.com> PR target/20054 diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 4502a46..ce72063 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -7726,7 +7726,8 @@ process_epilogue (void) if (!last_block) { - fprintf (asm_out_file, "\t.label_state 1\n"); + fprintf (asm_out_file, "\t.label_state %d\n", + ++cfun->machine->state_num); need_copy_state = true; } @@ -7974,7 +7975,8 @@ process_for_unwind_directive (FILE *asm_out_file, rtx insn) if (need_copy_state) { fprintf (asm_out_file, "\t.body\n"); - fprintf (asm_out_file, "\t.copy_state 1\n"); + fprintf (asm_out_file, "\t.copy_state %d\n", + cfun->machine->state_num); need_copy_state = false; } } diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index 255f9f2..36edb9e 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -2199,6 +2199,9 @@ struct machine_function GTY(()) /* The number of varargs registers to save. */ int n_varargs; + + /* The number of the next unwind state to copy. */ + int state_num; }; |