https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84658
--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> --- So you can loses the TREE_ADDRESSABLE restriction somewhat in requiring at most one decl to be TREE_ADDRESSABLE - that's the one you need to keep, the others may become aliases. Given TREE_ADDRESSABLE isn't reliable for !TREE_STATIC vars we can't merge any exported decls that way. Consider const int foo1; const int foo2; int *bar(); // in other TU, returns address of foo1 int main () { if (bar() != &foo2) ...; } not sure if we want to do hand-waving saying that we can't possibly have points-to sets mentioning those without seeing the function IL. Well, might be similarly hand-waving as the reference aliasing issue. So we could drop the TREE_STATIC restriction if TREE_ADDRESSABLE is reliable within the current TU.