* config/i386/i386.c (get_thread_pointer): Add tp_mode argument.
commit0a722f4b03fb866521a792686a5cadc5591401dc
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Mar 2012 19:11:03 +0000 (19 19:11 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Mar 2012 19:11:03 +0000 (19 19:11 +0000)
tree025c7cecc98e0bcdb4fdfcb49dcd72b4e14003cf
parent5efe717c68ed5451a9eff41d550a695263946ca2
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185536 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/config/i386/i386.md