1/* { dg-do run } */
2/* { dg-additional-options "-fstrict-aliasing" } */
3
4extern void *malloc (__SIZE_TYPE__);
5extern void abort (void);
6
7void __attribute__((noinline,noclone))
8foo (int *pi)
9{
10  if (*pi != 1)
11    abort ();
12}
13
14int
15main()
16{
17  void *p = malloc(sizeof (double));
18  int *pi = p;
19  double *pd = p;
20
21  *pi = 1;
22  int a = *pi;
23  *pd = 0;
24  *pi = a;
25  foo (pi);
26
27  return 0;
28}
29