+2011-04-26 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/predicates.md (ext_QIreg_operand): Remove extra
+ mode check.
+ (ext_QIreg_nomode_operands): Remove.
+ * config/i386/i386.md (*anddi_1): Use ext_QIreg_operand.
+ (*andsi_1): Ditto.
+ (*andhi_1): Ditto.
+
2011-04-26 Andrew Stubbs <ams@codesourcery.com>
* config/arm/arm.c (arm_gen_constant): Remove can_negate_initial.
PR middle-end/48694
* tree.h (OEP_CONSTANT_ADDRESS_OF): New operand_equal_flag.
* fold-const.c (operand_equal_p): For TREE_CONSTANT ADDR_EXPRs
- compare the operands with OEP_CONSTANT_ADDRESS_OF. Treat
- trees with TREE_SIDE_EFFECTS equal when OEP_CONSTANT_ADDRESS_OF
- is set.
+ compare the operands with OEP_CONSTANT_ADDRESS_OF. Treat trees
+ with TREE_SIDE_EFFECTS equal when OEP_CONSTANT_ADDRESS_OF is set.
2011-04-25 Paolo Carlini <paolo.carlini@oracle.com>
- * c-family/c-common.c (struct c_common_resword): Add
- __underlying_type.
+ * c-family/c-common.c (struct c_common_resword): Add __underlying_type.
* c-family/c-common.h (enum rid): Add RID_UNDERLYING_TYPE.
* doc/extend.texi: Document __underlying_type.
* ipa-prop.c (ipa_propagate_indirect_call_infos): Remove obsolette
WPA hack.
- * ipa-prop.h (ipa_get_param, ipa_is_param_used, ipa_param_cannot_devirtualize_p,
- ipa_param_types_vec_empty, ipa_get_ith_jump_func, ipa_get_lattice):
- Fortify array bounds.
+ * ipa-prop.h (ipa_get_param, ipa_is_param_used,
+ ipa_param_cannot_devirtualize_p, ipa_param_types_vec_empty,
+ ipa_get_ith_jump_func, ipa_get_lattice): Fortify array bounds.
* ipa-inline-analysis.c (add_clause): Fix clause ordering.
(and_predicates, or_predicates, predicates_equal_p, evaulate_predicate):
Sanity check predicate length.
2011-04-22 Jan Hubicka <jh@suse.cz>
* gengtype.c (open_base_files): Add ipa-inline.h include.
- * ipa-cp.c (ipcp_get_lattice, ipcp_lattice_from_jfunc): Move to ipa-prop.c
- update all uses.
+ * ipa-cp.c (ipcp_get_lattice, ipcp_lattice_from_jfunc): Move to
+ ipa-prop.c; update all uses.
* ipa-prop.c: (ipa_get_lattice, ipa_lattice_from_jfunc): ... here.
- * ipa-inline-transform.c (inline_call): Use inline_merge_summary to merge
- summary of inlined function into former caller.
+ * ipa-inline-transform.c (inline_call): Use inline_merge_summary to
+ merge summary of inlined function into former caller.
* ipa-inline.c (max_benefit): Remove.
(edge_badness): Compensate for removal of benefits.
- (update_caller_keys): Use reset_node_growth_cache/reset_edge_growth_cache.
+ (update_caller_keys): Use
+ reset_node_growth_cache/reset_edge_growth_cache.
(update_callee_keys): Likewise.
(update_all_callee_keys): Likewise.
- (inline_small_functions): Do not collect max_benefit; do not
- reset stimated_growth; call free_growth_caches and initialize_growth_caches.
- * ipa-inline.h (struct condition, type clause_t, struct predicate, struct
- size_time_entry): New structures.
+ (inline_small_functions): Do not collect max_benefit; do not reset
+ estimated_growth; call free_growth_caches and initialize_growth_caches.
+ * ipa-inline.h (struct condition, type clause_t, struct predicate,
+ struct size_time_entry): New structures.
(INLINE_SIZE_SCALE, INLINE_TIME_SCALE, MAX_CLAUSES): New constants.
- (inline_summary): Remove size_inlining_benefit, time_inlining_benefit and
- estimated_growth.
+ (inline_summary): Remove size_inlining_benefit, time_inlining_benefit
+ and estimated_growth.
(edge_growth_cache_entry): New structure.
(node_growth_cache, edge_growth_cache): New global vars.
(estimate_growth): Turn into inline.
initialize_growth_caches, free_growth_caches): Declare.
(estimate_edge_growth): Rewrite.
(estimate_edge_time): Implement as inline cache lookup.
- (reset_node_growth_cache, reset_edge_growth_cache): New inline functions.
+ (reset_node_growth_cache, reset_edge_growth_cache): New inline
+ functions.
(MAX_TIME): Reduce to allow multiplicatoin by INLINE_SIZE_SCALE.
(NUM_CONDITIONS): New constant.
(predicate_conditions): New enum.
(IS_NOT_CONSTANT): New constant.
(edge_removal_hook_holder): New var.
(node_growth_cache, edge_growth_cache): New global vars.
- (true_predicate, single_cond_predicate, false_predicate, not_inlined_predicate,
- add_condition, add_clause, and_predicates, or_predicates, predicates_equal_p,
- evaulate_predicate, dump_condition, dump_clause, dump_predicate, account_size_time,
+ (true_predicate, single_cond_predicate, false_predicate,
+ not_inlined_predicate, add_condition, add_clause, and_predicates,
+ or_predicates, predicates_equal_p, evaulate_predicate, dump_condition,
+ dump_clause, dump_predicate, account_size_time,
evaulate_conditions_for_edge): New functions.
(inline_summary_alloc): Move to heap.
(inline_node_removal_hook): Clear condition and entry vectors.
(inline_write_summary): Write all the new data.
* ipa-prop.c (ipa_get_param_decl_index): Export.
(ipa_lattice_from_jfunc): Move here from ipa-cp.c
- * ipa-prop.h (ipa_get_param_decl_index, ipa_lattice_from_jfunc): Declare.
- (ipa_get_lattice): Move hre from ipa-cp.c
+ * ipa-prop.h (ipa_get_param_decl_index, ipa_lattice_from_jfunc):
+ Declare.
+ (ipa_get_lattice): Move here from ipa-cp.c
* Makefile.in (GTFILES): Add ipa-inline.h and ipa-inline-analysis.c
* params.def (PARAM_EARLY_INLINING_INSNS): Set to 11.
* cgraph.h (cgraph_clone_inlined_nodes, compute_inline_parameters,
cgraph_edge_inlinable_p): Remove.
* cgraphunit.c: Include ipainline.h
- (cgraph_process_new_functions): Update call of compute_inline_parameters.
+ (cgraph_process_new_functions): Update call of
+ compute_inline_parameters.
2011-04-22 Richard Guenther <rguenther@suse.de>
2011-04-21 Dimitrios Apostolou <jimis@gmx.net>
Jeff Law <law@redhat.com>
- * gengtype-state.c (read_a_state_token): Fix argument to
- obstack_free.
+ * gengtype-state.c (read_a_state_token): Fix argument to obstack_free.
* gengtype.c (matching_file_name_substitute): Likewise.
2011-04-21 Richard Guenther <rguenther@suse.de>
;; %[abcd][hl].
(define_predicate "ext_QIreg_operand"
(and (match_code "reg")
- (match_test "TARGET_64BIT
- && GET_MODE (op) == QImode
- && REGNO (op) > BX_REG")))
-
-;; Similarly, but don't check mode of the operand.
-(define_predicate "ext_QIreg_nomode_operand"
- (and (match_code "reg")
- (match_test "TARGET_64BIT
- && REGNO (op) > BX_REG")))
+ (match_test "TARGET_64BIT")
+ (match_test "REGNO (op) > BX_REG")))
;; Return true if op is not xmm0 register.
(define_predicate "reg_not_xmm0_operand"
;; Return true if OP is nonmemory operand acceptable by movabs patterns.
(define_predicate "x86_64_movabs_operand"
- (if_then_else (match_test "!TARGET_64BIT || !flag_pic")
+ (if_then_else (not (and (match_test "TARGET_64BIT")
+ (match_test "flag_pic")))
(match_operand 0 "nonmemory_operand")
(ior (match_operand 0 "register_operand")
(and (match_operand 0 "const_double_operand")
;; scripts means that we can't be sure of that in general, so assume
;; that @GOTOFF is never valid on VxWorks.
(define_predicate "gotoff_operand"
- (and (match_test "!TARGET_VXWORKS_RTP")
+ (and (not (match_test "TARGET_VXWORKS_RTP"))
(match_operand 0 "local_symbolic_operand")))
;; Test for various thread-local symbols.
;; Match 0 or 1.
(define_predicate "const_0_to_1_operand"
(and (match_code "const_int")
- (match_test "op == const0_rtx || op == const1_rtx")))
+ (ior (match_test "op == const0_rtx")
+ (match_test "op == const1_rtx"))))
;; Match 0 to 3.
(define_predicate "const_0_to_3_operand"
;; Match exactly one bit in 2-bit mask.
(define_predicate "const_pow2_1_to_2_operand"
(and (match_code "const_int")
- (match_test "INTVAL (op) == 1 || INTVAL (op) == 2")))
+ (ior (match_test "op == const1_rtx")
+ (match_test "op == const2_rtx"))))
;; Match exactly one bit in 4-bit mask.
(define_predicate "const_pow2_1_to_8_operand"
(define_predicate "reg_or_pm1_operand"
(ior (match_operand 0 "register_operand")
(and (match_code "const_int")
- (match_test "op == const1_rtx || op == constm1_rtx"))))
+ (ior (match_test "op == const1_rtx")
+ (match_test "op == constm1_rtx")))))
;; True if OP is acceptable as operand of DImode shift expander.
(define_predicate "shiftdi_operand"
(define_predicate "sse_comparison_operator"
(ior (match_code "eq,ne,lt,le,unordered,unge,ungt,ordered")
- (and (match_code "ge,gt,uneq,unle,unlt,ltgt")
- (match_test "TARGET_AVX"))))
+ (and (match_test "TARGET_AVX")
+ (match_code "ge,gt,uneq,unle,unlt,ltgt"))))
(define_predicate "ix86_comparison_int_operator"
(match_code "ne,eq,ge,gt,le,lt"))