OSDN Git Service

* cfgexpand.c (expand_debug_expr): Handle MEM_REF
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Nov 2010 11:08:01 +0000 (11:08 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Nov 2010 11:08:01 +0000 (11:08 +0000)
with non-zero offset.

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

gcc/ChangeLog
gcc/cfgexpand.c

index a752a51..749951a 100644 (file)
@@ -1,5 +1,8 @@
 2010-11-05  Jakub Jelinek  <jakub@redhat.com>
 
+       * cfgexpand.c (expand_debug_expr): Handle MEM_REF
+       with non-zero offset.
+
        PR debug/46307
        * tree-ssa-operands.c (get_expr_operands): Handle FMA_EXPR.
        * tree-pretty-print.c (dump_generic_node): Likewise.
index b302591..c44649e 100644 (file)
@@ -2552,15 +2552,20 @@ expand_debug_expr (tree exp)
       }
 
     case MEM_REF:
-      /* ??? FIXME.  */
-      if (!integer_zerop (TREE_OPERAND (exp, 1)))
-       return NULL;
-      /* Fallthru.  */
     case INDIRECT_REF:
       op0 = expand_debug_expr (TREE_OPERAND (exp, 0));
       if (!op0)
        return NULL;
 
+      if (TREE_CODE (exp) == MEM_REF)
+       {
+         op1 = expand_debug_expr (TREE_OPERAND (exp, 1));
+         if (!op1 || !CONST_INT_P (op1))
+           return NULL;
+
+         op0 = plus_constant (op0, INTVAL (op1));
+       }
+
       if (POINTER_TYPE_P (TREE_TYPE (exp)))
        as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp)));
       else