26 lines
363 B
C
26 lines
363 B
C
// 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);
|
|
}
|