aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/ia64/ia64.c6
-rw-r--r--gcc/config/ia64/ia64.h3
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;
};