https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115167
--- Comment #3 from David Edelsohn <dje at gcc dot gnu.org> --- On PPC64 Linux, gcc-rich-location.o now has undefined references to range_label_for_type_mismatch: $ nm -BCpg gcc-rich-location.o | grep range_label_for_type_mismatch U vtable for range_label_for_type_mismatch U range_label_for_type_mismatch::get_text(unsigned int) const and c-objc-common.o provides definitions: $ nm -BCpg c-objc-common.o | grep range_label_for_type_mismatch 0000000000001140 T range_label_for_type_mismatch::get_text(unsigned int) const 0000000000000000 V vtable for range_label_for_type_mismatch AIX similarly has the undefined symbols: $ /usr/bin/nm -BCpgl gcc-rich-location.o | grep range_label_for_type_mismatch - U _ZTV29range_label_for_type_mismatch - U ._ZNK29range_label_for_type_mismatch8get_textEj and the definition in c-objc-common.o: $ /usr/bin/nm -BCpgl c-objc-common.o | grep range_label_for_type_mismatch 4592 T ._ZNK29range_label_for_type_mismatch8get_textEj 13828 D _ZNK29range_label_for_type_mismatch8get_textEj 14000 D _ZTV29range_label_for_type_mismatch Linux seems to accept the undefined symbols in Fortran, but AIX semantics requires a definition. My instinct is that this is a "bug" for all systems, but Linux semantics ignores or garbage collects the undefined symbol.