/* APPLE LOCAL begin radar 4167459 */
/* { dg-do compile { target i?86-*-darwin* } } */
/* { dg-skip-if "" { i?86-*-darwin* } { "-m64" } { "" } } */
/* { dg-options "-O -march=pentium4" } */
extern double foo(double);

typedef union { 
  int int_val;
  double real_val;
} Val_type;

typedef enum { UNKNOWN, INT, REAL, BOOL, FCT, STRING } Data_type;

void ln(int res, int op1)
{
  Data_type res_type, op1_type;
  Val_type res_val, op1_val;

  res_val.real_val = foo((double)((op1_type == REAL) ? op1_val.real_val : op1_val.int_val));

  st_set_val_type(res, res_type, res_val);
}
/* APPLE LOCAL end radar 4167459 */
