re PR rtl-optimization/51271 (ICE in in maybe_record_trace_start, at dwarf2cfi.c...
authorTom de Vries <tom@codesourcery.com>
Tue, 10 Jan 2012 08:28:55 +0000 (08:28 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Tue, 10 Jan 2012 08:28:55 +0000 (08:28 +0000)
2012-01-10  Tom de Vries  <tom@codesourcery.com>

PR rtl-optimization/51271
* dwarf2cfi.c (scan_trace): Save and restore cur_row->reg_save when
handling annulled branch.

From-SVN: r183052

gcc/ChangeLog
gcc/dwarf2cfi.c

index c7d02081bef747b979ada0182c80e61a819d3918..d2686a700222e7fd3ece979b84cfe1231e290da5 100644 (file)
@@ -1,3 +1,8 @@
+2012-01-10  Tom de Vries  <tom@codesourcery.com>
+
+       * dwarf2cfi.c (scan_trace): Save and restore cur_row->reg_save when
+       handling annulled branch.
+
 2012-01-10  Richard Henderson  <rth@redhat.com>
 
        * config/arm/arm.c (arm_vectorize_vec_perm_const_ok, 
index b2721e88ef41ac29c4c46d3a97b80f4d233d5043..2e749550fc5956173effa5c2ab49f764fcec8a42 100644 (file)
@@ -2439,10 +2439,12 @@ scan_trace (dw_trace_info *trace)
              if (INSN_FROM_TARGET_P (elt))
                {
                  HOST_WIDE_INT restore_args_size;
+                 cfi_vec save_row_reg_save;
 
                  add_cfi_insn = NULL;
                  restore_args_size = cur_trace->end_true_args_size;
                  cur_cfa = &cur_row->cfa;
+                 save_row_reg_save = VEC_copy (dw_cfi_ref, gc, cur_row->reg_save);
 
                  scan_insn_after (elt);
 
@@ -2453,6 +2455,7 @@ scan_trace (dw_trace_info *trace)
 
                  cur_trace->end_true_args_size = restore_args_size;
                  cur_row->cfa = this_cfa;
+                 cur_row->reg_save = save_row_reg_save;
                  cur_cfa = &this_cfa;
                  continue;
                }