From 5e97dfb679abcb5abf5381050d8f754b3289bce6 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Mon, 18 Feb 2013 12:11:47 +0000 Subject: [PATCH] re PR tree-optimization/56321 (ICE:segfault in midend for -funsafe-math-optimizations -O3) 2013-02-18 Richard Biener 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 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/torture/pr56321.c | 11 +++++++++++ gcc/tree-ssa-reassoc.c | 4 +--- 4 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr56321.c 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 + + 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 * 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 + + PR tree-optimization/56321 + * gcc.dg/torture/pr56321.c: New testcase. + 2013-02-16 Edgar E. Iglesias * 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 -- 2.7.4