/* PR c/71858 */ /* Only consider function names, function pointers and macros for implicit function declarations. */ /* { dg-do compile } */ /* { dg-options "-Wimplicit-function-declaration -fdiagnostics-show-caret" } */ void fn1abcd (void); void test_1 (int fn1bacd) { fn1badc (); /* { dg-warning "3: implicit declaration of function .fn1badc.; did you mean .fn1abcd.?" } */ /* { dg-begin-multiline-output "" } fn1badc (); ^~~~~~~ fn1abcd { dg-end-multiline-output "" } */ } void fn2efgh (void); void (*fn2efhg) (void); void test_2 (void) { fn2fehg (); /* { dg-warning "3: implicit declaration of function .fn2fehg.; did you mean .fn2efhg.?" } */ /* { dg-begin-multiline-output "" } fn2fehg (); ^~~~~~~ fn2efhg { dg-end-multiline-output "" } */ } void fn3ijkl (void); typedef int fn3ijlk; void test_3 (void) { fn3jilk (); /* { dg-warning "3: implicit declaration of function .fn3jilk.; did you mean .fn3ijkl.?" } */ /* { dg-begin-multiline-output "" } fn3jilk (); ^~~~~~~ fn3ijkl { dg-end-multiline-output "" } */ }