diff options
| -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; }; |
