1  /* { dg-do run } */
       2  /* { dg-additional-options "-fstrict-aliasing" } */
       3  
       4  extern void *malloc (__SIZE_TYPE__);
       5  extern void abort (void);
       6  
       7  void __attribute__((noinline,noclone))
       8  foo (int *pi)
       9  {
      10    if (*pi != 1)
      11      abort ();
      12  }
      13  
      14  int
      15  main()
      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  }