diff options
author | Richard Biener <rguenther@suse.de> | 2013-02-18 12:11:47 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-02-18 12:11:47 +0000 |
commit | 5e97dfb679abcb5abf5381050d8f754b3289bce6 (patch) | |
tree | a0e984373f08bde8a8d4f6002a135adebced54a5 | |
parent | 8fe196a20700ef9e1e74c83f163608dfc361978e (diff) | |
download | gcc-5e97dfb679abcb5abf5381050d8f754b3289bce6.zip gcc-5e97dfb679abcb5abf5381050d8f754b3289bce6.tar.gz gcc-5e97dfb679abcb5abf5381050d8f754b3289bce6.tar.bz2 |
re PR tree-optimization/56321 (ICE:segfault in midend for -funsafe-math-optimizations -O3)
2013-02-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/56321
* tree-ssa-reassoc.c (propagate_op_to_single_use): Properly
order SSA name release and virtual operand unlinking.
* gcc.dg/torture/pr56321.c: New testcase.
From-SVN: r196117
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr56321.c | 11 | ||||
-rw-r--r-- | gcc/tree-ssa-reassoc.c | 4 |
4 files changed, 23 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dbf8a17..044ca29 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-02-18 Richard Biener <rguenther@suse.de> + + PR tree-optimization/56321 + * tree-ssa-reassoc.c (propagate_op_to_single_use): Properly + order SSA name release and virtual operand unlinking. + 2013-02-17 Edgar E. Iglesias <edgar.iglesias@gmail.com> * config/microblaze/microblaze.md (save_stack_block): Define. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2377db0..ac25824 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-02-18 Richard Biener <rguenther@suse.de> + + PR tree-optimization/56321 + * gcc.dg/torture/pr56321.c: New testcase. + 2013-02-16 Edgar E. Iglesias <edgar.iglesias@gmail.com> * gcc.dg/20020312-2.c: Define MicroBlaze PIC register diff --git a/gcc/testsuite/gcc.dg/torture/pr56321.c b/gcc/testsuite/gcc.dg/torture/pr56321.c new file mode 100644 index 0000000..a8c4634 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr56321.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-ffast-math" } */ + +void foo(int n, int nreps, float tdgefa, float tdgesl) +{ + float kflops,ops; + ops=((2.0*n*n*n)/3.0+2.0*n*n); + kflops=2.*nreps*ops/(1000.*(tdgefa+tdgesl)); + + __builtin_printf ("%f\n", kflops); +} diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c index eb19f38..f53526b 100644 --- a/gcc/tree-ssa-reassoc.c +++ b/gcc/tree-ssa-reassoc.c @@ -1062,11 +1062,9 @@ propagate_op_to_single_use (tree op, gimple stmt, tree *def) if (TREE_CODE (op) != SSA_NAME) update_stmt (use_stmt); gsi = gsi_for_stmt (stmt); + unlink_stmt_vdef (stmt); gsi_remove (&gsi, true); release_defs (stmt); - - if (is_gimple_call (stmt)) - unlink_stmt_vdef (stmt); } /* Walks the linear chain with result *DEF searching for an operation |