tree-ssa-ccp.c (fold_const_aggregate_ref): Handle MEM_REF as base of ARRAY_REFs.
authorRichard Guenther <rguenther@suse.de>
Wed, 14 Jul 2010 09:52:01 +0000 (09:52 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 14 Jul 2010 09:52:01 +0000 (09:52 +0000)
2010-07-14  Richard Guenther  <rguenther@suse.de>

* tree-ssa-ccp.c (fold_const_aggregate_ref): Handle MEM_REF
as base of ARRAY_REFs.

From-SVN: r162175

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

index 684919aa222c1cb41e48570255447297b77099dc..ae90fdd3dcbcc3365adfa572e27cbc35f23a9147 100644 (file)
@@ -1,3 +1,8 @@
+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
index 17d07a9d7cddd969eed5a82aff0ec1aee80b75b0..89ef5b3a7e41b7c7238da5de9c86837c81296eca 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