1  /* { dg-lto-do run } */
       2  /* { dg-lto-options { "-O2 -fno-strict-aliasing -flto" } } */
       3  
       4  typedef unsigned long VALUE;
       5  
       6  __attribute__ ((cold))
       7  void rb_check_type(VALUE, int);
       8  
       9  static VALUE
      10  repro(VALUE dummy, VALUE hash)
      11  {
      12      if (hash == 0) {
      13          rb_check_type(hash, 1);
      14      }
      15      else if (*(long *)hash) {
      16          rb_check_type(hash, 1);
      17      }
      18  
      19  
      20      return *(long *)hash;
      21  }
      22  
      23  static VALUE (*that)(VALUE dummy, VALUE hash) = repro;
      24  
      25  volatile int zero = 0;
      26  
      27  int
      28  main(int argc, char **argv)
      29  {
      30          that(0, zero);
      31  
      32          rb_check_type(zero, zero);
      33  
      34  }