[Bug target/64113] Gcc on Alpha: Error: No lda !gpdisp!282 was found
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Dec 1 19:49:00 GMT 2014
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.
More information about the Gcc-bugs
mailing list