https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87501
Bug ID: 87501 Summary: lto1: error: Alias and target's section differs Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: hubicka at gcc dot gnu.org, marxin at gcc dot gnu.org Target Milestone: --- It's also an older issue: $ cat 1.ii struct a { virtual void f(); }; struct b : a {}; struct S : a, b { void f() {} }; main() { S c; } $ cat 2.ii struct S { void f(); }; void S::f() {} $ g++ -flto 1.ii 2.ii -fchecking 1.ii:5:8: warning: direct base ‘a’ inaccessible in ‘S’ due to ambiguity struct S : a, b { ^ 1.ii:8:6: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type] main() { S c; } ^ 1.ii:5:8: warning: type ‘struct S’ violates the C++ One Definition Rule [-Wodr] struct S : a, b { ^ 2.ii:1:8: note: a type with different bases is defined in another translation unit struct S { ^ 1.ii:6:8: warning: ‘f’ violates the C++ One Definition Rule [-Wodr] void f() {} ^ 2.ii:4:6: note: implicit this pointer type mismatch void S::f() {} ^ 2.ii:1:8: note: type ‘struct S’ itself violates the C++ One Definition Rule struct S { ^ 1.ii:5:8: note: the incompatible type is defined here struct S : a, b { ^ 2.ii:4:6: note: ‘f’ was previously declared here void S::f() {} ^ 2.ii:4:6: note: code may be misoptimized unless -fno-strict-aliasing is used lto1: error: Alias and target's section differs _ZN1S1fEv/26 (f) @0x7ffff657c5c0 Type: function definition analyzed Visibility: force_output externally_visible no_reorder prevailing_def_ironly public Address is taken. References: Referring: *.LTHUNK0/1 (alias)_ZTV1S/13 (addr) Read from file: /tmp/ccaPfjxk.o First run: 0 Function flags: Called by: Calls: lto1: error: Alias and target's comdat groups differs _ZN1S1fEv/26 (f) @0x7ffff657c5c0 Type: function definition analyzed Visibility: force_output externally_visible no_reorder prevailing_def_ironly public Address is taken. References: Referring: *.LTHUNK0/1 (alias)_ZTV1S/13 (addr) Read from file: /tmp/ccaPfjxk.o First run: 0 Function flags: Called by: Calls: *.LTHUNK0/1 (*.LTHUNK0) @0x7ffff657c170 Type: function definition analyzed alias Visibility: comdat_group:_ZN1S1fEv section:.text._ZN1S1fEv (implicit_section) artificial Same comdat group as: _ZThn8_N1S1fEv/2 References: _ZN1S1fEv/26 (alias) Referring: Read from file: /tmp/ccF6bEVE.o First run: 0 Function flags: Called by: _ZThn8_N1S1fEv/2 (can throw external) Calls: (null):0: confused by earlier errors, bailing out lto-wrapper: fatal error: g++ returned 1 exit status compilation terminated. /usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/bin/ld: error: lto-wrapper failed collect2: error: ld returned 1 exit status