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.

Reply via email to