summaryrefslogtreecommitdiffstats
path: root/gcc/simplify-rtx.c
Commit message (Collapse)AuthorAgeFilesLines
...
* 2005-02-21 Paolo Bonzini <bonzini@gnu.org>bonzini2005-02-211-0/+1
| | | | | | | | * simplify-rtx.c (simplify_unary_operation): Add a missing "break" statement. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95321 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-tree.h, combine.c, expmed.c, flow.c, libgcc2.c,kazu2005-02-121-1/+1
| | | | | | | | simplify-rtx.c, tree-ssa-live.h: Fix comment typos. Follow spelling conventions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94939 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation_1): Avoid creatingsayle2005-02-081-11/+4
| | | | | | | | zero extensions of BImode operands. Call lowpart_subreg instead of gen_lowpart_common and gen_lowpart_SUBREG. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94730 138bc75d-0d04-0410-961f-82ee72b054a4
* PR rtl-optimization/19800sayle2005-02-071-3/+11
| | | | | | | | | * simplify_rtx.c (simplify_relational_operaration_1): Explicitly call gen_lowpart_common and gen_lowpart_SUBREG instead of calling gen_lowpart. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94691 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation_1): Simplifysayle2005-02-061-0/+12
| | | | | | | | (ne:SI (zero_extract:SI FOO (const_int 1) BAR) (const_int 0)) into just (zero_extract:SI FOO (const_int 1) BAR). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94684 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/19405sayle2005-02-031-2/+6
| | | | | | | | | | * real.h (REAL_MODE_FORMAT_COMPOSITE_P): New macro. * fold-const.c (const_binop): Avoid constant folding floating point operations in modes that use composite representations. * simplify-rtx.c (simplify_binary_operation): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94653 138bc75d-0d04-0410-961f-82ee72b054a4
* PR rtl-optimization/576sayle2005-01-211-6/+15
| | | | | | | | | | | | | | | | | * real.c (real_arithmetic): Change return type from void to bool to return an indication that the result may be inexact. * real.h (real_arithmeric): Update prototype. * fold-const.c (const_binop): Don't constant fold floating point expressions when the user specifies -frounding-math and the result may depend upon the run-time rounding mode. (fold_convert_const_real_from_real): Clean-up. (fold_initializer): Ignore flag_rounding_math for initializers. * simplify-rtx.c (simplify_binary_operation): Likewise, don't constant fold FP operations with flag_rounding_math if the result may depend upon the run-time rounding mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94020 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation) <AND>: Optimizesayle2005-01-141-1/+18
| | | | | | | (and (sign_extend X) C) into (zero_extend (and X C)). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93629 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): Simplify truncations of shiftssayle2005-01-071-0/+49
| | | | | | | of sign or zero extended values. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93022 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/17767uros2005-01-041-1/+1
| | | | | | | | | | | | | * cse.c (fold_rtx) [RTX_COMPARE, RTX_COMM_COMPARE]: Don't attempt any simplifications of vector mode comparison operators. * simplify-rtx.c (simplify_relational_operation): Fix variable name. testsuite: * gcc.dg/i386-mmx-6.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92896 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation): Handle VEC_CONCAT.rth2005-01-031-6/+38
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92861 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation_1): Don't simplifyrth2004-12-271-1/+2
| | | | | | | plus/minus across EQ for floating-point. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92631 138bc75d-0d04-0410-961f-82ee72b054a4
* PR rtl-optimization/18942rakdver2004-12-201-1/+18
| | | | | | | | * simplify-rtx.c (simplify_relational_operation_1): Simplify x + cst1 == cst2 to x == cst2 - cst1. Made static. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92429 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_replace_rtx): Do not blindly replacealdyh2004-12-161-1/+1
| | | | | | | hard registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92278 138bc75d-0d04-0410-961f-82ee72b054a4
* PR rtl-optimization/18928sayle2004-12-131-12/+17
| | | | | | | | | | | | * simplify_rtx.c (plus_minus_operand_p): New function to encode the test for suitable operands for calls to simplify_plus_minus. Only allow (CONST (PLUS x y)) if both x and y are CONSTANT_P. (simplify_binary_operation): Use plus_minus_operand_p. * gcc.dg/pr18928-1.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92109 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): In the CONCAT case, check whetherrsandifo2004-12-091-7/+12
| | | | | | | | | | | the request subreg is entirely contained in the requested component. (simplify_gen_subreg): Return null for CONCATs that are rejected by simplify_subreg. * expmed.c (store_bit_field): Create a temporary when changing the value to an integer mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91965 138bc75d-0d04-0410-961f-82ee72b054a4
* PR 18774rth2004-12-031-0/+4
| | | | | | | * simplify-rtx.c (simplify_immed_subreg): Fail complex modes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91672 138bc75d-0d04-0410-961f-82ee72b054a4
* PR rtl-optimization/18420uweigand2004-11-281-2/+1
| | | | | | | * simplify-rtx.c (simplify_gen_subreg): Revert 2004-10-28 change. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91419 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtl.h (validate_subreg): Declare.rth2004-11-241-19/+14
| | | | | | | | | | | | | * emit-rtl.c (validate_subreg): New. (gen_rtx_SUBREG): Use it. * simplify-rtx.c (simplify_subreg): Likewise. (simplify_gen_subreg): Likewise. Remove duplicate asserts. * expr.c (emit_move_insn_1): Tidy complex move code. Use memory fallback whenever gen_realpart/gen_imagpart would not be able to create SUBREGs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91126 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): Use subreg_regno_offset directlyrth2004-11-231-3/+4
| | | | | | | instead of using a SUBREG temporary. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91114 138bc75d-0d04-0410-961f-82ee72b054a4
* rtl-optimization/18614uros2004-11-231-0/+1
| | | | | | | | | | | | | * simplify-rtx.c (simplify_binary_operation): Do not simplify inner elements of constant arguments of VEC_CONCAT insn. testsuite: * gcc.dg/pr18614-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91094 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_ternary_operation): Usealdyh2004-11-201-1/+1
| | | | | | | trunc_int_for_mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90948 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/15286uweigand2004-10-281-1/+2
| | | | | | | | | | | | * final.c (alter_subreg): Compute correct offset to use with paradoxical SUBREGs of memory operands. * recog.c (general_operand): Allow paradoxical SUBREGs of memory operands after reload. * simplify-rtx.c (simplify_gen_subreg): Fail if simplify_subreg has failed when passed a hard register. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89752 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-10-18 Pat Haugen <pthaugen@us.ibm.com>dje2004-10-181-2/+1
| | | | | | | | | | * simplify-rtx.c (mode_signbit_p): Externalize function... * rtl.h (mode_signbit_p): ... to here. * combine.c (simplify_shift_const): Recognize PLUS signbit as canonical form of XOR signbit and move to outer op. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89235 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-10-09 Roger Sayle <roger@eyesopen.com>sayle2004-10-091-8/+34
| | | | | | | | | | | | | | | | | | | | | PR rtl-optimization/17853 * simplify-rtx.c (simplify_relational_operation): Correct comment. Reorganize handling of comparison operations with floating point results (always return 0.0 even without FLOAT_STORE_FLAG_VALUE). Likewise, introduce support for comparison operations with vector result types, introducing a new VECTOR_STORE_FLAG_VALUE target macro. * doc/rtl.texi: Document new VECTOR_STORE_FLAG_VALUE target macro. * doc/tm.texi: Likewise. 2004-10-09 Stuart Hastings <stuart@apple.com> Roger Sayle <roger@eyesopen.com> PR rtl-optimization/17853 * gcc.dg/i386-mmx-5.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88826 138bc75d-0d04-0410-961f-82ee72b054a4
* * ra-build.c (copy_insn_p, remember_move, defuse_overlap_p_1,nathan2004-09-091-129/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | live_out_1, prune_hardregs_for_mode, init_one_web_common, reinit_one_web, add_subweb, add_subweb_2, init_web_parts, record_conflict, compare_and_free_webs, init_webs_defs_uses, parts_to_webs_1, parts_to_webs, reset_conflicts, check_conflict_numbers, remember_web_was_spilled, handle_asm_insn, ra_build_free): Use gcc_assert and gcc_unreachable instead of abort. * ra-colorize.c (push_list, put_web, reset_lists, put_web_at_end, put_move, remove_move, combine, select_spill, colorize_one_web, try_recolor_web, insert_coalesced_conflicts, check_colors, break_precolored_alias, restore_conflicts_from_coalesce, sort_and_combine_web_pairs, check_uncoalesced_moves): Likewise. * ra-rewrite.c (spill_coalescing, slots_overlap_p, emit_loads, reloads_to_loads, rewrite_program2, emit_colors): Likewise. * ra.c (first_hard_reg, create_insn_info, find_subweb, init_ra, check_df): Likewise. * real.c (do_add, do_multiply, do_divide, do_compare, do_fix_trunc, real_arithmetic, real_compare, real_exponent, real_ldexp, real_identical, real_to_integer, real_to_integer2, real_to_decimal, real_to_hexadecimal, real_from_integer, ten_to_ptwo, ten_to_mptwo, real_digit, real_nan, real_maxval, round_for_format, real_convert, real_to_target, real_from_target, real_hash, encode_ieee_single, encode_ieee_double, encode_ieee_extended, encode_ieee_quad, encode_vax_f, encode_vax_d, encode_vax_g, encode_i370_single, encode_i370_double, encode_c4x_single, encode_c4x_extended): Likewise. * recog.c (validate_change, validate_replace_rtx_1, asm_operand_ok, extract_insn, peep2_next_insn, peep2_reg_dead_p, peep2_find_free_register, peephole2_optimize, store_data_bypass_p, if_test_bypass_p): Likewise. * reg-stack.c (record_label_references, get_asm_operand_n_inputs, stack_result, remove_regno_note, get_hard_regnum, emit_pop_insn, emit_swap_insn, swap_to_top, move_for_stack_reg, subst_stack_regs_pat, subst_asm_stack_regs, change_stack, compensate_edge, convert_regs_1): Likewise. * regclass.c (init_reg_sets, init_reg_sets_1, memory_move_secondary_cost): Likewise. * regrename.c (note_sets, clear_dead_regs, scan_rtx_reg, scan_rtx): Likewise. * reload.c (push_secondary_reload, find_valid_class, push_reload, operands_match_p, decompose, immune_p, find_reloads, find_reloads_toplev, find_reloads_address_1, subst_reloads, copy_replacements, refers_to_regno_for_reload_p, reg_overlap_mentioned_for_reload_p): Likewise. * reload1.c (compute_use_by_pseudos, replace_pseudos_in, reload, count_pseudo, find_reg, eliminate_regs, eliminate_regs_in_insn, verify_initial_elim_offsets, finish_spills, clear_reload_reg_in_use, reload_reg_free_p, reload_reg_reaches_end_p, reloads_conflict, choose_reload_regs, merge_assigned_reloads, emit_input_reload_insns, do_output_reload, fixup_abnormal_edges): Likewise. * reorg.c (stop_search_p, emit_delay_sequence, get_jump_flags, fill_slots_from_thread, relax_delay_slots): Likewise. * resource.c (mark_referenced_resources, mark_set_resources): Likewise. * rtl.c (copy_rtx, rtx_equal_p): Likewise. * rtlanal.c (insn_dependent_p, reg_overlap_mentioned_p, dead_or_set_p, find_reg_fusage, remove_note, replace_rtx, subreg_lsb_1, subreg_regno_offset, subreg_offset_representable_p, find_first_parameter_load, can_hoist_insn_p, hoist_update_store, hoist_insn_after, hoist_insn_to_edge, nonzero_bits1): Likewise. * rtlhooks.c (gen_lowpart_general): Likewise. * sbitmap.c (sbitmap_difference): Likewise. * sched-deps.c (add_dependence, sched_analyze_1, sched_analyze_2, sched_analyze, add_forward_dependence): Likewise. * sched-ebb.c (fix_basic_block_boundaries, schedule_ebb): Likewise. * sched-rgn.c (debug_regions, compute_trg_info, schedule_region, schedule_insns): Likewise. * sched-vis.c (print_pattern): Likewise. * sdbout.c (sdbout_symbol, sdbout_toplevel_data): Likewise. * simplify-rtx.c (simplify_unary_operation, simplify_binary_operation, simplify_const_relational_operation, simplify_ternary_operation, simplify_immed_subreg, simplify_subreg, simplify_gen_subreg): Likewise. * sreal.c (copy, sreal_sub, sreal_div): Likewise. * stmt.c (force_label_rtx, expand_goto, expand_asm_operands, resolve_operand_name_1, expand_return, expand_decl, expand_anon_union_decl, emit_case_bit_tests, expand_case): Likewise. * stor-layout.c (put_pending_size, smallest_mode_for_size, int_mode_for_mode, layout_decl, finish_builtin_struct, layout_type, set_sizetype, get_mode_bounds): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87244 138bc75d-0d04-0410-961f-82ee72b054a4
* * doc/md.texi (shift patterns): New anchor. Add reference torsandifo2004-09-041-30/+15
| | | | | | | | | | | | | | | | | | | | | | | TARGET_SHIFT_TRUNCATION_MASK. * doc/tm.texi (TARGET_SHIFT_TRUNCATION_MASK): Document. * target.h (shift_truncation_mask): New target hook. * targhook.h (default_shift_truncation_mask): Declare. * targhook.c (default_shift_truncation_mask): Define. * target-def.h (TARGET_SHIFT_TRUNCATION_MASK): Define. (TARGET_INITIALIZER): Include it. * simplify-rtx.c (simplify_binary_operation): Combine ASHIFT, ASHIFTRT and LSHIFTRT cases. Truncate arg1 if SHIFT_COUNT_TRUNCATED, otherwise reject all out-of-range values. Fix sign-extension code for modes whose width is smaller than HOST_BITS_PER_WIDE_INT. * optabs.c (simplify_expand_binop, force_expand_binop): New functions. (expand_superword_shift, expand_subword_shift): Likewise. (expand_doubleword_shift_condmove, expand_doubleword_shift): Likewise. (expand_binop): Use them to implement double-word shifts. * config/arm/arm.c (arm_shift_truncation_mask): New function. (TARGET_SHIFT_TRUNCATION_MASK): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87079 138bc75d-0d04-0410-961f-82ee72b054a4
* * cfgexpand.c (tree_expand_cfg): Fix comment.steven2004-07-271-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * calls.c (expand_call): Ignore rtx_equal_function_value_matters. * function.c (purge_single_hard_subreg_set, purge_hard_subreg_sets): Remove. (prepare_function_start): Don't set rtx_equal_function_value_matters. * integrate.c (copy_rtx_and_substitute): Don't test for it. * passes.c (rest_of_compilation): Don't call purge_hard_subreg_sets. Don't set rtx_equal_function_value_matters. Don't register RTL hooks here again. Update leading comment. * rtl.c (rtx_equal_function_value_matters): Remove. (rtx_equal_p): Don't test for it. * simplify-rtx.c (simplify_binary_operation, simplify_subreg): Likewise. * rtl.h (enum insn_note): Remove NOTE_INSN_LOOP_END_TOP_COND. * rtl.c (note_insn_name): Likewise. * emit-rtl.c (remove_unnecessary_notes): Don't handle it. * final.c (final_scan_insn): Likewise. * except.c (finish_eh_generation): Don't call cfg_cleanup from here. * passes.c (rest_of_handle_eh): Do it here. * stmt.c (struct nesting): Remove struct nesting block member. (struct stmt_status): Remove x_block_start_count field. (current_block_start_count): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85228 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-common.c (disable_builtin_function): Rename variable n tobernie2004-07-261-19/+19
| | | | | | | | | | | | new_disabled_builtin. * c-decl.c (duplicate_decls): Rename parameter decl to new_decl. Rename local variable old to old_decl. * gensupport.c (shift_output_template): Rename parameter old to src. * simplify-rtx.c (simplify_replace_rtx): Rename parameter oldx to old_rtx and newx to new_rtx. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85175 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-common.c: Rename all identifiers named `new'.bernie2004-07-251-30/+30
| | | | | | | | | * c-decl.c: Likewise. * gensupport.c: Likewise. * simplify-rtx.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85159 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-14 Paolo Bonzini <bonzini@gnu.org>bonzini2004-07-141-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * expr.c (enqueue_insn, finish_expr_for_function, protect_from_queue, queued_subexp_p, mark_queue, emit_insns_enqueued_after_mark, emit_queue, expand_increment): Remove. (store_constructor): Expand increment as an assignment. (expand_expr_real_1 <case PREINCREMENT_EXPR, case PREDECREMENT_EXPR, case POSTINCREMENT_EXPR, case POSTDECREMENT_EXPR>): Abort. * expr.h (QUEUED_VAR, QUEUED_INSN, QUEUED_COPY, QUEUED_BODY, QUEUED_NEXT, finish_expr_for_function, protect_from_queue, emit_queue, queued_subexp_p): Remove. * function.h (pending_chain, x_pending_chain): Remove. * rtl.def (QUEUED): Remove. * emit-rtl.c (copy_insn_1, copy_most_rtx, set_used_flags, verify_rtx_sharing): Remove references to QUEUED. * genattrtab.c (attr_copy_rtx, clear_struct_flag, encode_units_mask): Likewise. * local-alloc.c (equiv_init_varies_p): Likewise. * rtl.c (copy_rtx): Likewise. * rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise. * simplify-rtx.c (simplify_gen_subreg): Likewise. * config/mn10300/mn10300.c (legitimate_pic_operand_p): Likewise. * builtins.c (expand_builtin, expand_builtin_apply, expand_builtin_mathfn, expand_builtin_mathfn_2, expand_builtin_mathfn_3, expand_builtin_setjmp_setup): Remove calls to emit_queue and protect_from_queue. * calls.c (expand_call, precompute_arguments, precompute_register_parameters, rtx_for_function_call, store_one_arg): Likewise. * dojump.c (do_compare_and_jump, do_jump): Likewise. * explow.c (memory_address): Likewise. * expmed.c (clear_by_pieces_1, clear_storage, clear_storage_via_libcall, emit_group_load, emit_group_store, emit_store_flag, expand_expr_real_1, store_by_pieces, store_constructor, store_expr, try_casesi, try_tablejump): Likewise. * function.c (expand_pending_sizes): Likewise. * optabs.c (emit_cmp_and_jump_insns, emit_conditional_add, emit_conditional_move, expand_fix, expand_float, prepare_cmp_insn): Likewise. * stmt.c (emit_case_bit_tests, expand_asm_expr, expand_computed_goto, expand_decl_init, expand_end_case_type, expand_end_stmt_expr, expand_expr_stmt_value, expand_return, expand_start_case, optimize_tail_recursion): Likewise. * config/c4x/c4x.c (c4x_expand_builtin): Likewise. * config/s390/s390.c (s390_expand_cmpmem): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84675 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_const_relational_operation): Onlyrth2004-07-101-1/+1
| | | | | | | look at bounds of scalar integers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84427 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation) <PLUS, MINUS>: Usesayle2004-07-011-11/+9
| | | | | | | | rtx_cost instead of "had_mult" to determine whether the transformed expression is cheaper than the original. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83981 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-01 Jerry Quinn <jlquinn@optonline.net>jlquinn2004-07-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * alias.c (get_alias_set, canon_rtx, get_addr, nonoverlapping_memrefs_p, nonlocal_referenced_p_1, memory_modified_1): Use MEM_P. * builtins.c (expand_builtin_prefetch, expand_builtin_profile_func, expand_builtin): Likewise. * calls.c (expand_call, emit_library_call_value_1, store_one_arg): Likewise. * combine.c (can_combine_p, combinable_i3pat, try_combine, find_split_point, combine_simplify_rtx, simplify_set, make_extraction, rtx_equal_for_field_assignment_p, gen_lowpart_for_combine, record_dead_and_set_regs_1, get_last_value_validate, mark_used_regs_combine, move_deaths, unmentioned_reg_p_1): Likewise. * cse.c (check_dependence, canon_hash, equiv_constant, gen_lowpart_if_possible, cse_insn, invalidate_from_clobbers, cse_around_loop, cse_check_loop_start, cse_set_around_loop, count_reg_usage): Likewise. * cselib.c (rtx_equal_for_cselib_p, add_mem_for_addr, cselib_lookup, cselib_invalidate_mem, cselib_invalidate_rtx, cselib_record_set, cselib_record_sets): Likewise. * dbxout.c (PARM_PASSED_IN_MEMORY, dbxout_symbol, dbxout_symbol_location, dbxout_parms, dbxout_reg_parms): Likewise. * ddg.c (mark_mem_use, mark_mem_store, rtx_mem_access_p): Likewise. * df.c (df_uses_record): Likewise. * dojump (do_jump): Likewise. * dwarf2out.c (stack_adjust_offset, mem_loc_descriptor, loc_descriptor_from_tree, rtl_for_decl_location, add_bound_info, decl_start_label): Likewise. * emit-rtl.c (gen_complex_constant_part, gen_highpart, operand_subword, change_address_1, make_safe_from): Likewise. * explow.c (break_out_memory_refs, copy_all_regs, validize_mem, stabilize, force_not_mem): Likewise. * expmed.c (store_bit_field, store_split_bit_field, extract_bit_field, expand_mult_const, expand_divmod, emit_store_flag): Likewise. * expr.c (convert_move, convert_modes, emit_block_move, emit_group_load, emit_group_store, clear_storage, emit_move_insn, emit_move_insn_1, expand_assignment, store_expr, store_constructor_field, store_constructor, store_field, force_operand, safe_from_p, expand_expr_real_1, expand_increment): Likewise. * final.c (cleanup_subreg_operands, alter_subreg, get_mem_expr_from_op): Likewise. * flow.c (notice_stack_pointer_modification_1, init_propagate_block_info, insn_dead_p, mark_set_1, mark_used_regs): Likewise. * function.c (mark_temp_addr_taken, preserve_temp_slots, preserve_rtl_expr_result, put_var_into_stack, fixup_var_refs_1, optimize_bit_field, flush_addressof, purge_addressof_1, instantiate_decl, instantiate_virtual_regs_1, assign_parms, setjmp_protect, setjmp_protect_args, fix_lexical_addr, keep_stack_depressed): Likewise. * ifcvt.c (noce_try_cmove_arith, noce_try_abs, noce_operand_ok, noce_process_if_block, find_memory): Likewise. * integrate.c (subst_constants, allocate_initial_values): Likewise. * local-alloc.c (validate_equiv_mem_from_store, memref_referenced_p, update_equiv_regs): Likewise. * loop.c (scan_loop, prescan_loop, note_addr_stored, check_store, maybe_eliminate_biv_1, find_mem_in_note_1): Likewise. * optabs.c (expand_abs, emit_unop_insn): Likewise. * passes.c (rest_of_handle_final): Likewise. * postreload.c (reload_cse_simplify_set, reload_cse_simplify_operands, move2add_note_store): Likewise. * ra-build.c (detect_remat_webs): Likewise. * ra-debug.c (dump_static_insn_cost): Likewise. * ra-rewrite.c (slots_overlap_p, insert_stores): Likewise. * recog.c (validate_change, apply_change_group, cancel_changes, validate_replace_rtx_1, general_operand, register_operand, nonmemory_operand, push_operand, pop_operand, memory_operand, indirect_operand, asm_operand_ok, offsettable_memref_p, offsettable_nonstrict_memref_p, constrain_operands, store_data_bypass_p): Likewise. * reg-stack.c (subst_stack_regs_pat): Likewise. * regclass.c (record_operand_costs, scan_one_insn, record_reg_classes, copy_cost, reg_scan_mark_refs): Likewise. * regmove.c (optimize_reg_copy_3, stack_memref_p, combine_stack_adjustments_for_block): Likewise. * regrename.c (copyprop_hardreg_forward_1): Likewise. * reload.c (can_reload_into, push_reload, decompose, immune_p, find_reloads, find_reloads_address, find_reloads_address_1, reg_overlap_mentioned_for_reload_p, refers_to_mem_for_reload_p, find_equiv_reg): Likewise. * reload1.c (reload, eliminate_regs, eliminate_regs_in_insn, reload_as_needed, choose_reload_regs, emit_input_reload_insns, do_input_reload, emit_reload_insns, gen_reload, delete_output_reload, delete_address_reloads): Likewise. * resource.c (mark_referenced_resources): Likewise. * rtlanal.c (get_jump_table_offset, count_occurrences, reg_referenced_p, reg_set_p, set_of_1, set_noop_p, reg_overlap_mentioned_p, note_uses, replace_regs, nonzero_bits1, num_sign_bit_copies1): Likewise. * rtlhooks.c (gen_lowpart_general): Likewise. * sched-deps.c (sched_analyze_1, sched_analyze_2): Likewise. * sdbout.c (PARM_PASSED_IN_MEMORY, sdbout_symbol, sdbout_toplevel_data, sdbout_parms, sdbout_reg_parms, sdbout_global_decl): Likewise. * simplify-rtx.c (simplify_subreg): Likewise. * stmt.c (expand_asm_operands, expand_expr_stmt_value, expand_decl, expand_anon_union_decl, expand_end_case_type): Likewise. * unroll.c (calculate_giv_inc): Likewise. * var-tracking.c (stack_adjust_offset_pre_post, bb_stack_adjust_offset, track_expr_p, count_uses, add_uses, add_stores, compute_bb_dataflow, vt_get_decl_and_offset, vt_add_function_parameters): Likewise. * varasm.c (make_var_volatile, notice_global_symbol, assemble_external, decode_addr_const, mark_weak, default_encode_section_info): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83980 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation): Simplifyjakub2004-06-301-0/+46
| | | | | | | | | | | | | | ((A & N) + B) & M -> (A + B) & M if M is pow2 minus 1 constant and N has at least all bits in M set as well. PR tree-optimization/15310 * expr.c (expand_assignment): Optimize += or -= on a bit field in most significant bits. * gcc.c-torture/execute/20040629-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83900 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-06-15 Jerry Quinn <jlquinn@optonline.net>jlquinn2004-06-151-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * alias.c (record_set, record_base_value, canon_rtx, get_addr, nonlocal_mentioned_p_1, init_alias_analysis): Use REG_P. * bt-load.c (find_btr_reference, insn_sets_btr_p, note_btr_set): Likewise. * builtins.c (expand_builtin_setjmp, expand_builtin_apply, expand_builtin_mathfn, expand_builtin_strlen, expand_builtin_memcmp, expand_builtin_strcmp, expand_builtin_strncmp, expand_builtin_frame_address): Likewise. * caller-save.c (mark_set_regs, add_stored_regs, mark_referenced_regs, insert_one_insn): Likewise. * calls.c (prepare_call_address, precompute_register_parameters, precompute_arguments, expand_call, emit_library_call_value_1): Likewise. * cfganal.c (flow_active_insn_p): Likewise. * combine.c (set_nonzero_bits_and_sign_copies, can_combine_p, combinable_i3pat, try_combine, find_split_point, COMBINE_RTX_EQUAL_P, subst, combine_simplify_rtx, simplify_if_then_else, simplify_set, make_extraction, recog_for_combine, gen_lowpart_for_combine, simplify_comparison, record_dead_and_set_regs_1, record_dead_and_set_regs, record_promoted_value, check_promoted_subreg, get_last_value_validate, get_last_value, reg_dead_at_p_1, reg_bitfield_target_p, distribute_notes, unmentioned_reg_p_1): Likewise. * conflict.c (mark_reg): Likewise. * cse.c (HASH, COST, COST_IN, approx_reg_cost_1, notreg_cost, mention_regs, insert_regs, lookup, lookup_for_remove, insert, merge_equiv_classes, flush_hash_table, invalidate, remove_invalid_refs, remove_invalid_subreg_refs, rehash_using_reg, invalidate_for_call, use_related_value, canon_hash, exp_equiv_p, cse_rtx_varies_p, canon_reg, find_best_addr, fold_rtx, equiv_constant, record_jump_cond, cse_insn, addr_affects_sp_p, invalidate_from_clobbers, cse_process_notes, cse_around_loop, cse_set_around_loop, count_reg_usage, set_live_p, cse_change_cc_mode, cse_cc_succs, cse_condition_code_reg): Likewise. * cselib.c (cselib_reg_set_mode, rtx_equal_for_cselib_p, cselib_lookup, cselib_invalidate_regno, cselib_invalidate_rtx, cselib_record_set, cselib_record_sets): Likewise. * dbxout.c (dbxout_symbol_location, dbxout_parms, dbxout_reg_parms, dbxout_block): Likewise. * df.c (df_ref_record, df_def_record_1, df_uses_record): Likewise. * dojump.c (do_jump): Likewise. * dwarf2out.c (dwarf2out_frame_debug_expr, is_pseudo_reg, is_based_loc, rtl_for_decl_location): Likewise. * emit-rtl.c (set_reg_attrs_for_parm, set_decl_rtl, set_decl_incoming_rtl, mark_user_reg): Likewise. * explow.c (copy_all_regs, copy_all_regs, memory_address, force_reg, copy_to_suggested_reg, allocate_dynamic_stack_space, probe_stack_range, hard_function_value): Likewise. * expmed.c (store_bit_field, store_fixed_bit_field, store_split_bit_field, extract_bit_field, extract_fixed_bit_field, extract_split_bit_field, expand_divmod, emit_store_flag_force): Likewise. * expr.c (convert_move, convert_modes, block_move_libcall_safe_for_call_parm, emit_group_load, use_reg, use_group_regs, emit_move_insn, emit_move_insn_1, compress_float_constant, push_block, emit_single_push_insn, emit_push_insn, get_subtarget, expand_assignment, store_expr, store_constructor, store_field, force_operand, safe_from_p, expand_expr_real_1, expand_increment, do_store_flag, do_tablejump): Likewise. * final.c (profile_function, final_scan_insn, alter_subreg, get_mem_expr_from_op, output_asm_operand_names, output_operand, only_leaf_regs_used, leaf_renumber_regs_insn): Likewise. * flow.c (verify_wide_reg_1, mark_regs_live_at_end, find_regno_partial, propagate_one_insn, init_propagate_block_info, insn_dead_p, libcall_dead_p, mark_set_1, not_reg_cond, attempt_auto_inc, find_auto_inc, mark_used_regs, count_or_remove_death_notes_bb): Likewise. * function.c (find_temp_slot_from_address, update_temp_slot_address, preserve_temp_slots, put_var_into_stack, fixup_var_refs_insn, fixup_var_refs_1, fixup_stack_1, optimize_bit_field, flush_addressof, put_addressof_into_stack, purge_addressof_1, insns_for_mem_walk, purge_single_hard_subreg_set, instantiate_decl, instantiate_virtual_regs_1, aggregate_value_p, assign_parms, promoted_input_arg, setjmp_vars_warning, setjmp_args_warning, setjmp_protect, setjmp_protect_args, fix_lexical_addr, expand_function_start, diddle_return_value, clobber_return_register, expand_function_end, keep_stack_depressed, handle_epilogue_set, update_epilogue_consts): Likewise. * genemit.c (gen_exp, gen_insn): Likewise. * genrecog.c (make_insn_sequence): Likewise. * global.c (global_conflicts, expand_preferences, mark_reg_store, mark_reg_conflicts, set_preference, reg_becomes_live, build_insn_chain, mark_reg_change): Likewise. * haifa_sched.c (CONST_BASED_ADDRESS_P, find_set_reg_weight): Likewise. * ifcvt.c (noce_try_abs, noce_get_condition, noce_process_if_block): Likewise. * integrate.c (copy_rtx_and_substitute, try_constants, subst_constants, mark_stores, allocate_initial_values): Likewise. * jump.c (reversed_comparison_code_parts, delete_prior_computation, delete_computation, rtx_renumbered_equal_p, true_regnum, reg_or_subregno): Likewise. * lcm.c (reg_dies, reg_becomes_live): Likewise. * local-alloc.c (validate_equiv_mem_from_store, validate_equiv_mem, update_equiv_regs, no_equiv, block_alloc, combine_regs, reg_is_set, wipe_dead_reg, no_conflict_p): Likewise. * loop-iv.c (simple_reg_p, simple_set_p, kill_sets, iv_get_reaching_def, iv_analyze_biv, altered_reg_used, mark_altered, simple_rhs_p, simplify_using_assignment, implies_p): Likewise. * loop.c (scan_loop, combine_movables, rtx_equal_for_loop_p, move_movables, note_set_pseudo_multiple_uses, consec_sets_invariant_p, find_single_use_in_loop, count_one_set, loop_bivs_init_find, loop_givs_rescan, check_insn_for_bivs, check_insn_for_givs, valid_initial_value_p, simplify_giv_expr, consec_sets_giv, loop_regs_update, check_dbra_loop, maybe_eliminate_biv, maybe_eliminate_biv_1, record_initial, update_reg_last_use, canonicalize_condition, loop_regs_scan, load_mems, try_copy_prop, try_swap_copy_prop): Likewise. * optabs.c (expand_binop, expand_vector_binop, expand_vector_unop, expand_abs, emit_no_conflict_block, emit_libcall_block, expand_float): Likewise. * postreload.c (reload_cse_simplify, reload_cse_simplify_set, reload_cse_simplify_operands, reload_combine, reload_combine_note_store, reload_combine_note_use, reload_cse_move2add, move2add_note_store): Likewise. * print-rtl.c (print_rtx): Likewise. * ra-build.c (copy_insn_p, remember_move, init_one_web_common, contains_pseudo, handle_asm_insn): Likewise. * ra-debug.c (ra_print_rtx_object, dump_constraints, dump_static_insn_cost): Likewise. * ra-rewrite.c (slots_overlap_p, emit_colors, remove_suspicious_death_notes): Likewise. * recog.c (validate_replace_rtx_1, find_single_use_1, find_single_use, register_operand, scratch_operand, nonmemory_operand, constrain_operands): Likewise. * reg-stack (check_asm_stack_operands, remove_regno_note, emit_swap_insn, swap_rtx_condition, subst_stack_regs_pat, subst_asm_stack_regs): Likewise. * regclass.c (scan_one_insn, record_reg_classes, copy_cost, record_address_regs, reg_scan_mark_refs): Likewise. * regmove.c (discover_flags_reg, replacement_quality, copy_src_to_dest, reg_is_remote_constant_p, regmove_optimize, fixup_match_1): Likewise. * regrename.c (note_sets, clear_dead_regs, build_def_use, kill_value, kill_set_value, copyprop_hardreg_forward_1): Likewise. * reload.c (MATCHES, push_secondary_reload, find_reusable_reload, reload_inner_reg_of_subreg, can_reload_into, push_reload, combine_reloads, find_dummy_reload, hard_reg_set_here_p, operands_match_p, decompose, find_reloads, find_reloads_toplev, find_reloads_address, subst_indexed_address, find_reloads_address_1, find_reloads_subreg_address, find_replacement, refers_to_regno_for_reload_p, reg_overlap_mentioned_for_reload_p, refers_to_mem_for_reload_p, find_equiv_reg, regno_clobbered_p): Likewise. * reload1.c (replace_pseudos_in, reload, calculate_needs_all_insns, find_reg, delete_dead_insn, alter_reg, eliminate_regs, elimination_effects, eliminate_regs_in_insn, scan_paradoxical_subregs, forget_old_reloads_1, reload_reg_free_for_value_p, choose_reload_regs, emit_input_reload_insns, emit_output_reload_insns, do_input_reload, do_output_reload, emit_reload_insns, gen_reload, delete_address_reloads_1, inc_for_reload): Likewise. * reorg.c (update_reg_dead_notes, fix_reg_dead_note, update_reg_unused_notes, fill_slots_from_thread): Likewise. * resource.c (update_live_status, mark_referenced_resources, mark_set_resources, mark_target_live_regs): Likewise. * rtlanal.c (nonzero_address_p, get_jump_table_offset, global_reg_mentioned_p_1, reg_mentioned_p, reg_referenced_p, reg_set_p, set_noop_p, find_last_value, refers_to_regno_p, note_stores, dead_or_set_p, dead_or_set_regno_p, find_regno_note, find_reg_fusage, find_regno_fusage, replace_regs, regno_use_in, parms_set, find_first_parameter_load, keep_with_call_p, hoist_test_store, hoist_update_store, address_cost, nonzero_bits1, num_sign_bit_copies1): Likewise. * rtlhooks.c (gen_lowpart_general): Likewise. * sched-deps.c (deps_may_trap_p, sched_analyze_1, sched_analyze_insn, sched_analyze): Likewise. * sched-rgn.c (check_live_1, update_live_1, sets_likely_spilled_1): Likewise. * sdbout.c (sdbout_symbol, sdbout_parms, sdbout_reg_parms): Likewise. * simplify-rtx.c (simplify_replace_rtx, simplify_unary_operation, simplify_binary_operation, simplify_const_relational_operation, simplify_subreg): Likewise. * stmt.c (decl_conflicts_with_clobbers_p, expand_asm_operands, expand_end_stmt_expr, expand_return, expand_decl, expand_anon_union_decl): Likewise. * unroll.c (precondition_loop_p, calculate_giv_inc, copy_loop_body, find_splittable_regs, find_splittable_givs, find_common_reg_term, loop_iterations): Likewise. * var-tracking.c (variable_union, variable_part_different_p, variable_different_p, count_uses, add_uses, add_stores, compute_bb_dataflow, set_variable_part, delete_variable_part, emit_notes_in_bb, vt_get_decl_and_offset, vt_add_function_parameters): Likewise. * varasm.c (assemble_variable): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83195 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/15945jakub2004-06-141-0/+35
| | | | | | | | * simplify-rtx.c (simplify_binary_operation): Don't optimize out Inf + -Inf, Inf - Inf, Inf / Inf and 0 * Inf if flag_trapping_math. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83121 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-05-25 Paolo Bonzini <bonzini@gnu.org>bonzini2004-05-271-2/+4
| | | | | | | | | | | | | | | | | | | | | | * combine.c (gen_binary): Remove. (known_cond, simplify_shift_const find_split_point, combine_simplify_rtx, simplify_if_then_else, simplify_set, simplify_logical, expand_field_assignment, extract_left_shift, force_to_mode, if_then_else_cond, apply_distributive_law, simplify_and_const_int, simplify_shift_const, gen_lowpart_for_combine, simplify_comparison, reversed_comparison): Replace with simplify_gen_binary, simplify_gen_relational or distribute_and_simplify_rtx. (distribute_and_simplify_rtx): New function. * simplify-rtx.c (simplify_binary_operation): Use nonzero_bits to simplify ANDs where we are turning off bits already known to be off in OP0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82317 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/15463rakdver2004-05-191-27/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * loop-iv.c (iv_number_of_iterations): Use trunc_int_for_mode on result of inverse. PR rtl-optimization/15274 * loop-iv.c (determine_max_iter, shorten_into_mode, iv_number_of_iterations): Handle constants correctly. * rtl.h (get_mode_bounds): Declaration changed. * stor-layout.c (get_mode_bounds): Return a constant suitable for the target mode. PR rtl-optimization/14692 * loop-unswitch.c (may_unswitch_on): Try folding the result. (unswitch_single_loop): Work correctly when may_unswitch_on returns a folded constant. * loop-iv.c (implies_p): Handle A < B ==> A + 1 <= B. * simplify-rtx.c (simplify_const_relational_operation): Optimize comparisons with mode bounds. * function.c (struct temp_slot): Add new field prev. (free_after_compilation, init_temp_slots): Free new fields. (cut_slot_from_list, insert_slot_to_list, temp_slots_at_level, max_slot_level, move_slot_to_level, make_slot_available): New functions. (assign_stack_temp_for_type, combine_temp_slots, find_temp_slot_from_address, preserve_temp_slots, preserve_rtl_expr_result, free_temp_slots, free_temps_for_rtl_expr, pop_temp_slots): Work with the new structure of lists. (mark_all_temps_used): Removed. * function.h (struct function): Field x_temp_slots replaced by x_used_temp_slots and x_avail_temp_slots. (temp_slots): Replaced by ... (used_temp_slots, avail_temp_slots): New. * tree.h (mark_all_temps_used): Declaration removed. * loop-iv.c (mark_single_set, get_biv_step_1, iv_analyze, simplify_using_assignment): Take the expression out of the expr_list wrapper. * loop-iv.c (iv_number_of_iterations): Improve clasification of infinite loops. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82028 138bc75d-0d04-0410-961f-82ee72b054a4
* Merge tree-ssa-20020619-branch into mainline.dnovillo2004-05-131-5/+0
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81764 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-05-01 Paolo Bonzini <bonzini@gnu.org>bonzini2004-05-011-1/+1
| | | | | | | | | * simplify-rtx.c (simplify_ternary_operation): When converting an IF_THEN_ELSE to a relational op, return correct mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81383 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-04-29 Paolo Bonzini <bonzini@gnu.org>bonzini2004-04-291-100/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | * combine.c (combine_simplify_rtx): Adjust call to use simplify_relational_operation. Do not use SELECT_CC_MODE when a comparison already has a MODE_CC mode. (simplify_set): simplify_relational_operation may now return another relational expression. * cse.c (fold_rtx): simplify_relational_operation now takes of computing the comparison mode. * dojump.c (compare_from_rtx): Use simplify_relational_operation, remove dead code. (do_compare_rtx_and_jump): Likewise. * integrate.c (subst_constants): simplify_relational_operation may now return another relational expression. * simplify-rtx.c (simplify_gen_relational): Move most code to the new simplify_relational_operation and simplify_relational_operation_1 functions. (simplify_relational_operation): Rewritten. (simplify_relational_operation_1): New function. (simplify_ternary_operation): simplify_relational_operation may now return another relational expression. (simplify_rtx): Remove unnecessary temp variable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81282 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation) <UDIV, DIV, UMOD, MOD>:sayle2004-04-121-43/+100
| | | | | | | | | | | Remove fall throughs. Convert 0/x and 0%x into x&0 when x has side-effects. Don't convert x/1.0 into x if we honor signaling NaNs. Convert x/-1.0 into -x if we don't honor signaling NaNs. Convert x/-1 into -x. Optimize x%1 into x&0 if x has side-effects. Optimize x%-1 into 0 (or x&0 if x has side-effects). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80625 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (mode_signbit_p): New function to check whethersayle2004-04-091-1/+74
| | | | | | | | | | | | | | | | | | | an RTX is an immediate constant that represents the most significant bit of a given machine mode. (simplify_unary_operation) <NOT>: Optimize ~(X+C) as X ^ ~C, where C is the sign bit. (simplify_binary_operation) <PLUS>: Optimize (X^C1) + C2 as X^(C1^C2) when C2 is the sign bit. (simplify_binary_operation) <XOR>: Canonicalize X^C as X+C when C is the sign bit. Optimize (X+C1) ^ C2 as X^(C1^C2) when C1 is the sign bit. * gcc.c-torture/execute/20040409-1.c: New test case. * gcc.c-torture/execute/20040409-2.c: New test case. * gcc.c-torture/execute/20040409-3.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80568 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation): Constant foldsayle2004-04-051-6/+25
| | | | | | | DIV, MOD, UDIV and UMOD using div_and_round_double. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80420 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c, attribs.c, bt-load.c, builtins.c, c-common.c,kazu2004-03-201-1/+1
| | | | | | | | | | | | c-decl.c, c-objc-common.c, c-typeck.c, calls.c, cfglayout.c, cse.c, dbxout.c, dwarf2out.c, except.c, final.c, haifa-sched.c, integrate.c, passes.c, rtlanal.c, sched-rgn.c, sched-vis.c, simplify-rtx.c, stor-layout.c, tree.c, varasm.c, vmsdbgout.c: Replace calls via (*targetm.foo) () with targetm.foo (). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79729 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation): Fix typo.rth2004-03-111-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79353 138bc75d-0d04-0410-961f-82ee72b054a4
* * fold-const.c (negate_expr_p) <RSHIFT_EXPR>: We can optimizesayle2004-03-111-0/+16
| | | | | | | | | | | | | | -((int)X>>C) where C is an integer constant one bit less than the size of X into (unsigned)X>>C. Similarly for unsigned->signed. (negate_expr) <RSHIFT_EXPR>: Implement the above transformations. * simplify-rtx.c (simplify_unary_operation): Also implement the above transformations at the RTL level. * gcc.c-torture/execute/20040311-1.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79334 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_const_relational_operation): New functionsayle2004-03-091-36/+45
| | | | | | | | | | | | | | | | | | | | | | | | | renamed from simplify_relational_operation. (simplify_relational_operation): Change prototype to accept an additional mode argument. Call simplify_const_relational_operation. (simplify_gen_relational): Update simplify_relational_operation call. (simplify_ternary_operation): Update simplify_relational_operation subroutine call to use simplify_const_relational_operation instead. * rtl.h (simplify_const_relational_operation): Prototype here. (simplify_relational_operation): Add addtional mode argument. * combine.c (combine_simplify_rtx): Update calls to simplify_relational_operation. (simplify_set): Likewise. (gen_binary): Likewise. * cse.c (fold_rtx): Likewise. * dojump.c (compare_from_rtx): Likewise. (do_compare_rtx_and_jump): Likewise. * integrate.c (subst_constants): Likewise. * unroll.c (simplify_cmp_and_jump_insns): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79187 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-03-05 Paolo Bonzini <bonzini@gnu.org>bonzini2004-03-051-2/+3
| | | | | | | | | * simplify-rtx.c (simplify_relational_operation): If flag_wrapv is set, do not move terms between the two side of a relational operator. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78962 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud