https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64113
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2014-12-01 Assignee|unassigned at gcc dot gnu.org |ubizjak at gmail dot com Target Milestone|--- |4.9.3 Ever confirmed|0 |1 --- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> --- This is actually a target problem, the quoted patch just exposed it. The problem is in the way call to __tls_get_addr is split. Currently, when the gp register is not used, life analysis removes only UNSPEC_LDGP2 - the last part of the sequence. This call has to be split with a peephole2, in the same way other calls are handled. alpha.md has the comment that says: ;; We must use peep2 instead of a split because we need accurate life ;; information for $gp. Consider the case of { bar(); while (1); }. I have the patch in testing.