OSDN Git Service

2010-07-14 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 Jul 2010 09:52:01 +0000 (09:52 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 Jul 2010 09:52:01 +0000 (09:52 +0000)
* tree-ssa-ccp.c (fold_const_aggregate_ref): Handle MEM_REF
as base of ARRAY_REFs.

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

gcc/ChangeLog
gcc/tree-ssa-ccp.c

index 684919a..ae90fdd 100644 (file)
@@ -1,5 +1,10 @@
 2010-07-14  Richard Guenther  <rguenther@suse.de>
 
+       * tree-ssa-ccp.c (fold_const_aggregate_ref): Handle MEM_REF
+       as base of ARRAY_REFs.
+
+2010-07-14  Richard Guenther  <rguenther@suse.de>
+
        PR middle-end/44930
        * tree-pretty-print.c (do_niy): Do not print a newline.
 
index 17d07a9..89ef5b3 100644 (file)
@@ -1164,6 +1164,16 @@ fold_const_aggregate_ref (tree t)
       base = TREE_OPERAND (t, 0);
       switch (TREE_CODE (base))
        {
+       case MEM_REF:
+         /* ???  We could handle this case.  */
+         if (!integer_zerop (TREE_OPERAND (base, 1)))
+           return NULL_TREE;
+         base = get_base_address (base);
+         if (!base
+             || TREE_CODE (base) != VAR_DECL)
+           return NULL_TREE;
+
+         /* Fallthru.  */
        case VAR_DECL:
          if (!TREE_READONLY (base)
              || TREE_CODE (TREE_TYPE (base)) != ARRAY_TYPE