From: Richard Guenther Date: Wed, 14 Jul 2010 09:52:01 +0000 (+0000) Subject: tree-ssa-ccp.c (fold_const_aggregate_ref): Handle MEM_REF as base of ARRAY_REFs. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2bd6311dbb9325b80a3b9106fb40b508c393e2d4;p=gcc.git tree-ssa-ccp.c (fold_const_aggregate_ref): Handle MEM_REF as base of ARRAY_REFs. 2010-07-14 Richard Guenther * tree-ssa-ccp.c (fold_const_aggregate_ref): Handle MEM_REF as base of ARRAY_REFs. From-SVN: r162175 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 684919aa222..ae90fdd3dcb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-07-14 Richard Guenther + + * tree-ssa-ccp.c (fold_const_aggregate_ref): Handle MEM_REF + as base of ARRAY_REFs. + 2010-07-14 Richard Guenther PR middle-end/44930 diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 17d07a9d7cd..89ef5b3a7e4 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -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