https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81668
--- Comment #8 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to sgunderson from comment #7) > What I'd like is some sort of indication about where test.h came in from > (test1.cc and test2.cc). Actually, what would be more useful is to detect that the difference in type comes from S and point out where S has been declared as different types. Note that this is not the same bug I pointed out for ../include/violite.h:288:8: warning: type ‘struct st_vio’ violates the C++ One Definition Rule [-Wodr] ../include/violite.h:288:0: note: a different type is defined in another translation unit The :0: indicates something wrong with the location info. If the location is unknown, it would be better to use UNKNOWN_LOCATION.