PR debug/49825
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 25 Jul 2011 03:26:35 +0000 (03:26 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 25 Jul 2011 03:26:35 +0000 (03:26 +0000)
        * dwarf2cfi.c (dwarf2out_stack_adjust): Move A_O_A test earlier.
        (dwarf2out_notice_stack_adjust): Use args_size from call_insn.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176729 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/dwarf2cfi.c

index 4fc18ee..b88996e 100644 (file)
@@ -1,5 +1,11 @@
 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.
 
index 9e64de6..de19d06 100644 (file)
@@ -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;
     }