// Test that type punning using an anonymous union works with strict aliasing. // { dg-do run } // { dg-options "-O2 -fstrict-aliasing" } extern "C" void abort (); void f (long i) { union { long ui; float uf[20]; }; ui = i; if (uf[0] != 42.0) abort (); } int main () { union U { long i; float f[20]; } u; u.f[0] = 42.0; f (u.i); }