https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93631
--- Comment #1 from Yongheng Chen <changochen1 at gmail dot com> --- POC: --- int f2 ( int x [ strcmp ( ) ] , int b ) { return c - b ; } int ( * f1 ( int a , enum E2 { E = -2 , F , G , H } b ) ) ( int c , int b ) { if ( a != b ) return f2 ; return 0 ; } int main ( ) { int ( * ( * p ) ( int a , int b ) ) ( int c , int d ) = f1 ; return ( * ( * p ) ( 0 , 2 ) ) ( 2 , 2 ) ; } ---