diff options
author | Bin Cheng <bin.cheng@arm.com> | 2017-08-08 11:32:05 +0000 |
---|---|---|
committer | Bin Cheng <amker@gcc.gnu.org> | 2017-08-08 11:32:05 +0000 |
commit | a5c93f53874df217443c718dd5e938783e695871 (patch) | |
tree | 6087985587cf5485a2b2c68964fe6d48f55c6404 /gcc | |
parent | eac3ab4aa4fbdaec242605f636a9acce417fad9f (diff) | |
download | gcc-a5c93f53874df217443c718dd5e938783e695871.zip gcc-a5c93f53874df217443c718dd5e938783e695871.tar.gz gcc-a5c93f53874df217443c718dd5e938783e695871.tar.bz2 |
re PR tree-optimization/81744 (ICE: verify_ssa failed, at tree-ssa.c:1186)
PR tree-optimization/81744
* tree-predcom.c (prepare_finalizers_chain): Deep copy expr of
loop's number of iterations.
gcc/testsuite
* gcc.dg/tree-ssa/pr81744.c: New.
From-SVN: r250950
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr81744.c | 13 | ||||
-rw-r--r-- | gcc/tree-predcom.c | 2 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dde91ce..d830fd6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-08-08 Bin Cheng <bin.cheng@arm.com> + + PR tree-optimization/81744 + * tree-predcom.c (prepare_finalizers_chain): Deep copy expr of + loop's number of iterations. + 2017-08-08 Martin Liska <mliska@suse.cz> * asan.c: Include header files. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e08c2e8..211e629 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-08-08 Bin Cheng <bin.cheng@arm.com> + + PR tree-optimization/81744 + * gcc.dg/tree-ssa/pr81744.c: New. + 2017-08-08 Marek Polacek <polacek@redhat.com> PR c++/81607 diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr81744.c b/gcc/testsuite/gcc.dg/tree-ssa/pr81744.c new file mode 100644 index 0000000..b0f5d38f --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr81744.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -fno-tree-loop-vectorize -fno-tree-slp-vectorize -fno-inline -fdump-tree-pcom-details" } */ + +typedef struct { + int a, b; +} CompandSegment; +int a; +CompandSegment *b; +void fn1() { + for (; a; a++) + b[a].a = b[a].b = b[a - 1].a = b[a - 1].b = 0; +} +/* { dg-final { scan-tree-dump-times "Store-stores chain" 2 "pcom"} } */ diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c index 4538773..e7b10cb 100644 --- a/gcc/tree-predcom.c +++ b/gcc/tree-predcom.c @@ -2940,7 +2940,7 @@ prepare_finalizers_chain (struct loop *loop, chain_p chain) if (TREE_CODE (niters) != INTEGER_CST && TREE_CODE (niters) != SSA_NAME) { - niters = copy_node (niters); + niters = unshare_expr (niters); niters = force_gimple_operand (niters, &stmts, true, NULL); if (stmts) { |