https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69145
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> --- Test case (seems as if the file name of the included file matters): $ g++ TDICmds.cc TDICmds.cc:1:24: warning: #pragma implementation for ‘create_defect_script_SCDBase.cc’ appears after file is included #pragma implementation "create_defect_script_SCDBase.cc" ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from TDICmds.cc:2:0: create_defect_script_SCDBase.cc:1:0: note: File was included here #include "create_defect_script_SCDBase.h" ==> create_defect_script_SCDBase.cc <== #include "create_defect_script_SCDBase.h" ==> create_defect_script_SCDBase.h <== #ifndef create_defect_script_SCDBase_H # define create_defect_script_SCDBase_H #endif ==> TDICmds.cc <== #pragma implementation "create_defect_script_SCDBase.cc" #include "create_defect_script_SCDBase.cc"