[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