(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr85044.c
       1  /* { dg-do run { target cet } } */
       2  /* { dg-require-effective-target trampolines } */
       3  /* { dg-options "-O2 -fcf-protection=branch" } */
       4  
       5  void callme (void (*callback) (void));
       6  
       7  int
       8  main (void)
       9  {
      10    int ok = 0;
      11    void callback (void) { ok = 1; }
      12  
      13    callme (&callback);
      14  
      15    if (!ok)
      16     __builtin_abort ();
      17    return 0;
      18  }
      19  
      20  __attribute__((noinline, noclone))
      21  void
      22  callme (void (*callback) (void))
      23  {
      24    (*callback) ();
      25  }