This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
gcc/gcc ChangeLog cse.c config/i386/i386.c con ...
- From: jakub at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: 20 May 2003 13:14:59 -0000
- Subject: gcc/gcc ChangeLog cse.c config/i386/i386.c con ...
CVSROOT: /cvs/gcc
Module name: gcc
Branch: gcc-3_3-rhl-branch
Changes by: jakub@gcc.gnu.org 2003-05-20 13:14:59
Modified files:
gcc : ChangeLog cse.c
gcc/config/i386: i386.c i386.h i386.md linux.h linux64.h
Log message:
* config/i386/i386.c (struct ix86_address): Add seg.
(no_seg_address_operand): New function.
(ix86_decompose_address): Support segment overrides.
(ix86_address_cost): Take segment overrides into account.
(legitimate_address_p): Remove UNSPEC_TP special casing.
(get_thread_pointer): Add to_reg argument.
(legitimize_address): Move TLS emit code...
(legitimize_tls_address): ...here. New function.
(print_operand_address): Handle segment overrides.
(ix86_expand_move): Use legitimize_tls_address.
* config/i386/i386.h (MASK_SVR3_SHLIB, TARGET_SVR3_SHLIB): Remove.
(MASK_TLS_DIRECT_SEG_REFS, TARGET_TLS_DIRECT_SEG_REFS): Define.
(TARGET_SWITCHES): Remove -msvr3-shlib, add
TARGET_TLS_DIRECT_SEG_REFS_DEFAULT to default.
(TARGET_TLS_DIRECT_SEG_REFS_DEFAULT): Define to 0 if not defined.
(RTX_COSTS): Handle segment overrides.
(PREDICATE_CODES): Add no_seg_address_operand.
* config/i386/i386.md (UNSPEC_TP_MEM): Define.
(lea_1, lea_1_rex64, lea_1_zext, lea_2_rex64): Use
no_seg_address_operand.
(load_tp_si, load_tp_di, add_tp_si, add_tp_di): New insns.
* config/i386/linux.h (TARGET_TLS_DIRECT_SEG_REFS_DEFAULT): Define.
* config/i386/linux64.h (TARGET_TLS_DIRECT_SEG_REFS_DEFAULT): Define.
* cse.c (find_best_addr): Consider binary operators even if second
argument is not CONST_INT.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.16114.2.523.2.17&r2=1.16114.2.523.2.18
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cse.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.244.2.2&r2=1.244.2.2.2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.495.2.20.4.2&r2=1.495.2.20.4.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.h.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.309.2.6&r2=1.309.2.6.2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.md.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.404.2.14.4.1&r2=1.404.2.14.4.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/linux.h.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.42&r2=1.42.10.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/linux64.h.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.18.4.2&r2=1.18.4.2.4.1