From a37216cf5a51312989deb81caed6d5eedca843e0 Mon Sep 17 00:00:00 2001 From: uros Date: Sun, 19 Sep 2010 12:42:32 +0000 Subject: [PATCH] * config/i386/i386-protos.h (split_double_mode): New prototype. (split_di, split_ti): Remove prototypes. * config/i386/i386.c (split_double_mode): New function. (split_di, split_ti): Remove. (ix86_expand_branch): Use split_double_mode. (ix86_split_to_parts): Ditto. (ix86_split_ashl): Ditto. (ix86_split_ashr): Ditto. (ix86_split_lshr): Ditto. (ix86_force_to_memory): Ditto. * config/i386/i386.md: Use split_double_mode in double-mode splitters. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164413 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 89 ++++++++++++++++----------------- gcc/config/i386/i386-protos.h | 3 +- gcc/config/i386/i386.c | 111 ++++++++++++++++++------------------------ gcc/config/i386/i386.md | 34 ++++++------- gcc/testsuite/ChangeLog | 2 +- 5 files changed, 109 insertions(+), 130 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 125840938a9..60cd308e294 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2010-09-19 Uros Bizjak + + * config/i386/i386-protos.h (split_double_mode): New prototype. + (split_di, split_ti): Remove prototypes. + * config/i386/i386.c (split_double_mode): New function. + (split_di, split_ti): Remove. + (ix86_expand_branch): Use split_double_mode. + (ix86_split_to_parts): Ditto. + (ix86_split_ashl): Ditto. + (ix86_split_ashr): Ditto. + (ix86_split_lshr): Ditto. + (ix86_force_to_memory): Ditto. + * config/i386/i386.md: Use split_double_mode in double-mode splitters. + 2010-09-18 Jan Hubicka PR tree-optimization/45453 @@ -16,7 +30,8 @@ (canonicalize_constructor_val): Use it. (get_symbol_constant_value): Be reaqdy for canonicalize_constructor_val returning NULL. - (gimple_fold_obj_type_ref_known_binfo): Use static_object_in_other_unit_p. + (gimple_fold_obj_type_ref_known_binfo): Use + static_object_in_other_unit_p. 2010-09-18 Richard Guenther @@ -35,8 +50,7 @@ 2010-09-18 Richard Guenther PR tree-optimization/45709 - * tree-inline.c (copy_phis_for_bb): Fixup new_edge when - we splitted it. + * tree-inline.c (copy_phis_for_bb): Fixup new_edge when we splitted it. 2010-09-17 Sebastian Pop @@ -48,7 +62,9 @@ 2010-09-17 Sebastian Pop - Revert commit: 2009-12-16 Ben Elliston + Revert: + 2009-12-16 Ben Elliston + * tree-data-ref.c (dot_rdg_1): Added back. (dot_rdg): Same. Added "#if 0" around system call. @@ -82,8 +98,7 @@ passed an invalid value, print an error instead of ICEing. (valid_psw_flag): New. (rx_expand_builtin): Call it for setpsw/clrpsw. - (rx_expand_builtin_mvtipl): Pass an integer to IN_RANGE, not an - RTX. + (rx_expand_builtin_mvtipl): Pass an integer to IN_RANGE, not an RTX. * config/rx/rx.md (bitclr): Don't mark the output as early-clobber. (bitclr_in_memory): Likewise. @@ -159,8 +174,7 @@ (do_spec): Remove code concerning combine. (main): Likewise. * doc/invoke.texi: Remove traces of -combine. - * lto-wrapper.c (run_gcc): Do not pass -combine to the compiler - driver. + * lto-wrapper.c (run_gcc): Do not pass -combine to the compiler driver. 2010-09-17 Richard Guenther @@ -331,8 +345,7 @@ alpha_override_options. * config/alpha/alpha-protos.h (override_options): Remove. * config/alpha/alpha.c (override_options): Rename to - alpha_option_override. Call SUBTARGET_OVERRIDE_OPTIONS. Make - static. + alpha_option_override. Call SUBTARGET_OVERRIDE_OPTIONS. Make static. (TARGET_OPTION_OVERRIDE): Define. * config/alpha/alpha.h (OVERRIDE_OPTIONS): Remove. * config/alpha/vms.h (SUBTARGET_OVERRIDE_OPTIONS): Define instead @@ -347,14 +360,12 @@ (arm_override_options): Rename to arm_option_override. Make static. Call SUBTARGET_OVERRIDE_OPTIONS. * config/arm/arm.h (OVERRIDE_OPTIONS): Remove. - * config/arm/arm.md: Update comment referring to - arm_override_options. + * config/arm/arm.md: Update comment referring to arm_override_options. * config/arm/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define instead of OVERRIDE_OPTIONS. * config/avr/avr-protos.h (avr_override_options): Remove. * config/avr/avr.c (TARGET_OPTION_OVERRIDE): Define. - (avr_override_options): Rename to avr_option_override. Make - static. + (avr_override_options): Rename to avr_option_override. Make static. * config/avr/avr.h (OVERRIDE_OPTIONS): Remove. * config/bfin/bfin-protos.h (override_options): Remove (twice). * config/bfin/bfin.c (override_options): Rename to @@ -363,13 +374,11 @@ * config/bfin/bfin.h (OVERRIDE_OPTIONS): Remove. * config/cris/cris-protos.h (cris_override_options): Remove. * config/cris/cris.c (TARGET_OPTION_OVERRIDE): Define. - (cris_override_options): Rename to cris_option_override. Make - static. + (cris_override_options): Rename to cris_option_override. Make static. * config/cris/cris.h (OVERRIDE_OPTIONS): Remove. * config/frv/frv-protos.h (frv_override_options): Remove. * config/frv/frv.c (TARGET_OPTION_OVERRIDE): Define. - (frv_override_options): Rename to frv_option_override. Make - static. + (frv_override_options): Rename to frv_option_override. Make static. * config/frv/frv.h (OVERRIDE_OPTIONS): Remove. * config/h8300/h8300-protos.h (h8300_init_once): Remove. * config/h8300/h8300.c (h8300_init_once): Rename to @@ -383,26 +392,22 @@ (ix86_option_override): New. (TARGET_OPTION_OVERRIDE): Define. * config/i386/i386.h (OVERRIDE_OPTION): Remove. - * config/i386/linux64.h (DEFAULT_PCC_STRUCT_RETURN): Update - comment. + * config/i386/linux64.h (DEFAULT_PCC_STRUCT_RETURN): Update comment. * config/ia64/ia64.c (ia64_file_start): Update comment referring to ia64_override_options. * config/iq2000/iq2000-protos.h (override_options): Remove. * config/iq2000/iq2000.c (TARGET_OPTION_OVERRIDE): Define. - (override_options): Rename to iq2000_option_override. Make - static. + (override_options): Rename to iq2000_option_override. Make static. * config/iq2000/iq2000.h (OVERRIDE_OPTIONS): Remove. * config/lm32/lm32-protos.h (lm32_override_options): Remove. * config/lm32/lm32.c (TARGET_OPTION_OVERRIDE): Define. - (lm32_override_options): Rename to lm32_option_override. Make - static. + (lm32_override_options): Rename to lm32_option_override. Make static. * config/lm32/lm32.h (OVERRIDE_OPTIONS): Remove. * config/m32r/m32r.c (TARGET_OPTION_OVERRIDE): Define. (m32r_option_override): New. (m32r_init): Update comment. * config/m32r/m32r.h (OVERRIDE_OPTIONS): Remove. - * config/m68hc11/m68hc11-protos.h (m68hc11_override_options): - Remove. + * config/m68hc11/m68hc11-protos.h (m68hc11_override_options): Remove. * config/m68hc11/m68hc11.c (TARGET_OPTION_OVERRIDE): Define. (m68hc11_override_options): Rename to m68hc11_option_override. Make static. Return void. @@ -418,16 +423,13 @@ * config/mcore/mcore.h (OVERRIDE_OPTIONS): Remove. * config/mep/mep-protos.h (mep_override_options): Remove. * config/mep/mep.c (TARGET_OPTION_OVERRIDE): Define. - (mep_override_options): Rename to mep_option_override. Make - static. + (mep_override_options): Rename to mep_option_override. Make static. * config/mep/mep.h (OVERRIDE_OPTIONS): Remove. * config/mmix/mmix-protos.h (mmix_override_options): Remove. * config/mmix/mmix.c (TARGET_OPTION_OVERRIDE): Define. - (mmix_override_options): Rename to mmix_option_override. Make - static. + (mmix_override_options): Rename to mmix_option_override. Make static. * config/mmix/mmix.h (OVERRIDE_OPTIONS): Remove. - * config/mn10300/mn10300-protos.h (mn10300_override_options): - Remove. + * config/mn10300/mn10300-protos.h (mn10300_override_options): Remove. * config/mn10300/mn10300.c (TARGET_OPTION_OVERRIDE): Define. (mn10300_override_options): Rename to mn10300_option_override. Make static. @@ -444,16 +446,11 @@ Make static. Update comment and definition of TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE. * config/picochip/picochip.h (OVERRIDE_OPTIONS): Remove. - * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Update - comment. - * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Update - comment. - * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Update - comment. - * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Update - comment. - * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Update - comment. + * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment. + * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment. + * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment. + * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment. + * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment. * config/rs6000/linux64.h (OPTION_TARGET_CPU_DEFAULT): Define instead of OVERRIDE_OPTIONS. * config/rs6000/rs6000-modes.def: Update comment referring to @@ -466,8 +463,7 @@ (rs6000_option_override): New. * config/rs6000/rs6000.h (OPTION_TARGET_CPU_DEFAULT): Define instead of OVERRIDE_OPTIONS. - * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Update - comment. + * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment. * config/s390/s390-protos.h (override_options): Remove. * config/s390/s390.c (override_options): Rename to s390_option_override. Make static. @@ -510,8 +506,7 @@ * config/vxworks.h: Update comment referring to OVERRIDE_OPTIONS. * config/xtensa/xtensa-protos.h (override_options): Remove. * config/xtensa/xtensa.c (TARGET_OPTION_OVERRIDE): Define. - (override_options): Rename to xtensa_option_override. Make - static. + (override_options): Rename to xtensa_option_override. Make static. * config/xtensa/xtensa.h (OVERRIDE_OPTIONS): Remove. 2010-09-16 Richard Guenther @@ -5486,7 +5481,7 @@ PR target/45142 * config/i386/sse.md (vec_set_0): Do not set mode attribute for alternative 2. - (vec_set_0 splitter): Use SSEMODE4S mode iterator to also + (vec_set_0 splitter): Use SSEMODE4S mode iterator to also split V4SI operands. 2010-08-01 Anatoly Sokolov diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h index 909adb9c2b1..fd31e9917f5 100644 --- a/gcc/config/i386/i386-protos.h +++ b/gcc/config/i386/i386-protos.h @@ -64,8 +64,7 @@ extern bool legitimate_pic_address_disp_p (rtx); extern void print_reg (rtx, int, FILE*); extern void ix86_print_operand (FILE *, rtx, int); -extern void split_di (rtx[], int, rtx[], rtx[]); -extern void split_ti (rtx[], int, rtx[], rtx[]); +extern void split_double_mode (enum machine_mode, rtx[], int, rtx[], rtx[]); extern const char *output_set_got (rtx, rtx); extern const char *output_387_binary_op (rtx, rtx*); diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index d9f92371e68..9644a64f865 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -13248,15 +13248,33 @@ i386_asm_output_addr_const_extra (FILE *file, rtx x) return true; } -/* Split one or more DImode RTL references into pairs of SImode +/* Split one or more double-mode RTL references into pairs of half-mode references. The RTL can be REG, offsettable MEM, integer constant, or - CONST_DOUBLE. "operands" is a pointer to an array of DImode RTL to + CONST_DOUBLE. "operands" is a pointer to an array of double-mode RTLs to split and "num" is its length. lo_half and hi_half are output arrays that parallel "operands". */ void -split_di (rtx operands[], int num, rtx lo_half[], rtx hi_half[]) +split_double_mode (enum machine_mode mode, rtx operands[], + int num, rtx lo_half[], rtx hi_half[]) { + enum machine_mode half_mode; + unsigned int byte; + + switch (mode) + { + case TImode: + half_mode = DImode; + break; + case DImode: + half_mode = SImode; + break; + default: + gcc_unreachable (); + } + + byte = GET_MODE_SIZE (half_mode); + while (num--) { rtx op = operands[num]; @@ -13265,44 +13283,17 @@ split_di (rtx operands[], int num, rtx lo_half[], rtx hi_half[]) but we still have to handle it. */ if (MEM_P (op)) { - lo_half[num] = adjust_address (op, SImode, 0); - hi_half[num] = adjust_address (op, SImode, 4); + lo_half[num] = adjust_address (op, half_mode, 0); + hi_half[num] = adjust_address (op, half_mode, byte); } else { - lo_half[num] = simplify_gen_subreg (SImode, op, + lo_half[num] = simplify_gen_subreg (half_mode, op, GET_MODE (op) == VOIDmode - ? DImode : GET_MODE (op), 0); - hi_half[num] = simplify_gen_subreg (SImode, op, + ? mode : GET_MODE (op), 0); + hi_half[num] = simplify_gen_subreg (half_mode, op, GET_MODE (op) == VOIDmode - ? DImode : GET_MODE (op), 4); - } - } -} -/* Split one or more TImode RTL references into pairs of DImode - references. The RTL can be REG, offsettable MEM, integer constant, or - CONST_DOUBLE. "operands" is a pointer to an array of DImode RTL to - split and "num" is its length. lo_half and hi_half are output arrays - that parallel "operands". */ - -void -split_ti (rtx operands[], int num, rtx lo_half[], rtx hi_half[]) -{ - while (num--) - { - rtx op = operands[num]; - - /* simplify_subreg refuse to split volatile memory addresses, but we - still have to handle it. */ - if (MEM_P (op)) - { - lo_half[num] = adjust_address (op, DImode, 0); - hi_half[num] = adjust_address (op, DImode, 8); - } - else - { - lo_half[num] = simplify_gen_subreg (DImode, op, TImode, 0); - hi_half[num] = simplify_gen_subreg (DImode, op, TImode, 8); + ? mode : GET_MODE (op), byte); } } } @@ -16273,9 +16264,10 @@ ix86_expand_compare (enum rtx_code code, rtx op0, rtx op1) void ix86_expand_branch (enum rtx_code code, rtx op0, rtx op1, rtx label) { + enum machine_mode mode = GET_MODE (op0); rtx tmp; - switch (GET_MODE (op0)) + switch (mode) { case SFmode: case DFmode: @@ -16306,18 +16298,11 @@ ix86_expand_branch (enum rtx_code code, rtx op0, rtx op1, rtx label) tmp = op0, op0 = op1, op1 = tmp; code = swap_condition (code); } - if (GET_MODE (op0) == DImode) - { - split_di (&op0, 1, lo+0, hi+0); - split_di (&op1, 1, lo+1, hi+1); - submode = SImode; - } - else - { - split_ti (&op0, 1, lo+0, hi+0); - split_ti (&op1, 1, lo+1, hi+1); - submode = DImode; - } + + split_double_mode (mode, &op0, 1, lo+0, hi+0); + split_double_mode (mode, &op1, 1, lo+1, hi+1); + + submode = mode == DImode ? SImode : DImode; /* When comparing for equality, we can use (hi0^hi1)|(lo0^lo1) to avoid two branches. This costs one extra insn, so disable when @@ -16474,7 +16459,7 @@ ix86_expand_carry_flag_compare (enum rtx_code code, rtx op0, rtx op1, rtx *pop) enum machine_mode mode = GET_MODE (op0) != VOIDmode ? GET_MODE (op0) : GET_MODE (op1); - /* Do not handle DImode compares that go through special path. */ + /* Do not handle double-mode compares that go through special path. */ if (mode == (TARGET_64BIT ? TImode : DImode)) return false; @@ -17686,8 +17671,8 @@ ix86_expand_int_addcc (rtx operands[]) } -/* Split operands 0 and 1 into SImode parts. Similar to split_di, but - works for floating pointer parameters and nonoffsetable memories. +/* Split operands 0 and 1 into half-mode parts. Similar to split_double_mode, + but works for floating pointer parameters and nonoffsetable memories. For pushes, it returns just stack offsets; the values will be saved in the right order. Maximally three parts are generated. */ @@ -17740,7 +17725,7 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode) if (!TARGET_64BIT) { if (mode == DImode) - split_di (&operand, 1, &parts[0], &parts[1]); + split_double_mode (mode, &operand, 1, &parts[0], &parts[1]); else { int i; @@ -17791,7 +17776,7 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode) else { if (mode == TImode) - split_ti (&operand, 1, &parts[0], &parts[1]); + split_double_mode (mode, &operand, 1, &parts[0], &parts[1]); if (mode == XFmode || mode == TFmode) { enum machine_mode upper_mode = mode==XFmode ? SImode : DImode; @@ -17862,7 +17847,7 @@ ix86_split_long_move (rtx operands[]) /* The DFmode expanders may ask us to move double. For 64bit target this is single move. By hiding the fact here we simplify i386.md splitters. */ - if (GET_MODE_SIZE (GET_MODE (operands[0])) == 8 && TARGET_64BIT) + if (TARGET_64BIT && GET_MODE_SIZE (GET_MODE (operands[0])) == 8) { /* Optimize constant pool reference to immediates. This is used by fp moves, that force all constants to memory to allow combining. */ @@ -18104,7 +18089,7 @@ ix86_split_ashl (rtx *operands, rtx scratch, enum machine_mode mode) if (CONST_INT_P (operands[2])) { - (mode == DImode ? split_di : split_ti) (operands, 2, low, high); + split_double_mode (mode, operands, 2, low, high); count = INTVAL (operands[2]) & (single_width * 2 - 1); if (count >= single_width) @@ -18127,7 +18112,7 @@ ix86_split_ashl (rtx *operands, rtx scratch, enum machine_mode mode) return; } - (mode == DImode ? split_di : split_ti) (operands, 1, low, high); + split_double_mode (mode, operands, 1, low, high); if (operands[1] == const1_rtx) { @@ -18204,7 +18189,7 @@ ix86_split_ashl (rtx *operands, rtx scratch, enum machine_mode mode) if (!rtx_equal_p (operands[0], operands[1])) emit_move_insn (operands[0], operands[1]); - (mode == DImode ? split_di : split_ti) (operands, 1, low, high); + split_double_mode (mode, operands, 1, low, high); emit_insn ((mode == DImode ? gen_x86_shld : gen_x86_64_shld) (high[0], low[0], operands[2])); @@ -18237,7 +18222,7 @@ ix86_split_ashr (rtx *operands, rtx scratch, enum machine_mode mode) if (CONST_INT_P (operands[2])) { - (mode == DImode ? split_di : split_ti) (operands, 2, low, high); + split_double_mode (mode, operands, 2, low, high); count = INTVAL (operands[2]) & (single_width * 2 - 1); if (count == single_width * 2 - 1) @@ -18281,7 +18266,7 @@ ix86_split_ashr (rtx *operands, rtx scratch, enum machine_mode mode) if (!rtx_equal_p (operands[0], operands[1])) emit_move_insn (operands[0], operands[1]); - (mode == DImode ? split_di : split_ti) (operands, 1, low, high); + split_double_mode (mode, operands, 1, low, high); emit_insn ((mode == DImode ? gen_x86_shrd @@ -18318,7 +18303,7 @@ ix86_split_lshr (rtx *operands, rtx scratch, enum machine_mode mode) if (CONST_INT_P (operands[2])) { - (mode == DImode ? split_di : split_ti) (operands, 2, low, high); + split_double_mode (mode, operands, 2, low, high); count = INTVAL (operands[2]) & (single_width * 2 - 1); if (count >= single_width) @@ -18349,7 +18334,7 @@ ix86_split_lshr (rtx *operands, rtx scratch, enum machine_mode mode) if (!rtx_equal_p (operands[0], operands[1])) emit_move_insn (operands[0], operands[1]); - (mode == DImode ? split_di : split_ti) (operands, 1, low, high); + split_double_mode (mode, operands, 1, low, high); emit_insn ((mode == DImode ? gen_x86_shrd @@ -26144,7 +26129,7 @@ ix86_force_to_memory (enum machine_mode mode, rtx operand) case DImode: { rtx operands[2]; - split_di (&operand, 1, operands, operands + 1); + split_double_mode (mode, &operand, 1, operands, operands + 1); emit_insn ( gen_rtx_SET (VOIDmode, gen_rtx_MEM (SImode, diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 4ccd932a840..e3161bb7e66 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1640,7 +1640,7 @@ [(set (match_dup 0) (match_dup 1)) (set (match_dup 2) (match_dup 3))] { - split_di (&operands[1], 1, &operands[2], &operands[3]); + split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]); operands[1] = gen_lowpart (DImode, operands[2]); operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx, @@ -1657,7 +1657,7 @@ [(set (match_dup 0) (match_dup 1)) (set (match_dup 2) (match_dup 3))] { - split_di (&operands[1], 1, &operands[2], &operands[3]); + split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]); operands[1] = gen_lowpart (DImode, operands[2]); operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx, @@ -2050,7 +2050,7 @@ && !x86_64_immediate_operand (operands[1], DImode) && 1" [(set (match_dup 2) (match_dup 3)) (set (match_dup 4) (match_dup 5))] - "split_di (&operands[0], 2, &operands[2], &operands[4]);") + "split_double_mode (DImode, &operands[0], 2, &operands[2], &operands[4]);") (define_split [(set (match_operand:DI 0 "memory_operand" "") @@ -2061,7 +2061,7 @@ && !x86_64_immediate_operand (operands[1], DImode)" [(set (match_dup 2) (match_dup 3)) (set (match_dup 4) (match_dup 5))] - "split_di (&operands[0], 2, &operands[2], &operands[4]);") + "split_double_mode (DImode, &operands[0], 2, &operands[2], &operands[4]);") (define_insn "*movdi_internal" [(set (match_operand:DI 0 "nonimmediate_operand" @@ -3598,7 +3598,7 @@ (zero_extend:DI (match_dup 0)))] "TARGET_64BIT" [(set (match_dup 4) (const_int 0))] - "split_di (&operands[0], 1, &operands[3], &operands[4]);") + "split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);") ;; %%% Kill me once multi-word ops are sane. (define_insn "zero_extendsidi2_1" @@ -3626,7 +3626,7 @@ "!TARGET_64BIT && reload_completed && true_regnum (operands[0]) == true_regnum (operands[1])" [(set (match_dup 4) (const_int 0))] - "split_di (&operands[0], 1, &operands[3], &operands[4]);") + "split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);") (define_split [(set (match_operand:DI 0 "nonimmediate_operand" "") @@ -3636,7 +3636,7 @@ && !(MMX_REG_P (operands[0]) || SSE_REG_P (operands[0]))" [(set (match_dup 3) (match_dup 1)) (set (match_dup 4) (const_int 0))] - "split_di (&operands[0], 1, &operands[3], &operands[4]);") + "split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);") (define_insn "zero_extenddi2" [(set (match_operand:DI 0 "register_operand" "=r") @@ -3801,7 +3801,7 @@ (parallel [(set (match_dup 1) (ashiftrt:SI (match_dup 1) (const_int 31))) (clobber (reg:CC FLAGS_REG))]) (set (match_dup 4) (match_dup 1))] - "split_di (&operands[0], 1, &operands[3], &operands[4]);") + "split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);") ;; Extend to memory case when source register does not die. (define_split @@ -3812,7 +3812,7 @@ "reload_completed" [(const_int 0)] { - split_di (&operands[0], 1, &operands[3], &operands[4]); + split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]); emit_move_insn (operands[3], operands[1]); @@ -3842,7 +3842,7 @@ "reload_completed" [(const_int 0)] { - split_di (&operands[0], 1, &operands[3], &operands[4]); + split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]); if (true_regnum (operands[3]) != true_regnum (operands[1])) emit_move_insn (operands[3], operands[1]); @@ -5570,7 +5570,7 @@ (ltu:DWIH (reg:CC FLAGS_REG) (const_int 0)) (match_dup 5)))) (clobber (reg:CC FLAGS_REG))])] - "split_ (&operands[0], 3, &operands[0], &operands[3]);") + "split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]);") (define_insn "*add3_cc" [(set (reg:CC FLAGS_REG) @@ -6600,7 +6600,7 @@ (ltu:DWIH (reg:CC FLAGS_REG) (const_int 0)) (match_dup 5)))) (clobber (reg:CC FLAGS_REG))])] - "split_ (&operands[0], 3, &operands[0], &operands[3]);") + "split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]);") (define_insn "*sub_1" [(set (match_operand:SWI 0 "nonimmediate_operand" "=m,") @@ -8593,7 +8593,7 @@ [(set (match_dup 2) (neg:DWIH (match_dup 2))) (clobber (reg:CC FLAGS_REG))])] - "split_ (&operands[0], 2, &operands[0], &operands[2]);") + "split_double_mode (mode, &operands[0], 2, &operands[0], &operands[2]);") (define_insn "*neg2_1" [(set (match_operand:SWI 0 "nonimmediate_operand" "=m") @@ -10072,7 +10072,7 @@ { operands[6] = GEN_INT (GET_MODE_BITSIZE (mode)); - split_ (&operands[0], 1, &operands[4], &operands[5]); + split_double_mode (mode, &operands[0], 1, &operands[4], &operands[5]); }) (define_insn_and_split "ix86_rotr3_doubleword" @@ -10100,7 +10100,7 @@ { operands[6] = GEN_INT (GET_MODE_BITSIZE (mode)); - split_ (&operands[0], 1, &operands[4], &operands[5]); + split_double_mode (mode, &operands[0], 1, &operands[4], &operands[5]); }) (define_insn "*3_1" @@ -16055,8 +16055,8 @@ (match_dup 7) (match_dup 8)))] { - split_di (&operands[2], 2, &operands[5], &operands[7]); - split_di (&operands[0], 1, &operands[2], &operands[3]); + split_double_mode (DImode, &operands[2], 2, &operands[5], &operands[7]); + split_double_mode (DImode, &operands[0], 1, &operands[2], &operands[3]); }) (define_insn "*movxfcc_1" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 805e4b89357..9deaf42652a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -66,7 +66,7 @@ 2010-09-17 Nicola Pero - PR testsuite/45692 + PR testsuite/45692 * objc/execute/exceptions/throw-nil.m: Run the test only with the GNU runtime. -- 2.11.0