i386.c (get_thread_pointer): Add tp_mode argument.
authorUros Bizjak <uros@gcc.gnu.org>
Mon, 19 Mar 2012 19:11:03 +0000 (20:11 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 19 Mar 2012 19:11:03 +0000 (20:11 +0100)
commitedd8bb126d91c1ed59cd4b41d1f2fe209005e870
tree025c7cecc98e0bcdb4fdfcb49dcd72b4e14003cf
parentae5a8549b5362781fee08085ce3c0a72247c4fbb
i386.c (get_thread_pointer): Add tp_mode argument.

* config/i386/i386.c (get_thread_pointer): Add tp_mode argument.
Generate ZERO_EXTEND in place if GET_MODE (tp) != tp_mode.
(legitimize_tls_address) <TLS_MODEL_INITIAL_EXEC>: Always generate
DImode UNSPEC_GOTNTPOFF references on TARGET_64BIT.
(ix86_decompose_address): Allow zero extended UNSPEC_TP references.

Revert:
2012-03-13  Uros Bizjak  <ubizjak@gmail.com>

* config/i386/i386.h (TARGET_TLS_INDIRECT_SEG_REFS): New.
* config/i386/i386.c (ix86_decompose_address): Use
TARGET_TLS_INDIRECT_SEG_REFS to prevent %fs:(%reg) addresses.
(legitimize_tls_address): Use TARGET_TLS_INDIRECT_SEG_REFS to load
thread pointer to a register.

Revert:
2012-03-10  H.J. Lu  <hongjiu.lu@intel.com>

* config/i386/i386.c (ix86_decompose_address): Disallow fs:(reg)
if Pmode != word_mode.
(legitimize_tls_address): Call gen_tls_initial_exec_x32 if
Pmode == SImode for TARGET_X32.

* config/i386/i386.md (UNSPEC_TLS_IE_X32): New.
(tls_initial_exec_x32): Likewise.

From-SVN: r185536
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/config/i386/i386.md