191094Sdes/* { dg-do run } */
291094Sdes/* { dg-additional-options "-fstrict-aliasing" } */
391094Sdes
491094Sdesextern void *malloc (__SIZE_TYPE__);
591094Sdesextern void abort (void);
691094Sdes
791094Sdesvoid __attribute__((noinline,noclone))
891094Sdesfoo (int *pi)
991094Sdes{
1091094Sdes  if (*pi != 1)
1191094Sdes    abort ();
1291094Sdes}
1391094Sdes
1491094Sdesint
1591094Sdesmain()
1691094Sdes{
1791094Sdes  void *p = malloc(sizeof (double));
1891094Sdes  int *pi = p;
1991094Sdes  double *pd = p;
2091094Sdes
2191094Sdes  *pi = 1;
2291094Sdes  int a = *pi;
2391094Sdes  *pd = 0;
2491094Sdes  *pi = a;
2591094Sdes  foo (pi);
2691094Sdes
2791094Sdes  return 0;
2891094Sdes}
2991094Sdes