OSDN Git Service

i386: Rewrite ix86_expand_vshuffle.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 9147e87..800d69a 100644 (file)
@@ -1,3 +1,150 @@
+2011-10-05  Richard Henderson  <rth@redhat.com>
+
+       * tree-vect-generic.c (vector_element): Never fail.  Use
+       build_zero_cst.  Tidy up type references.
+       (lower_vec_shuffle): Never fail.  Mask shuffle indicies.  Reduce
+       code duplication.  Do update_stmt here ...
+       (expand_vector_operations_1): ... not here.
+
+       * config/i386/i386.c (ix86_expand_vshuffle): Never fail.  Handle
+       TARGET_XOP.  Fix pshufb constant vector creation.  Reduce code
+       duplication.  Handle V2DI without SSE4.1.
+       * config/i386/i386-protos.h (ix86_expand_vshuffle): Update decl.
+       * config/i386/i386.md (vshuffle<V_128>): Remove assert for ok.
+
+2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.c (distance_non_agu_define): Simplify calculation
+       of "found".  Simplify return value calculation.
+       (distance_agu_use): Ditto.
+
+2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
+
+       PR bootstrap/50621
+       * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only
+       if the function was not shrink-wrapped.
+       (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached
+       to an insn.
+       * function.c (thread_prologue_and_epilogue_insns): Make sure the
+       shrink_wrapped flag is set even if there is no dump file.
+
+2011-10-05  DJ Delorie  <dj@redhat.com>
+           Nick Clifton  <nickc@redhat.com>
+
+       * config/rx/rx.opt (mpid): Define.
+       * config/rx/t-rx (MULTILIB_OPTIONS): Add -mpid
+       (MULTILIB_DIRNAMES): Add pid.
+       * config/rx/rx.c (rx_gp_base_regnum_val, rx_pid_base_regnum_val)
+       (rx_num_interrupt_regs): New variable.
+       (rx_gp_base_regnum): New function.  Returns the number of the
+       small data area register.
+       (rx_pid_base_regnum): New function.  Returns the number of the pid
+       base register.
+       (rx_decl_for_addr): New function.  Returns the symbolic part of a MEM.
+       (rx_pid_data_operand): New function.  Returns whether an object is
+       in the position independent data area.
+       (rx_legitimize_address): New function.  Puts undecided PID
+       objects in the PID data area.
+       (rx_is_legitimate_address): Add support for PID operands.
+       (rx_print_operand_address): Likewise.
+       (rx_print_operand): Likewise.
+       (rx_maybe_pidify_operand): New function.  Determine if an operand
+       is suitable for PID addressing.
+       (rx_gen_move_template): Add PID support.
+       (rx_conditional_register_usage): Likewise.
+       (rx_option_override): Initialise rx_num_interrupt_regs.
+       (rx_is_legitimate_constant): Add support for PID constants.
+       (TARGET_LEGITIMIZE_ADDRESS): Define.
+       * config/rx/constraints.md (Rpid): Define.
+       (Rpda): Define.
+       * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
+       (tablejump): Add PID support.
+       (mov<>): Likewise.
+       (mov<>_internal): Likewise.
+       (addsi3): Convert to an expander.  Add PID support.
+       (pid_addr): New pattern.
+       * config/rx/rx.h (CPP_SPEC): Define.
+       (ASM_SPEC): Pass -mpid and -mint-register on to assembler.
+       (CASE_VECTOR_PC_RELATIVE): Define.
+       (JUMP_TABLES_IN_TEXT_SECTION): Enable for PID mode.
+       * config/rx/rx-protos.h (rx_maybe_pidify_operand): Prototype.
+       * doc/invoke.texi (RX Options): Document -mpid command line option.
+
+2011-10-05  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/38885
+       * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
+       from constants.
+
+2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * doc/invoke.texi (-fshrink-wrap): Document.
+       * opts.c (default_options_table): Add it.
+       * common.opt (fshrink-wrap): Add.
+       * function.c (emit_return_into_block): Remove useless declaration.
+       (record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx,
+       requires_stack_frame_p, gen_return_pattern): New static functions.
+       (emit_return_into_block): New arg simple_p.  All callers changed.
+       Use gen_return_pattern.
+       (thread_prologue_and_epilogue_insns): Implement shrink-wrapping.
+       * config/i386/i386.md (return): Expand into a simple_return.
+       (simple_return): New expander):
+       (simple_return_internal, simple_return_internal_long,
+       simple_return_pop_internal_long, simple_return_indirect_internal):
+       Renamed from return_internal, return_internal_long,
+       return_pop_internal_long and return_indirect_internal; changed to use
+       simple_return.
+       * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
+       simple returns.
+       (ix86_pad_returns): Likewise.
+       * function.h (struct rtl_data): Add member shrink_wrapped.
+       * cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that
+       are not jumps or sibcalls can't be compared.
+
+2011-10-05  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
+       vector type.
+       (simplify_unary_expression): Handle BIT_FIELD_REFs.
+       (try_to_simplify): Handle BIT_FIELD_REFs.
+
+2011-10-05  Georg-Johann Lay  <avr@gjlay.de>
+
+       * config/avr/avr-protos.h (avr_out_addto_sp): New prototype.
+       * config/avr/avr.c (avr_out_addto_sp): New function.
+       (adjust_insn_length): Handle ADJUST_LEN_ADDTO_SP.
+       * config/avr/avr.md (adjust_len): Add "addto_sp".
+       (*movhi_sp): Remove insn.
+       (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): Merge to *addhi3_sp_R.
+
+2011-10-05  Richard Guenther  <rguenther@suse.de>
+
+       * gimple-fold.c (gimple_fold_stmt_to_constant_1): For ternary ops
+       with an embedded expression valueize and fold that as well.
+       * tree-ssa-sccvn.c (try_to_simplify): Also allow SSA name
+       results from gimple_fold_stmt_to_constant_1.
+
+2011-10-05  Nick Clifton  <nickc@redhat.com>
+
+       * config/rx/rx.md (tablejump): Add missing label.
+       (adddi3_internal): Mark operand 0 as early-clobbered.
+       (smaxsi3): Revert previous delta.
+       (adc_internal): Fix whitespace in generated asm.
+       (adc_flags): Likewise.
+
+2011-10-05  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+       * expmed.c (expand_mult_highpart_optab): Replace optab_handler
+       with the new widening_optab_handler.
+
+2011-10-05  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/50609
+       * gimple-fold.c (fold_array_ctor_reference): Also handle
+       vector typed constructors.
+       (fold_ctor_reference): Dispatch to fold_array_ctor_reference
+       for vector typed constructors.
+
 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.c (ix86_emit_binop): New static function.