diff options
author | Richard Biener <rguenther@suse.de> | 2013-09-02 13:24:30 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-09-02 13:24:30 +0000 |
commit | 63fdb7bee70641e7d9a9704d51c8b70a62d31c24 (patch) | |
tree | f11b08d36e1a75861711146eeb11401df79a9528 | |
parent | 78de2333eab3428f4b8723e41534f81c508bc7a6 (diff) | |
download | gcc-63fdb7bee70641e7d9a9704d51c8b70a62d31c24.zip gcc-63fdb7bee70641e7d9a9704d51c8b70a62d31c24.tar.gz gcc-63fdb7bee70641e7d9a9704d51c8b70a62d31c24.tar.bz2 |
re PR tree-optimization/57511 (Missing SCEV final value replacement)
2013-09-02 Richard Biener <rguenther@suse.de>
PR middle-end/57511
* tree-scalar-evolution.c (instantiate_scev_name): Allow
non-linear SCEVs.
* gcc.dg/tree-ssa/sccp-1.c: New testcase.
From-SVN: r202168
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/sccp-1.c | 15 | ||||
-rw-r--r-- | gcc/tree-scalar-evolution.c | 1 |
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2ffa49e..498f68e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2013-09-02 Richard Biener <rguenther@suse.de> + PR middle-end/57511 + * tree-scalar-evolution.c (instantiate_scev_name): Allow + non-linear SCEVs. + +2013-09-02 Richard Biener <rguenther@suse.de> + * tree-affine.c (add_elt_to_tree): Avoid converting all pointer arithmetic to sizetype. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4cb359c..b190c4d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2013-09-02 Richard Biener <rguenther@suse.de> + PR middle-end/57511 + * gcc.dg/tree-ssa/sccp-1.c: New testcase. + +2013-09-02 Richard Biener <rguenther@suse.de> + * gcc.dg/tree-ssa/loop-4.c: Adjust scan looking for one memory reference. diff --git a/gcc/testsuite/gcc.dg/tree-ssa/sccp-1.c b/gcc/testsuite/gcc.dg/tree-ssa/sccp-1.c new file mode 100644 index 0000000..633a37a --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/sccp-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized" } */ + +int main(int argc, char* argv[]) +{ + int i, a = 0; + for (i=0; i < 10; i++) + a += i + 0xff00ff; + return a; +} + +/* There should be no loop left. */ + +/* { dg-final { scan-tree-dump-times "goto" 0 "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index c7e9d4b..bed621f 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -2252,6 +2252,7 @@ instantiate_scev_name (basic_block instantiate_below, else if (res != chrec_dont_know) { if (inner_loop + && def_bb->loop_father != inner_loop && !flow_loop_nested_p (def_bb->loop_father, inner_loop)) /* ??? We could try to compute the overall effect of the loop here. */ res = chrec_dont_know; |