re PR c/47892 (Fails to vectorize comparison code, if-conversion fails)
2011-04-20 Richard Guenther <rguenther@suse.de> PR tree-optimization/47892 * tree-if-conv.c (if_convertible_stmt_p): Const builtins are if-convertible. * gcc.dg/vect/fast-math-ifcvt-1.c: New testcase. From-SVN: r172774
This commit is contained in:
parent
9d12f71a54
commit
d7978bff88
@ -1,3 +1,9 @@
|
||||
2011-04-20 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/47892
|
||||
* tree-if-conv.c (if_convertible_stmt_p): Const builtins
|
||||
are if-convertible.
|
||||
|
||||
2011-04-20 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* config/alpha/vms.h (ASM_OUTPUT_ADDR_DIFF_ELT): Do not redefine.
|
||||
|
@ -1,3 +1,8 @@
|
||||
2011-04-20 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/47892
|
||||
* gcc.dg/vect/fast-math-ifcvt-1.c: New testcase.
|
||||
|
||||
2011-04-20 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/48695
|
||||
|
18
gcc/testsuite/gcc.dg/vect/fast-math-ifcvt-1.c
Normal file
18
gcc/testsuite/gcc.dg/vect/fast-math-ifcvt-1.c
Normal file
@ -0,0 +1,18 @@
|
||||
/* PR 47892 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target vect_float } */
|
||||
/* { dg-require-effective-target vect_condition } */
|
||||
|
||||
void
|
||||
bestseries9 (float * __restrict__ arr, int len)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
float or = arr[i];
|
||||
arr[i] = (or > 0.0f) * (2 - or * or);
|
||||
}
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
|
||||
/* { dg-final { cleanup-tree-dump "vect" } } */
|
@ -719,6 +719,22 @@ if_convertible_stmt_p (gimple stmt, VEC (data_reference_p, heap) *refs)
|
||||
case GIMPLE_ASSIGN:
|
||||
return if_convertible_gimple_assign_stmt_p (stmt, refs);
|
||||
|
||||
case GIMPLE_CALL:
|
||||
{
|
||||
tree fndecl = gimple_call_fndecl (stmt);
|
||||
if (fndecl)
|
||||
{
|
||||
int flags = gimple_call_flags (stmt);
|
||||
if ((flags & ECF_CONST)
|
||||
&& !(flags & ECF_LOOPING_CONST_OR_PURE)
|
||||
/* We can only vectorize some builtins at the moment,
|
||||
so restrict if-conversion to those. */
|
||||
&& DECL_BUILT_IN (fndecl))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
default:
|
||||
/* Don't know what to do with 'em so don't do anything. */
|
||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||
|
Loading…
Reference in New Issue
Block a user