condexec-2.c   [plain text]


/* APPLE LOCAL file 6280380 */
/* The ARM backend was not recognizing that some operations cannot be
   predicated, and was blindly generating un-predicated operations,
   even though the branches were removed.  */
/* { dg-do run } */
/* { dg-options "-Oz -marm" { target arm*-*-darwin* } } */

extern void abort (void);

int x = 1;
float one = 1.0;

float foobar (float a, float b, float c, float d)
{
  if (x)
    return a + b;
  else
    return c - d;
}

int main (void)
{
  float result;

  result = foobar (one, one, one, one);
  if ((result) != 2.0f)
    abort ();
  return 0;
}