https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67051
Bug ID: 67051 Summary: symtab_node::equal_address_to too conservative? Product: gcc Version: 6.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: ipa Assignee: unassigned at gcc dot gnu.org Reporter: rguenth at gcc dot gnu.org CC: hubicka at gcc dot gnu.org Target Milestone: --- For int i; int j; symtab_node::equal_address_to says "no" to &i == &j. This seems to be because i and j are 'common' and decl_binds_to_current_def_p returns false. But I don't see how a valid testcase could alias i and j in another translation unit. Yes, they can be interposed. Probably this is /* TODO: Alias oracle basically assume that addresses of global variables are different unless they are declared as alias of one to another. We probably should be consistent and use this fact here, too, and update alias oracle to use this predicate. */ ? This makes us fail to optimize conditionals like &i != &j