blob: 968a4267e0d46192e4c59c098f787f5f4738a5e3 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O3" } */
/* The pseudo for P is marked as moveable in the IRA pass. */
float
func_0 (float a, float b, float c)
{
float p = c / a;
if (b > 1)
{
b /= p;
if (c > 2)
a /= 3;
}
return b / c * a;
}
/* If first_moveable_pseudo and last_moveable_pseudo are not reset correctly,
they will carry over and spill the pseudo for Q. */
float
func_1 (float a, float b, float c)
{
float q = a + b;
c *= a / (b + b);
if (a > 0)
c *= q;
return a * b * c;
}
/* We have plenty of spare registers, so check nothing has been spilled. */
/* { dg-final { scan-assembler-not "\tstr\t" } } */