blob: baf90eafabfe407aa928b39449bad15b4548d854 [file] [log] [blame]
/* PR tree-optimization/114396 */
/* { dg-additional-options "-fwrapv -fno-vect-cost-model" } */
short a = 0xF;
short b[16];
unsigned short ua = 0xF;
unsigned short ub[16];
short
__attribute__((noipa))
foo (short a)
{
for (int e = 0; e < 9; e += 1)
b[e] = a *= 5;
return a;
}
short
__attribute__((noipa))
foo1 (short a)
{
for (int e = 0; e < 9; e += 1)
b[e] = a *= -5;
return a;
}
unsigned short
__attribute__((noipa))
foou (unsigned short a)
{
for (int e = 0; e < 9; e += 1)
ub[e] = a *= -5;
return a;
}
unsigned short
__attribute__((noipa))
foou1 (unsigned short a)
{
for (int e = 0; e < 9; e += 1)
ub[e] = a *= 5;
return a;
}
short
__attribute__((noipa,optimize("O3")))
foo_o3 (short a)
{
for (int e = 0; e < 9; e += 1)
b[e] = a *= 5;
return a;
}
short
__attribute__((noipa,optimize("O3")))
foo1_o3 (short a)
{
for (int e = 0; e < 9; e += 1)
b[e] = a *= -5;
return a;
}
unsigned short
__attribute__((noipa,optimize("O3")))
foou_o3 (unsigned short a)
{
for (int e = 0; e < 9; e += 1)
ub[e] = a *= -5;
return a;
}
unsigned short
__attribute__((noipa,optimize("O3")))
foou1_o3 (unsigned short a)
{
for (int e = 0; e < 9; e += 1)
ub[e] = a *= 5;
return a;
}
int main() {
unsigned short uexp, ures;
short exp, res;
exp = foo (a);
res = foo_o3 (a);
if (exp != res)
__builtin_abort ();
exp = foo1 (a);
res = foo1_o3 (a);
if (exp != res)
__builtin_abort ();
uexp = foou (a);
ures = foou_o3 (a);
if (uexp != ures)
__builtin_abort ();
uexp = foou1 (a);
ures = foou1_o3 (a);
if (uexp != ures)
__builtin_abort ();
return 0;
}