]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR debug/50006 (ICE in in connect_traces, at dwarf2cfi.c:2677)
authorRichard Henderson <rth@redhat.com>
Mon, 15 Aug 2011 17:44:11 +0000 (10:44 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Mon, 15 Aug 2011 17:44:11 +0000 (10:44 -0700)
PR middle-end/50006
        * explow.c (allocate_dynamic_stack_space): Move suppress_reg_args_size
        setting out to include allocate_stack named pattern as well.
        * builtins.c (expand_builtin_apply): Add ARG_SIZE 0 note.
        * stmt.c (expand_stack_restore): Likewise.

From-SVN: r177764

gcc/ChangeLog
gcc/builtins.c
gcc/explow.c
gcc/stmt.c

index 952310748c04e0baa3f6770f6d6d1cbd9ec5f72c..811c0899bb0b08405980017f916e16f7b36c3d43 100644 (file)
@@ -1,3 +1,11 @@
+2011-08-15  Richard Henderson  <rth@redhat.com>
+
+       PR middle-end/50006
+       * explow.c (allocate_dynamic_stack_space): Move suppress_reg_args_size
+       setting out to include allocate_stack named pattern as well.
+       * builtins.c (expand_builtin_apply): Add ARG_SIZE 0 note.
+       * stmt.c (expand_stack_restore): Likewise.
+
 2011-08-15  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/50082
index e0afc908d5af93a94fe816e6c9fc2e9dce1add79..da86b8c9ca968cf0d4a9228e2dbe9a288014e5c5 100644 (file)
@@ -1680,6 +1680,7 @@ expand_builtin_apply (rtx function, rtx arguments, rtx argsize)
   else
 #endif
     emit_stack_restore (SAVE_BLOCK, old_stack_level);
+  fixup_args_size_notes (call_insn, get_last_insn(), 0);
 
   OK_DEFER_POP;
 
index f8262dbb0a4be21927bd7036189cce3803715c67..beeab44e8ac47e53c6fd4e098ecf31da82db1362 100644 (file)
@@ -1375,6 +1375,9 @@ allocate_dynamic_stack_space (rtx size, unsigned size_align,
   else if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK)
     probe_stack_range (STACK_CHECK_PROTECT, size);
 
+  /* Don't let anti_adjust_stack emit notes.  */
+  suppress_reg_args_size = true;
+
   /* Perform the required allocation from the stack.  Some systems do
      this differently than simply incrementing/decrementing from the
      stack pointer, such as acquiring the space by calling malloc().  */
@@ -1425,7 +1428,6 @@ allocate_dynamic_stack_space (rtx size, unsigned size_align,
        }
 
       saved_stack_pointer_delta = stack_pointer_delta;
-      suppress_reg_args_size = true;
 
       if (flag_stack_check && STACK_CHECK_MOVING_SP)
        anti_adjust_stack_and_probe (size, false);
@@ -1436,13 +1438,14 @@ allocate_dynamic_stack_space (rtx size, unsigned size_align,
         The constant size alloca should preserve
         crtl->preferred_stack_boundary alignment.  */
       stack_pointer_delta = saved_stack_pointer_delta;
-      suppress_reg_args_size = false;
 
 #ifdef STACK_GROWS_DOWNWARD
       emit_move_insn (target, virtual_stack_dynamic_rtx);
 #endif
     }
 
+  suppress_reg_args_size = false;
+
   /* Finish up the split stack handling.  */
   if (final_label != NULL_RTX)
     {
index 2fb4b18dd55b733262e3c7a83514f2ee1cd7e61d..be21a5708cf10bda426f708c232dca58f069a551 100644 (file)
@@ -2016,10 +2016,13 @@ expand_stack_save (void)
 void
 expand_stack_restore (tree var)
 {
-  rtx sa = expand_normal (var);
+  rtx prev, sa = expand_normal (var);
 
   sa = convert_memory_address (Pmode, sa);
+
+  prev = get_last_insn ();
   emit_stack_restore (SAVE_BLOCK, sa);
+  fixup_args_size_notes (prev, get_last_insn (), 0);
 }
 \f
 /* Do the insertion of a case label into case_list.  The labels are