From efec771ab9763b9c16645a2993d87141dfa734e4 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 15 Aug 2011 10:44:11 -0700 Subject: [PATCH] re PR debug/50006 (ICE in in connect_traces, at dwarf2cfi.c:2677) 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 | 8 ++++++++ gcc/builtins.c | 1 + gcc/explow.c | 7 +++++-- gcc/stmt.c | 5 ++++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 952310748c0..811c0899bb0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2011-08-15 Richard Henderson + + 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 PR middle-end/50082 diff --git a/gcc/builtins.c b/gcc/builtins.c index e0afc908d5a..da86b8c9ca9 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -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; diff --git a/gcc/explow.c b/gcc/explow.c index f8262dbb0a4..beeab44e8ac 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -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) { diff --git a/gcc/stmt.c b/gcc/stmt.c index 2fb4b18dd55..be21a5708cf 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -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); } /* Do the insertion of a case label into case_list. The labels are -- 2.30.2