OSDN Git Service

2011-08-26 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Aug 2011 14:02:28 +0000 (14:02 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Aug 2011 14:02:28 +0000 (14:02 +0000)
* varasm.c (decode_addr_const): Handle MEM_REF[&X, OFF].

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

gcc/ChangeLog
gcc/varasm.c

index 9412f49..28c9d2f 100644 (file)
@@ -1,3 +1,7 @@
+2011-08-26  Richard Guenther  <rguenther@suse.de>
+
+       * varasm.c (decode_addr_const): Handle MEM_REF[&X, OFF].
+
 2011-08-26  Zdenek Dvorak  <ook@ucw.cz>
            Tom de Vries  <tom@codesourcery.com>
 
index a612888..e83bebb 100644 (file)
@@ -2592,6 +2592,12 @@ decode_addr_const (tree exp, struct addr_const *value)
                     * tree_low_cst (TREE_OPERAND (target, 1), 0));
          target = TREE_OPERAND (target, 0);
        }
+      else if (TREE_CODE (target) == MEM_REF
+              && TREE_CODE (TREE_OPERAND (target, 0)) == ADDR_EXPR)
+       {
+         offset += mem_ref_offset (target).low;
+         target = TREE_OPERAND (TREE_OPERAND (target, 0), 0);
+       }
       else if (TREE_CODE (target) == INDIRECT_REF
               && TREE_CODE (TREE_OPERAND (target, 0)) == NOP_EXPR
               && TREE_CODE (TREE_OPERAND (TREE_OPERAND (target, 0), 0))