+2010-09-19 Uros Bizjak <ubizjak@gmail.com>
+
+ * 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 <jh@suse.cz>
PR tree-optimization/45453
(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 <rguenther@suse.de>
2010-09-18 Richard Guenther <rguenther@suse.de>
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 <sebastian.pop@amd.com>
2010-09-17 Sebastian Pop <sebastian.pop@amd.com>
- Revert commit: 2009-12-16 Ben Elliston <bje@au.ibm.com>
+ Revert:
+ 2009-12-16 Ben Elliston <bje@au.ibm.com>
+
* tree-data-ref.c (dot_rdg_1): Added back.
(dot_rdg): Same. Added "#if 0" around system call.
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.
(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 <rguenther@suse.de>
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
(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
* 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
(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.
* 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.
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
(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.
* 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 <rguenther@suse.de>
PR target/45142
* config/i386/sse.md (vec_set<mode>_0): Do not set mode attribute for
alternative 2.
- (vec_set<moode>_0 splitter): Use SSEMODE4S mode iterator to also
+ (vec_set<mode>_0 splitter): Use SSEMODE4S mode iterator to also
split V4SI operands.
2010-08-01 Anatoly Sokolov <aesok@post.ru>
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*);
return true;
}
\f
-/* 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];
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);
}
}
}
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:
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
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;
}
-/* 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. */
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;
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;
/* 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. */
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)
return;
}
- (mode == DImode ? split_di : split_ti) (operands, 1, low, high);
+ split_double_mode (mode, operands, 1, low, high);
if (operands[1] == const1_rtx)
{
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]));
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)
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
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)
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
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,
[(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,
[(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,
&& !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" "")
&& !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"
(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"
"!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" "")
&& !(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_extend<mode>di2"
[(set (match_operand:DI 0 "register_operand" "=r")
(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
"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]);
"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]);
(ltu:DWIH (reg:CC FLAGS_REG) (const_int 0))
(match_dup 5))))
(clobber (reg:CC FLAGS_REG))])]
- "split_<dwi> (&operands[0], 3, &operands[0], &operands[3]);")
+ "split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);")
(define_insn "*add<mode>3_cc"
[(set (reg:CC FLAGS_REG)
(ltu:DWIH (reg:CC FLAGS_REG) (const_int 0))
(match_dup 5))))
(clobber (reg:CC FLAGS_REG))])]
- "split_<dwi> (&operands[0], 3, &operands[0], &operands[3]);")
+ "split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);")
(define_insn "*sub<mode>_1"
[(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>")
[(set (match_dup 2)
(neg:DWIH (match_dup 2)))
(clobber (reg:CC FLAGS_REG))])]
- "split_<dwi> (&operands[0], 2, &operands[0], &operands[2]);")
+ "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[2]);")
(define_insn "*neg<mode>2_1"
[(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m")
{
operands[6] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));
- split_<dwi> (&operands[0], 1, &operands[4], &operands[5]);
+ split_double_mode (<DWI>mode, &operands[0], 1, &operands[4], &operands[5]);
})
(define_insn_and_split "ix86_rotr<dwi>3_doubleword"
{
operands[6] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));
- split_<dwi> (&operands[0], 1, &operands[4], &operands[5]);
+ split_double_mode (<DWI>mode, &operands[0], 1, &operands[4], &operands[5]);
})
(define_insn "*<rotate_insn><mode>3_1"
(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"
2010-09-17 Nicola Pero <nicola.pero@meta-innovation.com>
- PR testsuite/45692
+ PR testsuite/45692
* objc/execute/exceptions/throw-nil.m: Run the test only with the
GNU runtime.