Commit 981dc735 by Richard Henderson Committed by Richard Henderson

re PR debug/49825 (Many testcase failures)

PR debug/49825
        * dwarf2cfi.c (dwarf2out_stack_adjust): Move A_O_A test earlier.
        (dwarf2out_notice_stack_adjust): Use args_size from call_insn.

From-SVN: r176729
parent 3382318a
2011-07-24 Richard Henderson <rth@redhat.com>
PR debug/49825
* dwarf2cfi.c (dwarf2out_stack_adjust): Move A_O_A test earlier.
(dwarf2out_notice_stack_adjust): Use args_size from call_insn.
2011-07-24 Richard Henderson <rth@redhat.com>
PR debug/49827
* dwarf2cfi.c (create_trace_edges): Handle sequences properly.
......
......@@ -956,14 +956,6 @@ dwarf2out_stack_adjust (HOST_WIDE_INT offset)
if (cur_trace->cfa_store.reg == dw_stack_pointer_regnum)
cur_trace->cfa_store.offset += offset;
#ifndef STACK_GROWS_DOWNWARD
offset = -offset;
#endif
queued_args_size += offset;
if (queued_args_size < 0)
queued_args_size = 0;
/* ??? The assumption seems to be that if A_O_A, the only CFA adjustments
involving the stack pointer are inside the prologue and marked as
RTX_FRAME_RELATED_P. That said, should we not verify this assumption
......@@ -972,6 +964,14 @@ dwarf2out_stack_adjust (HOST_WIDE_INT offset)
if (ACCUMULATE_OUTGOING_ARGS)
return;
#ifndef STACK_GROWS_DOWNWARD
offset = -offset;
#endif
queued_args_size += offset;
if (queued_args_size < 0)
queued_args_size = 0;
def_cfa_1 (&loc);
if (flag_asynchronous_unwind_tables)
dwarf2out_args_size (queued_args_size);
......@@ -1016,8 +1016,7 @@ dwarf2out_notice_stack_adjust (rtx insn, bool after_p)
if (GET_CODE (insn) == SET)
insn = SET_SRC (insn);
gcc_assert (GET_CODE (insn) == CALL);
gcc_assert (queued_args_size == INTVAL (XEXP (insn, 1)));
dwarf2out_args_size (queued_args_size);
dwarf2out_args_size (INTVAL (XEXP (insn, 1)));
}
return;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment