📄 999-cvs-updates.patch
字号:
(UNSPECV_SET_TP 12) (UNSPECV_RPCC 13)+ (UNSPECV_SETJMPR_ER 14) ; builtin_setjmp_receiver fragment ]) ;; Where necessary, the suffixes _le and _be are used to distinguish between@@ -6764,70 +6765,44 @@ "jmp $31,(%0),0" [(set_attr "type" "ibr")]) -(define_insn "*builtin_setjmp_receiver_er_sl_1"- [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)]- "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF && TARGET_AS_CAN_SUBTRACT_LABELS"- "lda $27,$LSJ%=-%l0($27)\n$LSJ%=:")- -(define_insn "*builtin_setjmp_receiver_er_1"- [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)]- "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"- "br $27,$LSJ%=\n$LSJ%=:"- [(set_attr "type" "ibr")])--(define_split- [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)]- "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF- && prev_nonnote_insn (insn) == operands[0]"- [(const_int 0)]- "-{- emit_note (NULL, NOTE_INSN_DELETED);- DONE;-}")--(define_insn "*builtin_setjmp_receiver_1"+(define_expand "builtin_setjmp_receiver" [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)] "TARGET_ABI_OSF"- "br $27,$LSJ%=\n$LSJ%=:\;ldgp $29,0($27)"- [(set_attr "length" "12")- (set_attr "type" "multi")])+ "") -(define_expand "builtin_setjmp_receiver_er"- [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)+(define_insn_and_split "*builtin_setjmp_receiver_1"+ [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_SETJMPR)]+ "TARGET_ABI_OSF"+{+ if (TARGET_EXPLICIT_RELOCS)+ return "#";+ else+ return "br $27,$LSJ%=\n$LSJ%=:\;ldgp $29,0($27)";+}+ "&& TARGET_EXPLICIT_RELOCS && reload_completed"+ [(unspec_volatile [(match_dup 0)] UNSPECV_SETJMPR_ER) (set (match_dup 1) (unspec_volatile:DI [(match_dup 2) (match_dup 3)] UNSPECV_LDGP1)) (set (match_dup 1) (unspec:DI [(match_dup 1) (match_dup 3)] UNSPEC_LDGP2))]- "" { operands[1] = pic_offset_table_rtx; operands[2] = gen_rtx_REG (Pmode, 27); operands[3] = GEN_INT (alpha_next_sequence_number++);-})+}+ [(set_attr "length" "12")+ (set_attr "type" "multi")]) -(define_expand "builtin_setjmp_receiver"- [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)]- "TARGET_ABI_OSF"-{- if (TARGET_EXPLICIT_RELOCS)- {- emit_insn (gen_builtin_setjmp_receiver_er (operands[0]));- DONE;- }-})+(define_insn "*builtin_setjmp_receiver_er_sl_1"+ [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_SETJMPR_ER)]+ "TARGET_ABI_OSF && TARGET_EXPLICIT_RELOCS && TARGET_AS_CAN_SUBTRACT_LABELS"+ "lda $27,$LSJ%=-%l0($27)\n$LSJ%=:") -(define_expand "exception_receiver_er"- [(set (match_dup 0)- (unspec_volatile:DI [(match_dup 1) (match_dup 2)] UNSPECV_LDGP1))- (set (match_dup 0)- (unspec:DI [(match_dup 0) (match_dup 2)] UNSPEC_LDGP2))]- ""-{- operands[0] = pic_offset_table_rtx;- operands[1] = gen_rtx_REG (Pmode, 26);- operands[2] = GEN_INT (alpha_next_sequence_number++);-})+(define_insn "*builtin_setjmp_receiver_er_1"+ [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_SETJMPR_ER)]+ "TARGET_ABI_OSF && TARGET_EXPLICIT_RELOCS"+ "br $27,$LSJ%=\n$LSJ%=:"+ [(set_attr "type" "ibr")]) (define_expand "exception_receiver" [(unspec_volatile [(match_dup 0)] UNSPECV_EHR)]@@ -6835,28 +6810,38 @@ { if (TARGET_LD_BUGGY_LDGP) operands[0] = alpha_gp_save_rtx ();- else if (TARGET_EXPLICIT_RELOCS)- {- emit_insn (gen_exception_receiver_er ());- DONE;- } else operands[0] = const0_rtx; }) -(define_insn "*exception_receiver_1"- [(unspec_volatile [(const_int 0)] UNSPECV_EHR)]- "! TARGET_LD_BUGGY_LDGP"- "ldgp $29,0($26)"- [(set_attr "length" "8")- (set_attr "type" "multi")])- (define_insn "*exception_receiver_2" [(unspec_volatile [(match_operand:DI 0 "memory_operand" "m")] UNSPECV_EHR)]- "TARGET_LD_BUGGY_LDGP"+ "TARGET_ABI_OSF && TARGET_LD_BUGGY_LDGP" "ldq $29,%0" [(set_attr "type" "ild")]) +(define_insn_and_split "*exception_receiver_1"+ [(unspec_volatile [(const_int 0)] UNSPECV_EHR)]+ "TARGET_ABI_OSF"+{+ if (TARGET_EXPLICIT_RELOCS)+ return "ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*";+ else+ return "ldgp $29,0($26)";+}+ "&& TARGET_EXPLICIT_RELOCS && reload_completed"+ [(set (match_dup 0)+ (unspec_volatile:DI [(match_dup 1) (match_dup 2)] UNSPECV_LDGP1))+ (set (match_dup 0)+ (unspec:DI [(match_dup 0) (match_dup 2)] UNSPEC_LDGP2))]+{+ operands[0] = pic_offset_table_rtx;+ operands[1] = gen_rtx_REG (Pmode, 26);+ operands[2] = GEN_INT (alpha_next_sequence_number++);+}+ [(set_attr "length" "8")+ (set_attr "type" "multi")])+ (define_expand "nonlocal_goto_receiver" [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE) (set (reg:DI 27) (mem:DI (reg:DI 29)))Index: gcc/config/alpha/qrnnd.asm===================================================================RCS file: /cvs/gcc/gcc/gcc/config/alpha/qrnnd.asm,vretrieving revision 1.1retrieving revision 1.1.60.1diff -u -r1.1 -r1.1.60.1--- gcc/gcc/config/alpha/qrnnd.asm 15 Apr 2000 16:34:38 -0000 1.1+++ gcc/gcc/config/alpha/qrnnd.asm 30 Sep 2004 19:36:28 -0000 1.1.60.1@@ -26,6 +26,10 @@ # Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. +#ifdef __ELF__+.section .note.GNU-stack,""+#endif+ .set noreorder .set noat Index: gcc/config/i386/i386-protos.h===================================================================RCS file: /cvs/gcc/gcc/gcc/config/i386/i386-protos.h,vretrieving revision 1.86.2.2retrieving revision 1.86.2.3diff -u -r1.86.2.2 -r1.86.2.3--- gcc/gcc/config/i386/i386-protos.h 8 Jul 2003 19:16:44 -0000 1.86.2.2+++ gcc/gcc/config/i386/i386-protos.h 12 Dec 2004 21:00:44 -0000 1.86.2.3@@ -88,6 +88,8 @@ extern int cmpsi_operand PARAMS ((rtx, enum machine_mode)); extern int long_memory_operand PARAMS ((rtx, enum machine_mode)); extern int aligned_operand PARAMS ((rtx, enum machine_mode));+extern int compare_operator PARAMS ((rtx, enum machine_mode));+extern int flags_reg_operand PARAMS ((rtx, enum machine_mode)); extern enum machine_mode ix86_cc_mode PARAMS ((enum rtx_code, rtx, rtx)); extern int ix86_expand_movstr PARAMS ((rtx, rtx, rtx, rtx));Index: gcc/config/i386/i386.c===================================================================RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.c,vretrieving revision 1.495.2.36retrieving revision 1.495.2.37diff -u -r1.495.2.36 -r1.495.2.37--- gcc/gcc/config/i386/i386.c 18 May 2004 05:07:52 -0000 1.495.2.36+++ gcc/gcc/config/i386/i386.c 12 Dec 2004 21:00:44 -0000 1.495.2.37@@ -3609,6 +3609,20 @@ return ANY_QI_REG_P (op); } +/* Return true if op is an flags register. */++int+flags_reg_operand (op, mode)+ register rtx op;+ enum machine_mode mode;+{+ if (mode != VOIDmode && GET_MODE (op) != mode)+ return 0;+ return (GET_CODE (op) == REG+ && REGNO (op) == FLAGS_REG+ && GET_MODE (op) != VOIDmode);+}+ /* Return true if op is a NON_Q_REGS class register. */ int@@ -3969,6 +3983,14 @@ /* Didn't find one -- this must be an aligned address. */ return 1; }++int+compare_operator (op, mode)+ rtx op;+ enum machine_mode mode ATTRIBUTE_UNUSED;+{+ return GET_CODE (op) == COMPARE;+} /* Return true if the constant is something that can be loaded with a special instruction. Only handle 0.0 and 1.0; others are lessIndex: gcc/config/i386/i386.h===================================================================RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.h,vretrieving revision 1.309.2.11retrieving revision 1.309.2.12diff -u -r1.309.2.11 -r1.309.2.12--- gcc/gcc/config/i386/i386.h 6 Feb 2004 19:43:31 -0000 1.309.2.11+++ gcc/gcc/config/i386/i386.h 12 Dec 2004 21:00:47 -0000 1.309.2.12@@ -3319,6 +3319,7 @@ SYMBOL_REF, LABEL_REF, SUBREG, REG, MEM}}, \ {"nonmemory_no_elim_operand", {CONST_INT, REG, SUBREG}}, \ {"index_register_operand", {SUBREG, REG}}, \+ {"flags_reg_operand", {REG}}, \ {"q_regs_operand", {SUBREG, REG}}, \ {"non_q_regs_operand", {SUBREG, REG}}, \ {"fcmov_comparison_operator", {EQ, NE, LTU, GTU, LEU, GEU, UNORDERED, \@@ -3354,6 +3355,7 @@ {"fp_register_operand", {REG}}, \ {"register_and_not_fp_reg_operand", {REG}}, \ {"vector_move_operand", {CONST_VECTOR, SUBREG, REG, MEM}}, \+ {"compare_operator", {COMPARE}}, /* A list of predicates that do special things with modes, and so should not elicit warnings for VOIDmode match_operand. */Index: gcc/config/i386/i386.md===================================================================RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,vretrieving revision 1.404.2.24retrieving revision 1.404.2.29diff -u -r1.404.2.24 -r1.404.2.29--- gcc/gcc/config/i386/i386.md 28 Apr 2004 17:00:03 -0000 1.404.2.24+++ gcc/gcc/config/i386/i386.md 23 Jan 2005 05:15:59 -0000 1.404.2.29@@ -1188,10 +1188,9 @@ "" "xchg{l}\t%1, %0" [(set_attr "type" "imov")+ (set_attr "mode" "SI") (set_attr "pent_pair" "np") (set_attr "athlon_decode" "vector")- (set_attr "mode" "SI")- (set_attr "modrm" "0") (set_attr "ppro_uops" "few")]) (define_expand "movhi"@@ -1304,12 +1303,12 @@ (match_operand:HI 1 "register_operand" "+r")) (set (match_dup 1) (match_dup 0))]- "TARGET_PARTIAL_REG_STALL"- "xchg{w}\t%1, %0"+ "!TARGET_PARTIAL_REG_STALL || optimize_size"+ "xchg{l}\t%k1, %k0" [(set_attr "type" "imov")+ (set_attr "mode" "SI") (set_attr "pent_pair" "np")- (set_attr "mode" "HI")- (set_attr "modrm" "0")+ (set_attr "athlon_decode" "vector") (set_attr "ppro_uops" "few")]) (define_insn "*swaphi_2"@@ -1317,12 +1316,12 @@ (match_operand:HI 1 "register_operand" "+r")) (set (match_dup 1) (match_dup 0))]- "! TARGET_PARTIAL_REG_STALL"- "xchg{l}\t%k1, %k0"+ "TARGET_PARTIAL_REG_STALL"+ "xchg{w}\t%1, %0" [(set_attr "type" "imov")+ (set_attr "mode" "HI") (set_attr "pent_pair" "np")- (set_attr "mode" "SI")- (set_attr "modrm" "0")+ (set_attr "athlon_decode" "vector") (set_attr "ppro_uops" "few")]) (define_expand "movstricthi"@@ -1470,17 +1469,30 @@ DONE; }) -(define_insn "*swapqi"+(define_insn "*swapqi_1" [(set (match_operand:QI 0 "register_operand" "+r") (match_operand:QI 1 "register_operand" "+r")) (set (match_dup 1) (match_dup 0))]- ""- "xchg{b}\t%1, %0"+ "!TARGET_PARTIAL_REG_STALL || optimize_size"+ "xchg{l}\t%k1, %k0" [(set_attr "type" "imov")+ (set_attr "mode" "SI") (set_attr "pent_pair" "np")+ (set_attr "athlon_decode" "vector")+ (set_attr "ppro_uops" "few")])++(define_insn "*swapqi_2"+ [(set (match_operand:QI 0 "register_operand" "+q")+ (match_operand:QI 1 "register_operand" "+q"))+ (set (match_dup 1)+ (match_dup 0))]+ "TARGET_PARTIAL_REG_STALL"+ "xchg{b}\t%1, %0"+ [(set_attr "type" "imov") (set_attr "mode" "QI")- (set_attr "modrm" "0")+ (set_attr "pent_pair" "np")+ (set_attr "athlon_decode" "vector") (set_attr "ppro_uops" "few")]) (define_expand "movstrictqi"@@ -1987,13 +1999,11 @@ "TARGET_64BIT" "xchg{q}\t%1, %0" [(set_attr "type" "imov")+ (set_attr "mode" "DI") (set_attr "pent_pair" "np") (set_attr "athlon_decode" "vector")- (set_attr "mode" "DI")- (set_attr "modrm" "0") (set_attr "ppro_uops" "few")]) - (define_expand "movsf" [(set (match_operand:SF 0 "nonimmediate_operand" "") (match_operand:SF 1 "general_operand" ""))]@@ -7559,17 +7569,21 @@ "" "") -(define_insn "*testqi_1"+(define_insn "*testqi_1_maybe_si" [(set (reg 17)- (compare (and:QI (match_operand:QI 0 "nonimmediate_operand" "%*a,q,qm,r")- (match_operand:QI 1 "nonmemory_operand" "n,n,qn,n"))- (const_int 0)))]- "ix86_match_ccmode (insn, CCNOmode)"+ (compare+ (and:QI+ (match_operand:QI 0 "nonimmediate_operand" "%*a,q,qm,r")+ (match_operand:QI 1 "nonmemory_operand" "n,n,qn,n"))+ (const_int 0)))]+ "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)+ && ix86_match_ccmode (insn,+ GET_CODE (operands[1]) == CONST_INT+ && INTVAL (operands[1]) >= 0 ? CCNOm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -