aboutsummaryrefslogtreecommitdiff
path: root/gcc/simplify-rtx.c
AgeCommit message (Collapse)AuthorFilesLines
2005-08-21simplify-rtx.c (simplify_immed_subreg): Only clear up to elem_bitsize bits, ↵Jakub Jelinek1-1/+1
not max_bitsize. * simplify-rtx.c (simplify_immed_subreg) <case CONST_DOUBLE>: Only clear up to elem_bitsize bits, not max_bitsize. * gcc.target/i386/sse-4.c: New test. From-SVN: r103318
2005-08-16simplify-rtx.c (simplify_const_relational_operation): When extracting ↵Ulrich Weigand1-1/+11
arguments of a COMPARE, recompute the mode as well. * simplify-rtx.c (simplify_const_relational_operation): When extracting arguments of a COMPARE, recompute the mode as well. From-SVN: r103143
2005-07-28re PR rtl-optimization/23047 (Combine ignores flag_wrapv)James A. Morrison1-2/+6
2005-07-27 James A. Morrison <phython@gcc.gnu.org> PR rtl-optimization/23047 * simplify-rtx.c (simplify_const_relational_operation): Respect flag_wrapv for comparisons with ABS. From-SVN: r102459
2005-06-25Update FSF address.Kelley Cook1-2/+2
From-SVN: r101317
2005-05-26simplify-rtx.c (avoid_constant_pool_reference): Support offsetted addresses ↵Paolo Bonzini1-14/+29
in the constant pool. 2005-05-26 Paolo Bonzini <bonzini@gnu.org> * simplify-rtx.c (avoid_constant_pool_reference): Support offsetted addresses in the constant pool. From-SVN: r100198
2005-04-24re PR rtl-optimization/21163 (internal compiler error: in ↵Richard Henderson1-49/+61
output_constant_pool_2, at varasm.c:3135) PR rtl-opt/21163 * simplify-rtx.c (simplify_binary_operation) <IOR>: Check for SCALAR_INT_MODE_P instead of not MODE_CC before returning constm1_rtx. <AND, LSHIFTRT, UMIN>: Use CONST0_RTX. <UDIV, UMOD>: Use CONST0_RTX and CONST1_RTX. <DIV, MOD>: Likewise. From-SVN: r98678
2005-04-23re PR rtl-optimization/21102 (ICE: in immed_double_const, on SSE2 intrinsics)Richard Henderson1-2/+2
PR rtl-opt/21102 * simplify-rtx.c (simplify_binary_operation): Fix mode check before performing some integral scalar simplifications. From-SVN: r98631
2005-04-13Fix result of folding of xor operation on two identical vectors.Fariborz Jahanian1-1/+1
OKed by Roger Sayle. From-SVN: r98107
2005-04-07re PR target/20093 (23_containers/deque/cons/2.cc execution test fails on ↵Joseph Myers1-1/+1
ia64-hpux, -milp32) PR target/20093 * simplify-rtx.c (simplify_unary_operation_1): Check SUBREG_PROMOTED_UNSIGNED_P (op) > 0 for zero-extension. From-SVN: r97775
2005-03-24re PR rtl-optimization/20532 (Bad code for DImode left shifts by 31 and then 1)Alexandre Oliva1-18/+72
gcc/ChangeLog: PR rtl-optimization/20532 * simplify-rtx.c (simplify_binary_operation_1): Protect from overflow when adding coefficients for PLUS or MINUS. (simplify_binary_operation_1): Handle CONST_DOUBLE exact power of two as multiplier. gcc/testsuite/ChangeLog: PR rtl-optimization/20532 * gcc.target/i386/badshift.c: New. From-SVN: r96982
2005-03-21rtl.h (struct rtx_hooks): Add gen_lowpart_no_emit.Paolo Bonzini1-22/+3
2005-03-21 Paolo Bonzini <bonzini@gnu.org> * rtl.h (struct rtx_hooks): Add gen_lowpart_no_emit. * rtlhooks.c (gen_lowpart_no_emit_general): New. * rtlhooks-def.h (gen_lowpart_no_emit_general): Declare. (RTL_HOOKS_GEN_LOWPART_NO_EMIT): New. * simplify-rtx.c (simplify_binary_operation_1): Use it. From-SVN: r96799
2005-03-10re PR rtl-optimization/20412 (RTL checking failure in the combiner)Andrew Pinski1-1/+1
PR rtl-opt/20412 * simplify-rtx.c (simplify_relational_operation_1): Fix typo - check the correct mode. PR rtl-opt/20412 * gcc.c-torture/compile/pr20412.c: New test. From-SVN: r96264
2005-03-05combine.c (simplify_and_const_int): Use gen_int_mode instead of GEN_INT ↵Kazu Hirata1-5/+2
(trunc_int_for_mode (...)). * combine.c (simplify_and_const_int): Use gen_int_mode instead of GEN_INT (trunc_int_for_mode (...)). * loop-iv.c (iv_number_of_iterations): Likewise. * postreload.c (reload_cse_move2add): Likewise. * simplify-rtx.c (simplify_const_unary_operation, simplify_const_binary_operation): Likewise. * stor-layout.c (get_mode_bounds): Likewise. From-SVN: r95935
2005-02-28simplify-rtx.c (simplify_unary_operation_1, [...]): New, extracted from...Paolo Bonzini1-1230/+1265
2005-02-28 Paolo Bonzini <bonzini@gnu.org> * simplify-rtx.c (simplify_unary_operation_1, simplify_const_unary_operation): New, extracted from... (simplify_unary_operation): ... this one. (simplify_binary_operation_1, simplify_const_binary_operation): New, extracted from... (simplify_binary_operation): ... this one. * rtl.h (simplify_const_unary_operation, simplify_const_binary_operation): Add prototypes. From-SVN: r95686
2005-02-23re PR target/20018 ([ia64] unable to find a register to spill in class`PR_REG')Roger Sayle1-0/+2
PR target/20018 PR rtl-optimization/20097 * simplify-rtx.c (simplify_relational_operation_1): Avoid creating BImode SUBREGs of SImode registers which confuse the ia64 backend. From-SVN: r95461
2005-02-21simplify-rtx.c (simplify_unary_operation): Add a missing "break" statement.Paolo Bonzini1-0/+1
2005-02-21 Paolo Bonzini <bonzini@gnu.org> * simplify-rtx.c (simplify_unary_operation): Add a missing "break" statement. From-SVN: r95321
2005-02-12c-tree.h, [...]: Fix comment typos.Kazu Hirata1-1/+1
* c-tree.h, combine.c, expmed.c, flow.c, libgcc2.c, simplify-rtx.c, tree-ssa-live.h: Fix comment typos. Follow spelling conventions. From-SVN: r94939
2005-02-08simplify-rtx.c (simplify_relational_operation_1): Avoid creating zero ↵Roger Sayle1-11/+4
extensions of BImode operands. * simplify-rtx.c (simplify_relational_operation_1): Avoid creating zero extensions of BImode operands. Call lowpart_subreg instead of gen_lowpart_common and gen_lowpart_SUBREG. From-SVN: r94730
2005-02-07re PR rtl-optimization/19800 (mmix-knuth-mmixware broken, building ↵Roger Sayle1-3/+11
newlib/libm/common/s_fmax.c) PR rtl-optimization/19800 * simplify_rtx.c (simplify_relational_operaration_1): Explicitly call gen_lowpart_common and gen_lowpart_SUBREG instead of calling gen_lowpart. From-SVN: r94691
2005-02-06simplify-rtx.c (simplify_relational_operation_1): Simplify (ne:SI ↵Roger Sayle1-0/+12
(zero_extract:SI FOO (const_int 1) BAR) (const_int 0)) into... * simplify-rtx.c (simplify_relational_operation_1): Simplify (ne:SI (zero_extract:SI FOO (const_int 1) BAR) (const_int 0)) into just (zero_extract:SI FOO (const_int 1) BAR). Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu> Co-Authored-By: Paolo Bonzini <paolo.bonzini@lu.unisi.ch> From-SVN: r94684
2005-02-03re PR middle-end/19405 (18_support/numeric_limits.cc fails on ppc-darwin ↵Roger Sayle1-2/+6
(long doubles)) PR middle-end/19405 * 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. From-SVN: r94653
2005-01-21re PR rtl-optimization/576 (gcc performs invalid optimization with float ↵Roger Sayle1-6/+15
operations when different rounding mode.) PR rtl-optimization/576 * 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. From-SVN: r94020
2005-01-14simplify-rtx.c (simplify_binary_operation): Optimize (and (sign_extend X) C) ↵Roger Sayle1-1/+18
into (zero_extend (and X C)). * simplify-rtx.c (simplify_binary_operation) <AND>: Optimize (and (sign_extend X) C) into (zero_extend (and X C)). From-SVN: r93629
2005-01-07simplify-rtx.c (simplify_subreg): Simplify truncations of shifts of sign or ↵Roger Sayle1-0/+49
zero extended values. * simplify-rtx.c (simplify_subreg): Simplify truncations of shifts of sign or zero extended values. From-SVN: r93022
2005-01-04re PR middle-end/17767 (MMX intrinsics cause internal compiler error)Uros Bizjak1-1/+1
PR middle-end/17767 * 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. From-SVN: r92896
2005-01-03* simplify-rtx.c (simplify_binary_operation): Handle VEC_CONCAT.Richard Henderson1-6/+38
From-SVN: r92861
2004-12-26simplify-rtx.c (simplify_relational_operation_1): Don't simplify plus/minus ↵Richard Henderson1-1/+2
across EQ for floating-point. * simplify-rtx.c (simplify_relational_operation_1): Don't simplify plus/minus across EQ for floating-point. From-SVN: r92631
2004-12-20re PR rtl-optimization/18942 (Do loop is not as optimized as 3.3.2)Zdenek Dvorak1-1/+18
PR rtl-optimization/18942 * simplify-rtx.c (simplify_relational_operation_1): Simplify x + cst1 == cst2 to x == cst2 - cst1. Made static. From-SVN: r92429
2004-12-16simplify-rtx.c (simplify_replace_rtx): Do not blindly replace hard registers.Richard Henderson1-1/+1
* simplify-rtx.c (simplify_replace_rtx): Do not blindly replace hard registers. [[Split portion of a mixed commit.]] Co-Authored-By: Aldy Hernandez <aldyh@redhat.com> From-SVN: r92278.2
2004-12-13re PR rtl-optimization/18928 (ice on valid code with -O2 -fPIC)Roger Sayle1-12/+17
PR rtl-optimization/18928 * 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. From-SVN: r92109
2004-12-09simplify-rtx.c (simplify_subreg): In the CONCAT case...Richard Sandiford1-7/+12
* simplify-rtx.c (simplify_subreg): In the CONCAT case, check whether 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. From-SVN: r91965
2004-12-02re PR target/18774 (mmix-knuth-mmixware testsuite failure: ↵Richard Henderson1-0/+4
gcc.c-torture/execute/20020227-1.c -Os -O2 compile) PR 18774 * simplify-rtx.c (simplify_immed_subreg): Fail complex modes. From-SVN: r91672
2004-11-28re PR rtl-optimization/18420 (ICE compiling mesa at -O2)Ulrich Weigand1-2/+1
PR rtl-optimization/18420 * simplify-rtx.c (simplify_gen_subreg): Revert 2004-10-28 change. From-SVN: r91419
2004-11-23rtl.h (validate_subreg): Declare.Richard Henderson1-19/+14
* rtl.h (validate_subreg): Declare. * 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. From-SVN: r91126
2004-11-23simplify-rtx.c (simplify_subreg): Use subreg_regno_offset directly instead ↵Richard Henderson1-3/+4
of using a SUBREG temporary. * simplify-rtx.c (simplify_subreg): Use subreg_regno_offset directly instead of using a SUBREG temporary. From-SVN: r91114
2004-11-23simplify-rtx.c (simplify_binary_operation): Do not simplify inner elements ↵Uros Bizjak1-0/+1
of constant arguments of VEC_CONCAT insn. rtl-optimization/18614 * 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. From-SVN: r91094
2004-11-20simplify-rtx.c (simplify_ternary_operation): Use trunc_int_for_mode.Aldy Hernandez1-1/+1
* simplify-rtx.c (simplify_ternary_operation): Use trunc_int_for_mode. From-SVN: r90948
2004-10-28re PR target/15286 (ICE cause by reload)Ulrich Weigand1-1/+2
PR target/15286 * 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. From-SVN: r89752
2004-10-18simplify-rtx.c (mode_signbit_p): Externalize function...Pat Haugen1-2/+1
2004-10-18 Pat Haugen <pthaugen@us.ibm.com> * 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. From-SVN: r89235
2004-10-09[multiple changes]Roger Sayle1-8/+34
2004-10-09 Roger Sayle <roger@eyesopen.com> 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. From-SVN: r88826
2004-09-09ra-build.c (copy_insn_p, [...]): Use gcc_assert and gcc_unreachable instead ↵Nathan Sidwell1-129/+105
of abort. * ra-build.c (copy_insn_p, remember_move, defuse_overlap_p_1, 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. From-SVN: r87244
2004-09-04md.texi (shift patterns): New anchor.Richard Sandiford1-30/+15
* doc/md.texi (shift patterns): New anchor. Add reference to 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. From-SVN: r87079
2004-07-27cfgexpand.c (tree_expand_cfg): Fix comment.Steven Bosscher1-4/+1
* cfgexpand.c (tree_expand_cfg): Fix comment. * 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. From-SVN: r85228
2004-07-26c-common.c (disable_builtin_function): Rename variable n to ↵Bernardo Innocenti1-19/+19
new_disabled_builtin. * c-common.c (disable_builtin_function): Rename variable n to 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. From-SVN: r85175
2004-07-25c-common.c: Rename all identifiers named `new'.Bernardo Innocenti1-30/+30
* c-common.c: Rename all identifiers named `new'. * c-decl.c: Likewise. * gensupport.c: Likewise. * simplify-rtx.c: Likewise. From-SVN: r85159
2004-07-14expr.c (enqueue_insn, [...]): Remove.Paolo Bonzini1-3/+0
2004-07-14 Paolo Bonzini <bonzini@gnu.org> * 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. From-SVN: r84675
2004-07-09simplify-rtx.c (simplify_const_relational_operation): Only look at bounds of ↵Richard Henderson1-1/+1
scalar integers. * simplify-rtx.c (simplify_const_relational_operation): Only look at bounds of scalar integers. From-SVN: r84427
2004-07-01simplify-rtx.c (simplify_binary_operation): Use rtx_cost instead of ↵Roger Sayle1-11/+9
"had_mult" to determine whether the transformed... * simplify-rtx.c (simplify_binary_operation) <PLUS, MINUS>: Use rtx_cost instead of "had_mult" to determine whether the transformed expression is cheaper than the original. From-SVN: r83981
2004-07-01alias.c (get_alias_set, [...]): Use MEM_P.Jerry Quinn1-1/+1
2004-07-01 Jerry Quinn <jlquinn@optonline.net> * 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. From-SVN: r83980
2004-06-30re PR tree-optimization/15310 ([tree-ssa] Optimize an addition in a bit field)Jakub Jelinek1-0/+46
* simplify-rtx.c (simplify_binary_operation): Simplify ((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. From-SVN: r83900