OSDN Git Service

* dwarf2out.c (def_cfa_1): After DW_CFA_def_cfa_expression
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 27 Apr 2010 18:12:32 +0000 (18:12 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 04:51:49 +0000 (13:51 +0900)
force using DW_CFA_def_cfa instead of DW_CFA_def_cfa_register
or DW_CFA_def_cfa_offset{,_sf}.

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

gcc/ChangeLog
gcc/dwarf2out.c

index e282e15..39e8fe7 100644 (file)
@@ -1,3 +1,9 @@
+2010-04-27  Jakub Jelinek  <jakub@redhat.com>
+
+       * dwarf2out.c (def_cfa_1): After DW_CFA_def_cfa_expression
+       force using DW_CFA_def_cfa instead of DW_CFA_def_cfa_register
+       or DW_CFA_def_cfa_offset{,_sf}.
+
 2010-04-27  Eric Botcazou  <ebotcazou@adacore.com>
 
        * tree.h: Fix truncated long macros.
index e7e2e8f..1f72f90 100644 (file)
@@ -1040,7 +1040,7 @@ def_cfa_1 (const char *label, dw_cfa_location *loc_p)
 
   cfi = new_cfi ();
 
-  if (loc.reg == old_cfa.reg && !loc.indirect)
+  if (loc.reg == old_cfa.reg && !loc.indirect && !old_cfa.indirect)
     {
       /* Construct a "DW_CFA_def_cfa_offset <offset>" instruction, indicating
         the CFA register did not change but the offset did.  The data
@@ -1056,7 +1056,8 @@ def_cfa_1 (const char *label, dw_cfa_location *loc_p)
 #ifndef MIPS_DEBUGGING_INFO  /* SGI dbx thinks this means no offset.  */
   else if (loc.offset == old_cfa.offset
           && old_cfa.reg != INVALID_REGNUM
-          && !loc.indirect)
+          && !loc.indirect
+          && !old_cfa.indirect)
     {
       /* Construct a "DW_CFA_def_cfa_register <register>" instruction,
         indicating the CFA register has changed to <register> but the