From 5b4275dbe96d3d6e5da8189adda0501e76e72a8b Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Fri, 18 Feb 2005 21:23:16 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 8 ++++++++ gcc/config/ia64/ia64.c | 6 ++++-- gcc/config/ia64/ia64.h | 3 +++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8271af27056..317bcb07796 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2005-02-18 Joseph S. Myers + + 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 PR target/20054 diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 4502a4600fb..ce72063eecb 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 255f9f29fdf..36edb9e48f2 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; }; -- 2.30.2