https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93307
Bug ID: 93307 Summary: ODR violations Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: analyzer Assignee: dmalcolm at gcc dot gnu.org Reporter: hubicka at gcc dot gnu.org Target Milestone: --- Bootstrapping with LTO complains about ODR issues in analyzer ../../gcc/analyzer/region-model.h:792: warning: type ‘struct region’ violates the C++ One Definition Rule [-Wodr] 792 | class region | ../../gcc/sched-int.h:1443:8: note: a type with different virtual table pointers is defined in another translation unit 1443 | struct region | ^ ../../gcc/analyzer/region-model.h:792: warning: type ‘struct region’ violates the C++ One Definition Rule [-Wodr] 792 | class region ..... ../../gcc/analyzer/region-model.h:1239: warning: type ‘struct array_region’ violates the C++ One Definition Rule [-Wodr] 1239 | class array_region : public region | ../../gcc/analyzer/region-model.h:1239: note: a type with different bases is defined in another translation unit 1239 | class array_region : public region | ../../gcc/analyzer/region-model.h:1038: warning: type ‘struct union_region’ violates the C++ One Definition Rule [-Wodr] 1038 | class union_region : public struct_or_union_region | ../../gcc/analyzer/region-model.h:1038: note: a type with different bases is defined in another translation unit 1038 | class union_region : public struct_or_union_region | ../../gcc/analyzer/region-model.h:1011: warning: type ‘struct struct_region’ violates the C++ One Definition Rule [-Wodr] 1011 | class struct_region : public struct_or_union_region | ../../gcc/analyzer/region-model.h:1011: note: a type with different bases is defined in another translation unit 1011 | class struct_region : public struct_or_union_region | ../../gcc/tree-ssa-structalias.c:531: warning: type ‘struct constraint’ violates the C++ One Definition Rule [-Wodr] 531 | struct constraint | ../../gcc/analyzer/constraint-manager.h:121: note: a different type is defined in another translation unit 121 | class constraint | ../../gcc/tree-ssa-structalias.c:533: note: the first difference of corresponding definitions is field ‘lhs’ 533 | struct constraint_expr lhs; | ../../gcc/analyzer/constraint-manager.h:142: note: a field with different name is defined in another translation unit 142 | equiv_class_id m_lhs; At first glance they all seems valid. If not I would be happy to know about it.