* dwarf2out.c (loc_descr_plus_const): When offset is negative, use
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 25 May 2010 07:49:16 +0000 (07:49 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 25 May 2010 07:49:16 +0000 (07:49 +0000)
DW_OP_minus with negated offset instead of DW_OP_plus.
(loc_list_from_tree): Don't test whether second operand is
INTEGER_CST.

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

gcc/ChangeLog
gcc/dwarf2out.c

index 9b44b2b..7f1d29a 100644 (file)
@@ -1,3 +1,10 @@
+2010-05-25  Jakub Jelinek  <jakub@redhat.com>
+
+       * dwarf2out.c (loc_descr_plus_const): When offset is negative, use
+       DW_OP_minus with negated offset instead of DW_OP_plus.
+       (loc_list_from_tree): Don't test whether second operand is
+       INTEGER_CST.
+
 2010-05-25  Wei Guozhi  <carrot@google.com>
 
        * config/arm/thumb2.md (thumb2_tlobits_cbranch): Add constraint to
index fbf581b..19c322d 100644 (file)
@@ -4677,8 +4677,8 @@ loc_descr_plus_const (dw_loc_descr_ref *list_head, HOST_WIDE_INT offset)
 
   else
     {
-      loc->dw_loc_next = int_loc_descriptor (offset);
-      add_loc_descr (&loc->dw_loc_next, new_loc_descr (DW_OP_plus, 0, 0));
+      loc->dw_loc_next = int_loc_descriptor (-offset);
+      add_loc_descr (&loc->dw_loc_next, new_loc_descr (DW_OP_minus, 0, 0));
     }
 }
 
@@ -15137,8 +15137,7 @@ loc_list_from_tree (tree loc, int want_address)
 
     case POINTER_PLUS_EXPR:
     case PLUS_EXPR:
-      if (TREE_CODE (TREE_OPERAND (loc, 1)) == INTEGER_CST
-         && host_integerp (TREE_OPERAND (loc, 1), 0))
+      if (host_integerp (TREE_OPERAND (loc, 1), 0))
        {
          list_ret = loc_list_from_tree (TREE_OPERAND (loc, 0), 0);
          if (list_ret == 0)