diff options
author | Richard Guenther <rguenther@suse.de> | 2010-07-14 09:52:01 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-07-14 09:52:01 +0000 |
commit | 2bd6311dbb9325b80a3b9106fb40b508c393e2d4 (patch) | |
tree | 4c388f1fe20bca23f4e23c336389c25962229f6c /gcc | |
parent | f051cb5dca9c7d6d7313520662a84ebc7610ac50 (diff) | |
download | gcc-2bd6311dbb9325b80a3b9106fb40b508c393e2d4.zip gcc-2bd6311dbb9325b80a3b9106fb40b508c393e2d4.tar.gz gcc-2bd6311dbb9325b80a3b9106fb40b508c393e2d4.tar.bz2 |
tree-ssa-ccp.c (fold_const_aggregate_ref): Handle MEM_REF as base of ARRAY_REFs.
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-ssa-ccp.c | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 684919a..ae90fdd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 17d07a9..89ef5b3 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 |