From 85a47bed9340d25f861b9e2a186a4d443660cc26 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Tue, 7 Dec 2010 12:36:40 +0000 Subject: [PATCH] re PR tree-optimization/46832 (internal compiler error: Segmentation fault) 2010-12-07 Richard Guenther PR tree-optimization/46832 * tree-ssa-math-opts.c (execute_optimize_widening_mul): Check that the call has a lhs. * gcc.c-torture/compile/pr46832.c: New testcase. From-SVN: r167535 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/compile/pr46832.c | 4 ++++ gcc/tree-ssa-math-opts.c | 3 ++- 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr46832.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fb4a27b3ce5..e2dda1120ff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-12-07 Richard Guenther + + PR tree-optimization/46832 + * tree-ssa-math-opts.c (execute_optimize_widening_mul): Check + that the call has a lhs. + 2010-12-07 Yao Qi * Makefile.in: Add $(TARGET_H) to the regrename.o rule. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c77146d7f60..3ff9cd8dcf0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-12-07 Richard Guenther + + PR tree-optimization/46832 + * gcc.c-torture/compile/pr46832.c: New testcase. + 2010-12-07 Jakub Jelinek PR debug/46799 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr46832.c b/gcc/testsuite/gcc.c-torture/compile/pr46832.c new file mode 100644 index 00000000000..f500aa51068 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr46832.c @@ -0,0 +1,4 @@ +double pow(double x, double y); +void foo( double x ) { + int j = (int) ((pow(x, 2)) < 0.0 ? (pow(x, 2))-0.5 : (pow(x, 2))+0.5); +} diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index e8f90372bc1..ed9b7a9d546 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -1707,7 +1707,8 @@ execute_optimize_widening_mul (void) default:; } } - else if (is_gimple_call (stmt)) + else if (is_gimple_call (stmt) + && gimple_call_lhs (stmt)) { tree fndecl = gimple_call_fndecl (stmt); if (fndecl