modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/call-trap-1.c (about)

     1  /* Undefined behavior from a call to a function cast to a different
     2     type does not appear until after the function designator and
     3     arguments have been evaluated.  PR 38483.  */
     4  /* Origin: Joseph Myers <joseph@codesourcery.com> */
     5  /* { dg-require-effective-target untyped_assembly } */
     6  
     7  extern void exit (int);
     8  extern void abort (void);
     9  
    10  int
    11  foo (void)
    12  {
    13    exit (0);
    14    return 0;
    15  }
    16  
    17  void
    18  bar (void)
    19  {
    20  }
    21  
    22  int
    23  main (void)
    24  {
    25    ((long (*)(int))bar) (foo ());
    26    abort ();
    27  }