predicates.md (pic_symbolic_operand): Remove predicate.

* config/i386/predicates.md (pic_symbolic_operand): Remove predicate.
	* config/i386/i386.md (*add<mode>_1): Do not use pic_symbolic_operand
	predicate in "type" attribute calculation.
	(*addsi_1_zext): Ditto.
	(*add<mode>_2): Do not use pic_symbolic_operand in insn predicate.
	(*addsi_2_zext): Ditto.
	(*add<mode>_3): Ditto.
	(*addsi_3_zext): Ditto.
	(*add<mode>_5): Ditto.

From-SVN: r160252
This commit is contained in:
Uros Bizjak 2010-06-04 08:44:00 +02:00
parent f3cf730bdc
commit 308e51aa12
3 changed files with 60 additions and 114 deletions

View File

@ -1,3 +1,15 @@
2010-06-04 Uros Bizjak <ubizjak@gmail.com>
* config/i386/predicates.md (pic_symbolic_operand): Remove predicate.
* config/i386/i386.md (*add<mode>_1): Do not use pic_symbolic_operand
predicate in "type" attribute calculation.
(*addsi_1_zext): Ditto.
(*add<mode>_2): Do not use pic_symbolic_operand in insn predicate.
(*addsi_2_zext): Ditto.
(*add<mode>_3): Ditto.
(*addsi_3_zext): Ditto.
(*add<mode>_5): Ditto.
2010-06-03 Jan Hubicka <jh@suse.cz>
* tree-into-ssa.c (mark_block_for_update): Avoid redundant call
@ -70,7 +82,7 @@
2010-06-03 Jan Hubicka <jh@suse.cz>
Jakub Jelinek <jakub@redhat.com>
* var-tracking.c (dataflow_set_equiv_regs): Shortcut the loop if
* var-tracking.c (dataflow_set_equiv_regs): Shortcut the loop if
set->regs[i] is NULL or has just one entry.
2010-06-03 Jan Hubicka <jh@suse.cz>
@ -128,14 +140,12 @@
PR target/44218
* doc/invoke.texi (RS/6000 and PowerPC Options): Delete obsolete
-mswdiv option. Add -mrecip, -mrecip=<xxx>, -mrecip-precision
options.
-mswdiv option. Add -mrecip, -mrecip=<xxx>, -mrecip-precision options.
* doc/extend.texi (powerpc builtins): Document vec_recip,
vec_rsqrt, vec_rsqrte altivec/vsx builtins.
* config/rs6000/rs60000-protos.h (rs6000_emit_swdiv): New
function.
* config/rs6000/rs60000-protos.h (rs6000_emit_swdiv): New function.
(rs6000_emit_swrsqrt): Ditto.
(rs6000_emit_swdivsf): Delete.
(rs6000_emit_swdivdf): Ditto.
@ -162,8 +172,7 @@
(bdesc_2arg): Add reciprocal estimate builtins.
(bdesc_1arg): Add reciprocal square root estimate builtins.
(rs6000_expand_builtin): Rewrite to use a switch statement,
instead of multiple if/then/elses. Add reciprocal estimate
builtins.
instead of multiple if/then/elses. Add reciprocal estimate builtins.
(rs6000_init_builtins): Create declarations for reciprocal
estimate builtins.
(rs6000_preferred_reload_class): Simplify VSX preferences, if scalar
@ -186,8 +195,7 @@
(rs6000_emit_swdiv): New common function to be called to replace a
division with reciprocal estimate and fixup.
(rs6000_emit_swrsqrt): Replace rs6000_emit_swrsqrtsf. Add support
for double and vector types. Add support for high precision
machines.
for double and vector types. Add support for high precision machines.
* config/rs6000/rs6000.h (TARGET_FRES): New macro to say whether
the reciprocal estimate instructions can be generated.
@ -217,8 +225,7 @@
(altivec_overloaded_builtins): Add reciprocal estimate builtins.
* config/rs6000/rs6000.opt (-mrecip): Document add support for
replacing division instructions with reciprocal estimate and
fixup.
replacing division instructions with reciprocal estimate and fixup.
(-mrecip=<opt>): New option.
(-mrecip-precision): Ditto.
@ -230,8 +237,7 @@
* config/rs6000/altivec.md (UNSPEC_RSQRTEFP): Delete.
(UNSPEC_VREFP): Ditto.
(altivec_vnmsubfp*): Make altivec nmsub mirror the scalar and VSX
conterparts with regard to support of -mno-fused-madd and
-ffast-math.
conterparts with regard to support of -mno-fused-madd and -ffast-math.
(altivec_vrsqrtefp): Use common UNSPEC to allow scalar/vector
reciprocal estimate instructions to be generated.
(altivec_vrefp): Ditto.
@ -256,8 +262,7 @@
(fred_fpr): Ditto.
(rsqrtdf_internal1): New function for frsqrte instruciton.
* config/rs6000/altivec.h (vec_recipdiv): Define new vector
builtin.
* config/rs6000/altivec.h (vec_recipdiv): Define new vector builtin.
(vec_rsqrt): Ditto.
2010-06-03 Richard Guenther <rguenther@suse.de>
@ -364,8 +369,7 @@
(*mov<mode>_64 TD_TF, *mov<mode>_31 TD_TF, *mov<mode>_64dfp DD_DF,
*mov<mode>_64 DD_DF, *mov<mode>_31, mov<mode>): Remove load zero
instruction.
* config/s390/s390.c: Don't accept fp zeros as valid constants
anymore.
* config/s390/s390.c: Don't accept fp zeros as valid constants anymore.
2010-06-02 Jan Hubicka <jh@suse.cz>
@ -478,8 +482,7 @@
Include rtl.h.
(copy_decl_for_dup_finish): Do not use NULL_RTX.
* tree-loop-linear.c: Do not include diagnostic.h, expr.h,
and optabs.h.
* tree-loop-linear.c: Do not include diagnostic.h, expr.h and optabs.h.
* tree-loop-distribution.c: Likewise.
2010-06-01 Jan Hubicka <jh@suse.cz>
@ -518,25 +521,26 @@
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
(set_new_first_and_last_insn, get_last_insn_anywhere,
get_first_nonnote_insn, get_last_nonnote_insn, try_split,
make_call_insn_raw, add_insn_after, add_insn_before, remove_insn,
delete_insns_since, reorder_insns_nobb, emit_insn_after_1,
emit_debug_insn_before, emit_insn, start_sequence, push_to_sequence,
push_to_sequence2, push_topmost_sequence, end_sequence, copy_insn):
Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
mem_expr_equal_p): Move here from rtl.h.
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* cfglayout.h: Include emit-rtl.h.
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
mem_expr_equal_p, get_insns, set_first-insn,
get_last_insn, set_last_insn, get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h.
* dce.c: Likewise.
2010-06-01 Jan Hubicka <jh@suse.cz>
@ -545,11 +549,11 @@
(cgraph_function_versioning): Update prototype.
* cgraphunit.c (cgraph_copy_node_for_versioning): Accept bbs_to_copy
bitmap.
(cgraph_function_versioning): Accept new_entry_block and bbs_to_copy.
(cgraph_function_versioning): Accept new_entry_block and bbs_to_copy.
(cgraph_materialize_clone, save_inline_function_body): Update use of
tree_function_versioning.
* tree-inline.c (copy_bb): Look for previous copied block to link after;
fix debug output.
* tree-inline.c (copy_bb): Look for previous copied block to link
after; fix debug output.
(copy_cfg_body): Accept new_entry_block and bbs_to_copy.
(copy_body): Likewise.
(expand_call_inline): Update use of copy_body.
@ -577,7 +581,7 @@
* c-opts.c (c_common_handle_option): Likewise.
2010-06-01 Arnaud Charlet <charlet@adacore.com>
Matthew Gingell <gingell@adacore.com>
Matthew Gingell <gingell@adacore.com>
* doc/invoke.texi: Mention -fdump-ada-spec.
* tree-dump.c (dump_files): Add ada-spec.
@ -623,14 +627,13 @@
2010-06-01 Kai Tietz <kai.tietz@onevision.com>
* config/i386.c (ix86_output_addr_vec_elt): Make LPREFIX
argument for fprintf.
(ix86_output_addr_diff_elt): Likewise.
(x86_function_profiler): Likewise.
* config/cygming.h (LOCAL_LABEL_PREFIX): Fix
for x64 no-underscore.
(LPREFIX): Likewise.
(ASM_GENERATE_INTERNAL_LABEL): Likewise.
* config/i386.c (ix86_output_addr_vec_elt): Make LPREFIX
argument for fprintf.
(ix86_output_addr_diff_elt): Likewise.
(x86_function_profiler): Likewise.
* config/cygming.h (LOCAL_LABEL_PREFIX): Fix for x64 no-underscore.
(LPREFIX): Likewise.
(ASM_GENERATE_INTERNAL_LABEL): Likewise.
2010-05-31 Jakub Jelinek <jakub@redhat.com>
@ -678,8 +681,7 @@
2010-05-31 Kai Tietz <kai.tietz@onevision.com>
PR target/44161
* config/i386/cygming.h (SUBTARGET_OVERRIDE_OPTIONS): Handle
flag_pic.
* config/i386/cygming.h (SUBTARGET_OVERRIDE_OPTIONS): Handle flag_pic.
2010-05-31 Eric Botcazou <ebotcazou@adacore.com>
@ -688,8 +690,7 @@
2010-05-31 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.c (find_func_aliases): Handle
BUILT_IN_RETURN.
* tree-ssa-structalias.c (find_func_aliases): Handle BUILT_IN_RETURN.
2010-05-30 Jan Hubicka <jh@suse.cz>
@ -713,7 +714,7 @@
* config/rs6000/darwin.h (ASM_OUTPUT_COMMON): Ditto.
* config/darwin.h (GLOBAL_ASM_OP): Ditto.
* config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Ditto.
2010-05-30 Eric Botcazou <ebotcazou@adacore.com>
* config/rs6000/rs6000.c (rs6000_output_function_entry): Use
@ -734,8 +735,7 @@
* cgraph.h (cgraph_dump_file): Declare.
* cgraphunit.c (cgraph_dump_file): Export.
* ipa.c (dump_cgraph_node_set, dump_varpool_node_set): Be less
verbose.
* ipa.c (dump_cgraph_node_set, dump_varpool_node_set): Be less verbose.
2010-05-30 Jan Hubicka <jh@suse.cz>
@ -752,9 +752,8 @@
* ipa-pure-const.c (pure_const_names): New static var.
(check_call): Handle calls not leading to return.
(pure_const_read_summary): Dump info read.
(propagate): Dump info about propagation process; ignore side
effects of functions not leading to exit; fix handling of
pure functions.
(propagate): Dump info about propagation process; ignore side effects
of functions not leading to exit; fix handling of pure functions.
2010-05-30 Jan Hubicka <jh@suse.cz>
@ -788,7 +787,7 @@
debug_asserts_for, debug_all_asserts): Annotate with DEBUG_FUNCTION.
* tree-into-ssa.c (debug_decl_set, debug_defs_stack, debug_currdefs,
debug_tree_ssa, debug_tree_ssa_stats, debug_def_blocks,
debug_names_replaced_by, debug_update_ssa): Likewise.
debug_names_replaced_by, debug_update_ssa): Likewise.
* sbitmap.c (debug_sbitmap): Likewise.
* genrecog.c (debug_decision, debug_decision_list): Likewise.
* tree-pretty-print.c (debug_generic_expr, debug_generic_stmt,
@ -986,7 +985,7 @@
* cgraph.c (clone_function_name): Take SUFFIX argument; export.
(cgraph_create_virtual_clone): Take SUFFIX argument; udpate
use of clone_function_name.
* cgraph.h (cgraph_create_virtual_clone,
* cgraph.h (cgraph_create_virtual_clone,
cgraph_function_versioning): update prototypes.
(clone_function_name): Declare.
* ipa-cp.c (ipcp_insert_stage): Update call of
@ -1152,7 +1151,7 @@
2010-05-28 Iain Sandoe <iains@gcc.gnu.org>
* config.gcc (*-*-darwin*): Adjust t-make fragments for Darwin.
* config.gcc (*-*-darwin*): Adjust t-make fragments for Darwin.
2010-05-28 Maxim Kuvyrkov <maxim@codesourcery.com>
@ -1433,7 +1432,7 @@
2010-05-27 Jon Beniston <jon@beniston.com>
PR 43726
* config/lm32/lm32.h: Remove definition of
* config/lm32/lm32.h: Remove definition of
GO_IF_MODE_DEPENDENT_ADDRESS. Update copyright year.
2010-05-27 Eric Botcazou <ebotcazou@adacore.com>

View File

@ -6118,10 +6118,6 @@
(const_string "lea")
(eq_attr "alternative" "3")
(const_string "lea")
; Current assemblers are broken and do not allow @GOTOFF in
; ought but a memory context.
(match_operand:SWI48 2 "pic_symbolic_operand" "")
(const_string "lea")
(match_operand:SWI48 2 "incdec_operand" "")
(const_string "incdec")
]
@ -6172,10 +6168,6 @@
[(set (attr "type")
(cond [(eq_attr "alternative" "1")
(const_string "lea")
; Current assemblers are broken and do not allow @GOTOFF in
; ought but a memory context.
(match_operand:SI 2 "pic_symbolic_operand" "")
(const_string "lea")
(match_operand:SI 2 "incdec_operand" "")
(const_string "incdec")
]
@ -6410,10 +6402,7 @@
(set (match_operand:SWI48 0 "nonimmediate_operand" "=r,rm")
(plus:SWI48 (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (PLUS, <MODE>mode, operands)
/* Current assemblers are broken and do not allow @GOTOFF in
ought but a memory context. */
&& ! pic_symbolic_operand (operands[2], VOIDmode)"
&& ix86_binary_operator_ok (PLUS, <MODE>mode, operands)"
{
switch (get_attr_type (insn))
{
@ -6458,10 +6447,7 @@
(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
"TARGET_64BIT && ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (PLUS, SImode, operands)
/* Current assemblers are broken and do not allow @GOTOFF in
ought but a memory context. */
&& ! pic_symbolic_operand (operands[2], VOIDmode)"
&& ix86_binary_operator_ok (PLUS, SImode, operands)"
{
switch (get_attr_type (insn))
{
@ -6576,10 +6562,7 @@
(match_operand:SWI48 1 "nonimmediate_operand" "%0")))
(clobber (match_scratch:SWI48 0 "=r"))]
"ix86_match_ccmode (insn, CCZmode)
&& !(MEM_P (operands[1]) && MEM_P (operands[2]))
/* Current assemblers are broken and do not allow @GOTOFF in
ought but a memory context. */
&& ! pic_symbolic_operand (operands[2], VOIDmode)"
&& !(MEM_P (operands[1]) && MEM_P (operands[2]))"
{
switch (get_attr_type (insn))
{
@ -6623,10 +6606,7 @@
(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
"TARGET_64BIT && ix86_match_ccmode (insn, CCZmode)
&& ix86_binary_operator_ok (PLUS, SImode, operands)
/* Current assemblers are broken and do not allow @GOTOFF in
ought but a memory context. */
&& ! pic_symbolic_operand (operands[2], VOIDmode)"
&& ix86_binary_operator_ok (PLUS, SImode, operands)"
{
switch (get_attr_type (insn))
{
@ -6907,10 +6887,7 @@
(const_int 0)))
(clobber (match_scratch:SWI48 0 "=r"))]
"ix86_match_ccmode (insn, CCGOCmode)
&& !(MEM_P (operands[1]) && MEM_P (operands[2]))
/* Current assemblers are broken and do not allow @GOTOFF in
ought but a memory context. */
&& ! pic_symbolic_operand (operands[2], VOIDmode)"
&& !(MEM_P (operands[1]) && MEM_P (operands[2]))"
{
switch (get_attr_type (insn))
{

View File

@ -420,36 +420,6 @@
}
})
;; Return true if the operand contains a @GOT or @GOTOFF reference.
(define_predicate "pic_symbolic_operand"
(match_code "const")
{
op = XEXP (op, 0);
if (TARGET_64BIT)
{
if (GET_CODE (op) == UNSPEC
&& XINT (op, 1) == UNSPEC_GOTPCREL)
return 1;
if (GET_CODE (op) == PLUS
&& GET_CODE (XEXP (op, 0)) == UNSPEC
&& XINT (XEXP (op, 0), 1) == UNSPEC_GOTPCREL)
return 1;
}
else
{
if (GET_CODE (op) == UNSPEC)
return 1;
if (GET_CODE (op) != PLUS
|| !CONST_INT_P (XEXP (op, 1)))
return 0;
op = XEXP (op, 0);
if (GET_CODE (op) == UNSPEC
&& XINT (op, 1) != UNSPEC_MACHOPIC_OFFSET)
return 1;
}
return 0;
})
;; Return true if OP is a symbolic operand that resolves locally.
(define_predicate "local_symbolic_operand"
(match_code "const,label_ref,symbol_ref")