[Bug lto/78407] [5/6/7 Regression] LTO breaks separate overriding of symbol aliases
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78407 --- Comment #3 from Jan Hubicka --- Author: hubicka Date: Thu Jan 19 10:00:56 2017 New Revision: 244612 URL: https://gcc.gnu.org/viewcvs?rev=244612&root=gcc&view=rev Log: PR lto/78407 * symtab.c (symtab_node::equal_address_to): Fix comparing of interposable aliases. Modified: trunk/gcc/ChangeLog trunk/gcc/symtab.c
[Bug lto/78407] [5/6/7 Regression] LTO breaks separate overriding of symbol aliases
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78407 --- Comment #2 from Jan Hubicka --- The following patch fixes the issue === --- symtab.c(revision 244386) +++ symtab.c(working copy) @@ -1989,13 +1989,12 @@ symtab_node::equal_address_to (symtab_no if (rs1 != rs2 && avail1 >= AVAIL_AVAILABLE && avail2 >= AVAIL_AVAILABLE) binds_local1 = binds_local2 = true; - if ((binds_local1 ? rs1 : this) - == (binds_local2 ? rs2 : s2)) + if (binds_local1 && binds_local2 && rs1 == rs2) { /* We made use of the fact that alias is not weak. */ - if (binds_local1 && rs1 != this) + if (rs1 != this) refuse_visibility_changes = true; - if (binds_local2 && rs2 != s2) + if (rs2 != s2) s2->refuse_visibility_changes = true; return 1; } the problem is that if one of symbols is interposable, we can not compare symbols for equality by comparing their alias targets. I will think a bit if this is too conservative. Honza
[Bug lto/78407] [5/6/7 Regression] LTO breaks separate overriding of symbol aliases
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78407 Richard Biener changed: What|Removed |Added Priority|P3 |P2
[Bug lto/78407] [5/6/7 Regression] LTO breaks separate overriding of symbol aliases
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78407 Jan Hubicka changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2016-12-01 Assignee|unassigned at gcc dot gnu.org |hubicka at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Jan Hubicka --- Mine.
[Bug lto/78407] [5/6/7 Regression] LTO breaks separate overriding of symbol aliases
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78407 Richard Biener changed: What|Removed |Added Keywords||wrong-code CC||hubicka at gcc dot gnu.org Target Milestone|--- |5.5 Summary|LTO breaks separate |[5/6/7 Regression] LTO |overriding of symbol|breaks separate overriding |aliases |of symbol aliases