diff options
author | Peter Bergner <bergner@vnet.ibm.com> | 2017-07-27 15:04:53 -0500 |
---|---|---|
committer | Peter Bergner <bergner@gcc.gnu.org> | 2017-07-27 15:04:53 -0500 |
commit | 3cb8ee5cd6b72ceb87b89cacb9bcb169a7b34dd6 (patch) | |
tree | a52e372df1cdf1f2496562743ac2b73bfa1d0c18 | |
parent | 7a5cbf29beb2485a4385613a02cbc0be1c03d2bb (diff) | |
download | gcc-3cb8ee5cd6b72ceb87b89cacb9bcb169a7b34dd6.zip gcc-3cb8ee5cd6b72ceb87b89cacb9bcb169a7b34dd6.tar.gz gcc-3cb8ee5cd6b72ceb87b89cacb9bcb169a7b34dd6.tar.bz2 |
predicates.md (volatile_mem_operand): Remove code related to reload_in_progress.
* config/rs6000/predicates.md (volatile_mem_operand): Remove code
related to reload_in_progress.
(splat_input_operand): Likewise.
* config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
Delete prototype.
* config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot
field.
(TARGET_EXPAND_TO_RTL_HOOK): Delete.
(TARGET_INSTANTIATE_DECLS): Likewise.
(legitimate_indexed_address_p): Delete reload_in_progress code.
(rs6000_debug_legitimate_address_p): Likewise.
(rs6000_eliminate_indexed_memrefs): Likewise.
(rs6000_emit_le_vsx_store): Likewise.
(rs6000_emit_move_si_sf_subreg): Likewise.
(rs6000_emit_move): Likewise.
(register_to_reg_type): Likewise.
(rs6000_pre_atomic_barrier): Likewise.
(rs6000_machopic_legitimize_pic_address): Likewise.
(rs6000_allocate_stack_temp): Likewise.
(rs6000_address_for_fpconvert): Likewise.
(rs6000_address_for_altivec): Likewise.
(rs6000_secondary_memory_needed_rtx): Delete function.
(rs6000_check_sdmode): Likewise.
(rs6000_alloc_sdmode_stack_slot): Likewise.
(rs6000_instantiate_decls): Likewise.
* config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
* config/rs6000/rs6000.md (splitter for *movsi_got_internal):
Delete reload_in_progress.
(*vec_reload_and_plus_<mptrsize>): Likewise.
* config/rs6000/vsx.md (vsx_mul_v2di): Likewise.
(vsx_div_v2di): Likewise.
(vsx_udiv_v2di): Likewise.
From-SVN: r250638
-rw-r--r-- | gcc/ChangeLog | 35 | ||||
-rw-r--r-- | gcc/config/rs6000/predicates.md | 8 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000-protos.h | 1 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 253 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 7 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 4 | ||||
-rw-r--r-- | gcc/config/rs6000/vsx.md | 6 |
7 files changed, 62 insertions, 252 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 252229e..be98abe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,40 @@ 2017-07-27 Peter Bergner <bergner@vnet.ibm.com> + * config/rs6000/predicates.md (volatile_mem_operand): Remove code + related to reload_in_progress. + (splat_input_operand): Likewise. + * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx): + Delete prototype. + * config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot + field. + (TARGET_EXPAND_TO_RTL_HOOK): Delete. + (TARGET_INSTANTIATE_DECLS): Likewise. + (legitimate_indexed_address_p): Delete reload_in_progress code. + (rs6000_debug_legitimate_address_p): Likewise. + (rs6000_eliminate_indexed_memrefs): Likewise. + (rs6000_emit_le_vsx_store): Likewise. + (rs6000_emit_move_si_sf_subreg): Likewise. + (rs6000_emit_move): Likewise. + (register_to_reg_type): Likewise. + (rs6000_pre_atomic_barrier): Likewise. + (rs6000_machopic_legitimize_pic_address): Likewise. + (rs6000_allocate_stack_temp): Likewise. + (rs6000_address_for_fpconvert): Likewise. + (rs6000_address_for_altivec): Likewise. + (rs6000_secondary_memory_needed_rtx): Delete function. + (rs6000_check_sdmode): Likewise. + (rs6000_alloc_sdmode_stack_slot): Likewise. + (rs6000_instantiate_decls): Likewise. + * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete. + * config/rs6000/rs6000.md (splitter for *movsi_got_internal): + Delete reload_in_progress. + (*vec_reload_and_plus_<mptrsize>): Likewise. + * config/rs6000/vsx.md (vsx_mul_v2di): Likewise. + (vsx_div_v2di): Likewise. + (vsx_udiv_v2di): Likewise. + +2017-07-27 Peter Bergner <bergner@vnet.ibm.com> + * config/rs6000/rs6000.opt (mlra): Replace with stub. * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete OPTION_MASK_LRA. * config/rs6000/rs6000.c (TARGET_LRA_P): Delete. diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index aa1c01b..466f913 100644 --- a/gcc/config/rs6000/predicates.md +++ b/gcc/config/rs6000/predicates.md @@ -783,10 +783,8 @@ (and (and (match_code "mem") (match_test "MEM_VOLATILE_P (op)")) (if_then_else (match_test "reload_completed") - (match_operand 0 "memory_operand") - (if_then_else (match_test "reload_in_progress") - (match_test "strict_memory_address_p (mode, XEXP (op, 0))") - (match_test "memory_address_p (mode, XEXP (op, 0))"))))) + (match_operand 0 "memory_operand") + (match_test "memory_address_p (mode, XEXP (op, 0))")))) ;; Return 1 if the operand is an offsettable memory operand. (define_predicate "offsettable_mem_operand" @@ -1142,7 +1140,7 @@ if (! volatile_ok && MEM_VOLATILE_P (op)) return 0; - if (reload_in_progress || lra_in_progress || reload_completed) + if (lra_in_progress || reload_completed) return indexed_or_indirect_address (addr, vmode); else return memory_address_addr_space_p (vmode, addr, MEM_ADDR_SPACE (op)); diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h index 1b4932e..144bdb2 100644 --- a/gcc/config/rs6000/rs6000-protos.h +++ b/gcc/config/rs6000/rs6000-protos.h @@ -155,7 +155,6 @@ extern void rs6000_emit_le_vsx_permute (rtx, rtx, machine_mode); extern void rs6000_emit_le_vsx_move (rtx, rtx, machine_mode); extern bool valid_sf_si_move (rtx, rtx, machine_mode); extern void rs6000_emit_move (rtx, rtx, machine_mode); -extern rtx rs6000_secondary_memory_needed_rtx (machine_mode); extern machine_mode rs6000_secondary_memory_needed_mode (machine_mode); extern rtx (*rs6000_legitimize_reload_address_ptr) (rtx, machine_mode, int, int, int, int *); diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 016a9be..2fcec13 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -143,10 +143,6 @@ typedef struct GTY(()) machine_function /* Offset from virtual_stack_vars_rtx to the start of the ABI_V4 varargs save area. */ HOST_WIDE_INT varargs_save_offset; - /* Temporary stack slot to use for SDmode copies. This slot is - 64-bits wide and is allocated early enough so that the offset - does not overflow the 16-bit load/store offset field. */ - rtx sdmode_stack_slot; /* Alternative internal arg pointer for -fsplit-stack. */ rtx split_stack_arg_pointer; bool split_stack_argp_used; @@ -1872,12 +1868,6 @@ static const struct attribute_spec rs6000_attribute_table[] = #undef TARGET_BUILTIN_RECIPROCAL #define TARGET_BUILTIN_RECIPROCAL rs6000_builtin_reciprocal -#undef TARGET_EXPAND_TO_RTL_HOOK -#define TARGET_EXPAND_TO_RTL_HOOK rs6000_alloc_sdmode_stack_slot - -#undef TARGET_INSTANTIATE_DECLS -#define TARGET_INSTANTIATE_DECLS rs6000_instantiate_decls - #undef TARGET_SECONDARY_RELOAD #define TARGET_SECONDARY_RELOAD rs6000_secondary_reload @@ -8628,14 +8618,6 @@ legitimate_indexed_address_p (rtx x, int strict) op0 = XEXP (x, 0); op1 = XEXP (x, 1); - /* Recognize the rtl generated by reload which we know will later be - replaced with proper base and index regs. */ - if (!strict - && reload_in_progress - && (REG_P (op0) || GET_CODE (op0) == PLUS) - && REG_P (op1)) - return true; - return (REG_P (op0) && REG_P (op1) && ((INT_REG_OK_FOR_BASE_P (op0, strict) && INT_REG_OK_FOR_INDEX_P (op1, strict)) @@ -9879,9 +9861,7 @@ rs6000_debug_legitimate_address_p (machine_mode mode, rtx x, ret ? "true" : "false", GET_MODE_NAME (mode), reg_ok_strict, - (reload_completed - ? "after" - : (reload_in_progress ? "progress" : "before")), + (reload_completed ? "after" : "before"), GET_RTX_NAME (GET_CODE (x))); debug_rtx (x); @@ -10283,9 +10263,6 @@ rs6000_emit_set_long_const (rtx dest, HOST_WIDE_INT c) static void rs6000_eliminate_indexed_memrefs (rtx operands[2]) { - if (reload_in_progress) - return; - if (GET_CODE (operands[0]) == MEM && GET_CODE (XEXP (operands[0], 0)) != REG && ! legitimate_constant_pool_address_p (XEXP (operands[0], 0), @@ -10397,10 +10374,10 @@ rs6000_emit_le_vsx_load (rtx dest, rtx source, machine_mode mode) void rs6000_emit_le_vsx_store (rtx dest, rtx source, machine_mode mode) { - /* This should never be called during or after reload, because it does + /* This should never be called during or after LRA, because it does not re-permute the source register. It is intended only for use during expand. */ - gcc_assert (!reload_in_progress && !lra_in_progress && !reload_completed); + gcc_assert (!lra_in_progress && !reload_completed); /* Use V2DImode to do swaps of types with 128-bit scalar parts (TImode, V1TImode). */ @@ -10492,8 +10469,7 @@ valid_sf_si_move (rtx dest, rtx src, machine_mode mode) static bool rs6000_emit_move_si_sf_subreg (rtx dest, rtx source, machine_mode mode) { - if (TARGET_DIRECT_MOVE_64BIT && !reload_in_progress && !reload_completed - && !lra_in_progress + if (TARGET_DIRECT_MOVE_64BIT && !lra_in_progress && !reload_completed && (!SUBREG_P (dest) || !sf_subreg_operand (dest, mode)) && SUBREG_P (source) && sf_subreg_operand (source, mode)) { @@ -10527,10 +10503,10 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode) if (TARGET_DEBUG_ADDR) { fprintf (stderr, - "\nrs6000_emit_move: mode = %s, reload_in_progress = %d, " + "\nrs6000_emit_move: mode = %s, lra_in_progress = %d, " "reload_completed = %d, can_create_pseudos = %d.\ndest:\n", GET_MODE_NAME (mode), - reload_in_progress, + lra_in_progress, reload_completed, can_create_pseudo_p ()); debug_rtx (dest); @@ -10604,12 +10580,6 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode) operands[1] = tmp; } - /* Handle the case where reload calls us with an invalid address. */ - if (reload_in_progress && mode == Pmode - && (! general_operand (operands[1], mode) - || ! nonimmediate_operand (operands[0], mode))) - goto emit_set; - /* 128-bit constant floating-point values on Darwin should really be loaded as two parts. However, this premature splitting is a problem when DFmode values can go into Altivec registers. */ @@ -10627,11 +10597,6 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode) return; } - if (reload_in_progress && cfun->machine->sdmode_stack_slot != NULL_RTX) - cfun->machine->sdmode_stack_slot = - eliminate_regs (cfun->machine->sdmode_stack_slot, VOIDmode, NULL_RTX); - - /* Transform (p0:DD, (SUBREG:DD p1:SD)) to ((SUBREG:SD p0:DD), p1:SD) if p1 is not of floating point class and p0 is spilled as we can have no analogous movsd_store for this. */ @@ -10741,57 +10706,6 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode) return; } - if (reload_in_progress - && mode == SDmode - && cfun->machine->sdmode_stack_slot != NULL_RTX - && MEM_P (operands[0]) - && rtx_equal_p (operands[0], cfun->machine->sdmode_stack_slot) - && REG_P (operands[1])) - { - if (FP_REGNO_P (REGNO (operands[1]))) - { - rtx mem = adjust_address_nv (operands[0], DDmode, 0); - mem = eliminate_regs (mem, VOIDmode, NULL_RTX); - emit_insn (gen_movsd_store (mem, operands[1])); - } - else if (INT_REGNO_P (REGNO (operands[1]))) - { - rtx mem = operands[0]; - if (BYTES_BIG_ENDIAN) - mem = adjust_address_nv (mem, mode, 4); - mem = eliminate_regs (mem, VOIDmode, NULL_RTX); - emit_insn (gen_movsd_hardfloat (mem, operands[1])); - } - else - gcc_unreachable(); - return; - } - if (reload_in_progress - && mode == SDmode - && REG_P (operands[0]) - && MEM_P (operands[1]) - && cfun->machine->sdmode_stack_slot != NULL_RTX - && rtx_equal_p (operands[1], cfun->machine->sdmode_stack_slot)) - { - if (FP_REGNO_P (REGNO (operands[0]))) - { - rtx mem = adjust_address_nv (operands[1], DDmode, 0); - mem = eliminate_regs (mem, VOIDmode, NULL_RTX); - emit_insn (gen_movsd_load (operands[0], mem)); - } - else if (INT_REGNO_P (REGNO (operands[0]))) - { - rtx mem = operands[1]; - if (BYTES_BIG_ENDIAN) - mem = adjust_address_nv (mem, mode, 4); - mem = eliminate_regs (mem, VOIDmode, NULL_RTX); - emit_insn (gen_movsd_hardfloat (operands[0], mem)); - } - else - gcc_unreachable(); - return; - } - /* FIXME: In the long term, this switch statement should go away and be replaced by a sequence of tests based on things like mode == Pmode. */ @@ -10950,10 +10864,9 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode) /* If we are to limit the number of things we put in the TOC and this is a symbol plus a constant we can add in one insn, - just put the symbol in the TOC and add the constant. Don't do - this if reload is in progress. */ + just put the symbol in the TOC and add the constant. */ if (GET_CODE (operands[1]) == CONST - && TARGET_NO_SUM_IN_TOC && ! reload_in_progress + && TARGET_NO_SUM_IN_TOC && GET_CODE (XEXP (operands[1], 0)) == PLUS && add_operand (XEXP (XEXP (operands[1], 0), 1), mode) && (GET_CODE (XEXP (XEXP (operands[1], 0), 0)) == LABEL_REF @@ -10999,10 +10912,9 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode) /* Above, we may have called force_const_mem which may have returned an invalid address. If we can, fix this up; otherwise, reload will have to deal with it. */ - if (GET_CODE (operands[1]) == MEM && ! reload_in_progress) + if (GET_CODE (operands[1]) == MEM) operands[1] = validize_mem (operands[1]); - emit_set: emit_insn (gen_rtx_SET (operands[0], operands[1])); } @@ -19195,42 +19107,6 @@ mems_ok_for_quad_peep (rtx mem1, rtx mem2) return 1; } - -rtx -rs6000_secondary_memory_needed_rtx (machine_mode mode) -{ - static bool eliminated = false; - rtx ret; - - if (mode != SDmode || TARGET_NO_SDMODE_STACK) - ret = assign_stack_local (mode, GET_MODE_SIZE (mode), 0); - else - { - rtx mem = cfun->machine->sdmode_stack_slot; - gcc_assert (mem != NULL_RTX); - - if (!eliminated) - { - mem = eliminate_regs (mem, VOIDmode, NULL_RTX); - cfun->machine->sdmode_stack_slot = mem; - eliminated = true; - } - ret = mem; - } - - if (TARGET_DEBUG_ADDR) - { - fprintf (stderr, "\nrs6000_secondary_memory_needed_rtx, mode %s, rtx:\n", - GET_MODE_NAME (mode)); - if (!ret) - fprintf (stderr, "\tNULL_RTX\n"); - else - debug_rtx (ret); - } - - return ret; -} - /* Return the mode to be used for memory when a secondary memory location is needed. For SDmode values we need to use DDmode, in all other cases we can use the same mode. */ @@ -19242,36 +19118,6 @@ rs6000_secondary_memory_needed_mode (machine_mode mode) return mode; } -static tree -rs6000_check_sdmode (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) -{ - /* Don't walk into types. */ - if (*tp == NULL_TREE || *tp == error_mark_node || TYPE_P (*tp)) - { - *walk_subtrees = 0; - return NULL_TREE; - } - - switch (TREE_CODE (*tp)) - { - case VAR_DECL: - case PARM_DECL: - case FIELD_DECL: - case RESULT_DECL: - case SSA_NAME: - case REAL_CST: - case MEM_REF: - case VIEW_CONVERT_EXPR: - if (TYPE_MODE (TREE_TYPE (*tp)) == SDmode) - return *tp; - break; - default: - break; - } - - return NULL_TREE; -} - /* Classify a register type. Because the FMRGOW/FMRGEW instructions only work on traditional floating point registers, and the VMRGOW/VMRGEW instructions only work on the traditional altivec registers, note if an altivec register @@ -19292,7 +19138,7 @@ register_to_reg_type (rtx reg, bool *is_altivec) regno = REGNO (reg); if (regno >= FIRST_PSEUDO_REGISTER) { - if (!lra_in_progress && !reload_in_progress && !reload_completed) + if (!lra_in_progress && !reload_completed) return PSEUDO_REG_TYPE; regno = true_regnum (reg); @@ -20369,64 +20215,6 @@ rs6000_secondary_reload_gpr (rtx reg, rtx mem, rtx scratch, bool store_p) return; } -/* Allocate a 64-bit stack slot to be used for copying SDmode values through if - this function has any SDmode references. If we are on a power7 or later, we - don't need the 64-bit stack slot since the LFIWZX and STIFWX instructions - can load/store the value. */ - -static void -rs6000_alloc_sdmode_stack_slot (void) -{ - tree t; - basic_block bb; - gimple_stmt_iterator gsi; - - gcc_assert (cfun->machine->sdmode_stack_slot == NULL_RTX); - /* We use a different approach for dealing with the secondary - memory in LRA. */ - if (ira_use_lra_p) - return; - - if (TARGET_NO_SDMODE_STACK) - return; - - FOR_EACH_BB_FN (bb, cfun) - for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - { - tree ret = walk_gimple_op (gsi_stmt (gsi), rs6000_check_sdmode, NULL); - if (ret) - { - rtx stack = assign_stack_local (DDmode, GET_MODE_SIZE (DDmode), 0); - cfun->machine->sdmode_stack_slot = adjust_address_nv (stack, - SDmode, 0); - return; - } - } - - /* Check for any SDmode parameters of the function. */ - for (t = DECL_ARGUMENTS (cfun->decl); t; t = DECL_CHAIN (t)) - { - if (TREE_TYPE (t) == error_mark_node) - continue; - - if (TYPE_MODE (TREE_TYPE (t)) == SDmode - || TYPE_MODE (DECL_ARG_TYPE (t)) == SDmode) - { - rtx stack = assign_stack_local (DDmode, GET_MODE_SIZE (DDmode), 0); - cfun->machine->sdmode_stack_slot = adjust_address_nv (stack, - SDmode, 0); - return; - } - } -} - -static void -rs6000_instantiate_decls (void) -{ - if (cfun->machine->sdmode_stack_slot != NULL_RTX) - instantiate_decl_rtl (cfun->machine->sdmode_stack_slot); -} - /* Given an rtx X being reloaded into a reg required to be in class CLASS, return the class of reg to actually use. In general this is just CLASS; but on some machines @@ -23454,10 +23242,9 @@ static rtx rs6000_pre_atomic_barrier (rtx mem, enum memmodel model) { rtx addr = XEXP (mem, 0); - int strict_p = (reload_in_progress || reload_completed); - if (!legitimate_indirect_address_p (addr, strict_p) - && !legitimate_indexed_address_p (addr, strict_p)) + if (!legitimate_indirect_address_p (addr, reload_completed) + && !legitimate_indexed_address_p (addr, reload_completed)) { addr = force_reg (Pmode, addr); mem = replace_equiv_address_nv (mem, addr); @@ -33184,7 +32971,7 @@ rs6000_machopic_legitimize_pic_address (rtx orig, machine_mode mode, { rtx base, offset; - if (reg == NULL && ! reload_in_progress && ! reload_completed) + if (reg == NULL && !reload_completed) reg = gen_reg_rtx (Pmode); if (GET_CODE (orig) == CONST) @@ -33210,7 +32997,7 @@ rs6000_machopic_legitimize_pic_address (rtx orig, machine_mode mode, { if (SMALL_INT (offset)) return plus_constant (Pmode, base, INTVAL (offset)); - else if (! reload_in_progress && ! reload_completed) + else if (!reload_completed) offset = force_reg (Pmode, offset); else { @@ -37459,7 +37246,7 @@ rs6000_allocate_stack_temp (machine_mode mode, { rtx stack = assign_stack_temp (mode, GET_MODE_SIZE (mode)); rtx addr = XEXP (stack, 0); - int strict_p = (reload_in_progress || reload_completed); + int strict_p = reload_completed; if (!legitimate_indirect_address_p (addr, strict_p)) { @@ -37481,13 +37268,12 @@ rs6000_allocate_stack_temp (machine_mode mode, rtx rs6000_address_for_fpconvert (rtx x) { - int strict_p = (reload_in_progress || reload_completed); rtx addr; gcc_assert (MEM_P (x)); addr = XEXP (x, 0); - if (! legitimate_indirect_address_p (addr, strict_p) - && ! legitimate_indexed_address_p (addr, strict_p)) + if (! legitimate_indirect_address_p (addr, reload_completed) + && ! legitimate_indexed_address_p (addr, reload_completed)) { if (GET_CODE (addr) == PRE_INC || GET_CODE (addr) == PRE_DEC) { @@ -37525,10 +37311,9 @@ rs6000_address_for_altivec (rtx x) if (!altivec_indexed_or_indirect_operand (x, GET_MODE (x))) { rtx addr = XEXP (x, 0); - int strict_p = (reload_in_progress || reload_completed); - if (!legitimate_indexed_address_p (addr, strict_p) - && !legitimate_indirect_address_p (addr, strict_p)) + if (!legitimate_indexed_address_p (addr, reload_completed) + && !legitimate_indirect_address_p (addr, reload_completed)) addr = copy_to_mode_reg (Pmode, addr); addr = gen_rtx_AND (Pmode, addr, GEN_INT (-16)); diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index a2936fd..82a0bda 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1583,13 +1583,6 @@ extern enum reg_class rs6000_constraints[RS6000_CONSTRAINT_MAX]; #define SECONDARY_MEMORY_NEEDED(CLASS1,CLASS2,MODE) \ rs6000_secondary_memory_needed_ptr (CLASS1, CLASS2, MODE) -/* For cpus that cannot load/store SDmode values from the 64-bit - FP registers without using a full 64-bit load/store, we need - to allocate a full 64-bit stack slot for them. */ - -#define SECONDARY_MEMORY_NEEDED_RTX(MODE) \ - rs6000_secondary_memory_needed_rtx (MODE) - /* Specify the mode to be used for memory when a secondary memory location is needed. For cpus that cannot load/store SDmode values from the 64-bit FP registers without using a full 64-bit diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 9eec9a4..6985b9f 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -6672,7 +6672,7 @@ UNSPEC_MOVSI_GOT))] "DEFAULT_ABI == ABI_V4 && flag_pic == 1 - && (reload_in_progress || reload_completed)" + && reload_completed" [(set (match_dup 0) (match_dup 2)) (set (match_dup 0) (unspec:SI [(match_dup 1)(match_dup 0)] UNSPEC_MOVSI_GOT))] @@ -8225,7 +8225,7 @@ (and:P (plus:P (match_operand:P 1 "gpc_reg_operand" "r") (match_operand:P 2 "reg_or_cint_operand" "rI")) (const_int -16)))] - "TARGET_ALTIVEC && (reload_in_progress || reload_completed)" + "TARGET_ALTIVEC && reload_completed" "#" "&& reload_completed" [(set (match_dup 0) diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md index b2b85c1..2937499 100644 --- a/gcc/config/rs6000/vsx.md +++ b/gcc/config/rs6000/vsx.md @@ -1201,7 +1201,7 @@ UNSPEC_VSX_MULSD))] "VECTOR_MEM_VSX_P (V2DImode)" "#" - "VECTOR_MEM_VSX_P (V2DImode) && !reload_completed && !reload_in_progress" + "VECTOR_MEM_VSX_P (V2DImode) && !reload_completed" [(const_int 0)] " { @@ -1239,7 +1239,7 @@ UNSPEC_VSX_DIVSD))] "VECTOR_MEM_VSX_P (V2DImode)" "#" - "VECTOR_MEM_VSX_P (V2DImode) && !reload_completed && !reload_in_progress" + "VECTOR_MEM_VSX_P (V2DImode) && !reload_completed" [(const_int 0)] " { @@ -1267,7 +1267,7 @@ UNSPEC_VSX_DIVUD))] "VECTOR_MEM_VSX_P (V2DImode)" "#" - "VECTOR_MEM_VSX_P (V2DImode) && !reload_completed && !reload_in_progress" + "VECTOR_MEM_VSX_P (V2DImode) && !reload_completed" [(const_int 0)] " { |