blob: 4875bdd57019040ef3abfb0417fc1811f6aa783b [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-fopenmp -fdump-tree-optimized -O3" } */
/* Test that functions that have SIMD clone counterparts are not
cloned by IPA-cp. For example, special_add() below has SIMD clones
created for it. However, if IPA-cp later decides to clone a
specialization of special_add(x, 666) when analyzing fillit(), we
will forever keep the vectorizer from using the SIMD versions of
special_add in a loop.
If IPA-CP gets taught how to adjust the SIMD clones as well, this
test could be removed. */
#pragma omp declare simd simdlen(4)
static int __attribute__ ((noinline))
special_add (int x, int y)
{
if (y == 666)
return x + y + 123;
else
return x + y;
}
void fillit(int *tot)
{
int i;
for (i=0; i < 10000; ++i)
tot[i] = special_add (i, 666);
}
/* { dg-final { scan-tree-dump-not "special_add.constprop" "optimized" } } */