aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2005-02-18 21:23:16 +0000
committerJoseph Myers <jsm28@gcc.gnu.org>2005-02-18 21:23:16 +0000
commit5b4275dbe96d3d6e5da8189adda0501e76e72a8b (patch)
tree4dab641272e45b4b07a089df63ed84926aeef2cf
parentd6083c7d69ace6293905f43dc3f182b1e5a9c7fc (diff)
downloadgcc-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
-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;
};