PR68474: Fix tree-call-cdce.c:use_internal_fn

We'd call gen_shrink_wrap_conditions for functions that it can't handle
but edom_only_function can.

Tested on x86_64-linux-gnu.

gcc/
	PR tree-optimization/68474
	* tree-call-cdce.c (use_internal_fn): Protect call to
	gen_shrink_wrap_conditions.

gcc/testsuite/
	PR tree-optimization/68474
	* gcc.dg/pr68474.c: New test.

From-SVN: r231115
This commit is contained in:
Richard Sandiford 2015-12-01 14:53:53 +00:00 committed by Richard Sandiford
parent 5797378aab
commit 6c59645f5d
4 changed files with 20 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-12-01 Richard Sandiford <richard.sandiford@arm.com>
PR tree-optimization/68474
* tree-call-cdce.c (use_internal_fn): Protect call to
gen_shrink_wrap_conditions.
2015-12-01 Christian Bruel <christian.bruel@st.com>
PR target/68617

View File

@ -1,3 +1,8 @@
2015-12-01 Richard Sandiford <richard.sandiford@arm.com>
PR tree-optimization/68474
* gcc.dg/pr68474.c: New test.
2015-12-01 Christian Bruel <christian.bruel@st.com>
PR target/68617

View File

@ -0,0 +1,7 @@
/* { dg-options "-O -funsafe-math-optimizations" } */
long double
foo (long double d1, long double d2)
{
return d1 || __builtin_significandl (d2);
}

View File

@ -959,7 +959,8 @@ use_internal_fn (gcall *call)
{
unsigned nconds = 0;
auto_vec<gimple *, 12> conds;
gen_shrink_wrap_conditions (call, conds, &nconds);
if (can_test_argument_range (call))
gen_shrink_wrap_conditions (call, conds, &nconds);
if (nconds == 0 && !edom_only_function (call))
return false;