// This testcase caused ICE on IA-32 in simplify_unary_operation
// CSE did not assume SUBREGs changing mode from integral to floating.
// { dg-do run { target i?86-*-* sparc*-*-* x86_64-*-* } }
// { dg-options "-O2" }

struct A
{
  union
    {
      float f;
      unsigned int w;
    } a;

  static inline const A foo (void)
    {
      return A ((unsigned int) (__extension__ ((union { unsigned l; float d; })
					       { l: 0x3f800000 }).d));
    }
  inline A (float f) { a.f = f; }
  A ();
  inline A (unsigned int w) { a.w = w; }
};

A::A()
{
  *this = foo ();
}

A a;

extern "C" void abort (void);
extern "C" void exit (int);

int main ()
{
  if (a.a.w != 1)
    abort ();
  exit (0);
}
