summaryrefslogtreecommitdiffstats
path: root/gcc/simplify-rtx.c
Commit message (Collapse)AuthorAgeFilesLines
...
* 2004-02-07 Paolo Bonzini <bonzini@gnu.org>bonzini2004-03-031-23/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * alias.c (rtx_equal_for_memref_p): Use predicates to test rtx classes and new rtx class codes, possibly splitting conditionals that tested against '<' and 'o'. * caller-save.c (save_call_clobbered_regs): Likewise. * combine.c (contains_muldiv, find_split_point, subst, combine_simplify_rtx, simplify_if_then_else, simplify_set, simplify_logical, expand_compound_operation, make_compound_operation, if_then_else_cond, known_cond, apply_distributive_law, cached_nonzero_bits, cached_num_sign_bit_copies, simplify_shift_const, gen_binary, simplify_comparison, update_table_tick, record_value_for_reg, get_lsat_value_validate): Likewise. * cse.c (mention_regs, find_best_addr, find_comparison_args, fold_rtx, cse_insn, invalidate_memory, cse_basic_block): Likewise. * emit-rtl.c (copy_insn_1): Likewise. * expr.c (force_operand): Likewise. * final.c (final_scan_insn, get_mem_expr_from_op): Likewise. * flow.c (notice_stack_pointer_modification_1, invalidate_mems_from_autoinc, ior_reg_cond, not_reg_cond, and_reg_cond, elim_reg_cond): Likewise. * function.c (update_epilogue_consts): Likewise. * genattrtab.c (attr_rtx_1): Likewise. * genopinit.c (gen_insn): Likewise. * integrate.c (subst_constants): Likewise. * jump.c (reversed_comparison_code_parts, reversed_comparison_code, delete_related_insns, rtx_renumbered_equal_p): Likewise. * local-alloc.c (block_alloc): Likewise. * loop.c (rtx_equal_for_prefetch_p, maybe_eliminate_biv, canonicalize_condition): Likewise. * loop-iv.c (simplify_using_conditions, iv_number_of_iterations): Likewise. * optabs.c (add_equal_node, expand_binop): Likewise. * predict.c (estimate_probability): Likewise. * ra-debug.c (ra_print_rtx_2op, ra_print_rtx): Likewise. * recog.c (validate_replace_rtx_1, comparison_operator, offsettable_address_p, constrain_operands): Likewise. * reg-stack.c (swap_rtx_condition_1, subst_stack_regs_pat): Likewise. * regclass.c (scan_one_insn): Likewise. * regmove.c (stable_and_no_regs_but_for_p): Likewise. * regrename.c (kill_autoinc_value): Likewise. * reload.c (find_reusable_reload, find_reloads, reg_overlap_mentioned_for_reload_p): Likewise. * reload1.c (gen_reload, delete_address_reloads_1): Likewise. * rtl.c (copy_rtx): Likewise. * rtl.h (CONSTANT_P, INSN_P): Likewise. * rtlanal.c (commutative_operand_precedence): Likewise. * sched-deps.c (conditions_mutex_p): Likewise. * sched-rgn.c (is_cfg_nonregular): Likewise. * simplify-rtx.c (simplify_gen_binary, simplify_gen_relational, simplify_replace_rtx, simplify_unary_operation, simplify_binary_operation, simplify_ternary_operation, simplify_rtx): Likewise. * unroll.c (reg_dead_after_loop): Likewise. * config/alpha/alpha.c (alpha_swapped_comparison_operator, print_operand): Likewise. * config/arc/arc.c (proper_comparison_operator): Likewise. * config/arm/arm.c (arm_arm_address_cost, arm_select_cc_mode): Likewise. * config/avr/avr.c (_reg_unused_after): Likewise. * config/frv/frv.c (frv_ifcvt_modify_tests, frv_ifcvt_modify_insn, frv_pack_insn): Likewise. * config/i386/i386.c (ix86_comparison_operator, ix86_carry_flag_operator, fcmov_comparison_operator, arith_or_logical_operator, print_operand, ix86_expand_binary_operator, ix86_binary_operator_ok): Likewise. * config/i386/i386.md: Likewise. * config/ia64/ia64.c (not_postinc_memory_operand, ia64_print_operand, update_set_flags, errata_emit_nops): Likewise. * config/ia64/ia64.h (PREFERRED_RELOAD_CLASS, CONSTRAINT_OK_FOR_S): Likewise. * config/ip2k/ip2k.c (mdr_resequence_xy_yx, mdr_try_move_dp_reload, ip2k_check_can_adjust_stack_ref, ip2k_xexp_not_uses_reg_for_mem, ip2k_xexp_not_uses_reg_p, ip2k_composite_xexp_not_uses_reg_p, ip2k_unary_operator): Likewise. * config/iq2000/iq2000.c (cmp_op, symbolic_expression_p, eqne_comparison_operator, signed_comparison_operator): Likewise. * config/mips/mips.c (cmp_op, symbolic_expression_p): Likewise. * config/mmix/mmix (mmix_foldable_comparison_operator, mmix_comparison_operator): Likewise. * config/pa/pa.c (hppa_legitimize_address): Likewise. * config/rs6000/rs6000.c (stmw_operation, branch_comparison_operator, trap_comparison_operator, ccr_bit): Likewise. * config/rs6000/rs6000.h (SELECT_CC_MODE): Likewise. * config/s390/s390.c (s390_alc_comparison, s390_slb_comparison):L Likewise. * config/sh/sh.c (gen_block_redirect, reg_unused_after): Likewise. * config/sparc/sparc.c (eq_or_neq, normal_comp_operator, noov_compare_op, noov_compare64_op, v9_regcmp_op, emit_hard_tfmode_operation, reg_unused_after) * doc/md.texi, doc/rtl.texi: Likewise. * ra-debug.c: Add 2004 to list of copyright years. * unroll.c: Likewise. * combine.c (simplify_logical): Remove dummy test, (apply_distributive_law): Fix typo in comment. GET_CODE (x) == AND so x is a commutative binary op. * jump.c (delete_related_insns): simplify loop condition, move testing of RTX codes inside the loop. (rtx_renumbered_equal_p): do not use RTX_CODE. * rtl.c (rtx_class): Declare as enum rtx_class. * rtl.def (EQ, NE, UNEQ, LTGT, UNORDERED, ORDERED): Move to RTX_COMM_COMPARE class. (HIGH, SYMBOL_REF, LABEL_REF, CONST, CONST_INT, CONST_DOUBLE): Move to RTX_CONST_OBJ class. * rtl.h (enum rtx_class): New declaration, (RTX_OBJ_MASK, RTX_OBJ_RESULT, RTX_COMPARE_MASK, RTX_COMPARE_RESULT, RTX_ARITHMETIC_MASK, RTX_ARITHMETIC_RESULT, RTX_BINARY_MASK, RTX_BINARY_RESULT, RTX_COMMUTATIVE_MASK, RTX_COMMUTATIVE_RESULT, RTX_NON_COMMUTATIVE_RESULT, RTX_EXPR_FIRST, RTX_EXPR_LAST, UNARY_P, BINARY_P, ARITHMETIC_P, COMMUTATIVE_ARITHMETIC_P, COMPARISON_P, SWAPPABLE_OPERANDS_P, NON_COMMUTATIVE_P, COMMUTATIVE_P, OBJECT_P): New macros. * config/sparc/sparc.c (noov_compare_op): Remove register from parameter. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78824 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (SHIFT_COUNT_TRUNCATED): Remove.kazu2004-02-211-8/+0
| | | | | | | | | | * defaults.h (SHIFT_COUNT_TRUNCATED): Provide the default. * expmed.c: Assume SHIFT_COUNT_TRUNCATED is always defined. * fold-const.c: Likewise. * simplify-rtx.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78230 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_unary_operation): Deal with logicals onhubicka2004-02-181-15/+54
| | | | | | | | | | | | | | | | floats. (simplify_binary_operation): Deal with logicals on floats. * i386.md (SSE fabs splitters): Emit new patterns. (SSE cmov splitters): Likewise. (sse_andv4sf3, sse_nandv4sf3, sse_iorv4sf3, sse_xorv4sf3 (sse_andv2df3, sse_nandv2df3, sse_iorv2df3, sse_xorv2df3): Do not use subregs. (sse_andsf3, sse_nandsf3, sse_xorsf3): Kill. (sse_anddf3, sse_nanddf3, sse_xordf3): Kill. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78045 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation): Don'tjakub2004-01-241-0/+2
| | | | | | | | | simplify address == constant into address + -constant == 0. * gcc.dg/20040123-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76490 138bc75d-0d04-0410-961f-82ee72b054a4
* PR optimization/13821sayle2004-01-231-2/+3
| | | | | | | | * simplify-rtx.c (simplify_subreg): Use subreg_lowpart_offset to correctly calculate the lowpart offset of the contracted subreg. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76393 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtlanal.c (subreg_lsb_1): New function split out from subreg_lsb.sayle2004-01-221-1/+36
| | | | | | | | | | (subreg_lsb): Change to call new subreg_lsb_1 helper function. * rtl.h (subreg_lsb_1): Prototype here. * simplify-rtx.c (simplify_subreg): Optimize subregs of zero and sign extensions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76352 138bc75d-0d04-0410-961f-82ee72b054a4
* PR optimization/5263sayle2004-01-191-58/+49
| | | | | | | | | | | | | | | * simplify-rtx.c (associative_constant_p): Delete. (simplify_associative_operation): Rewrite to linearize terms, and attempt to simplify new term against both left and right subterms. (simplify_binary_operation): Call swap_commutative_operands_p on op0 and op1, not trueop0 and trueop1. Move the initialization of trueop0 and trueop1 down to where first needed. (simplify_relational_operation): Likewise. * rtlanal.c (commutative_operand_precedence): Also order constant operands using avoid_constant_pool_reference. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76179 138bc75d-0d04-0410-961f-82ee72b054a4
* Update copyright.rearnsha2004-01-121-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75734 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_immed_subreg): Correctly extract therearnsha2004-01-121-1/+2
| | | | | | | high word of an integral CONST_DOUBLE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75725 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_plus_minus): Always generate canonical form.pbrook2004-01-121-10/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75724 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_immed_subreg): Fix construction ofrsandifo2004-01-081-1/+1
| | | | | | | floating-point constants. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75540 138bc75d-0d04-0410-961f-82ee72b054a4
* * emit-rtl.c (gen_lowpart_common): Use simplify_gen_subreggeoffk2004-01-061-201/+266
| | | | | | | | | | | | for constants. (constant_subword): Delete. * rtl.h (constant_subword): Delete prototype. (immed_double_const): Is not in varasm.c. * simplify-rtx.c (simplify_immed_subreg): New. (simplify_subreg): Use simplify_immed_subreg. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75487 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c: Fix comment typos.kazu2004-01-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * builtins.c: Likewise. * cfg.c: Likewise. * df.c: Likewise. * dominance.c: Likewise. * dwarf2out.c: Likewise. * emit-rtl.c: Likewise. * expr.c: Likewise. * final.c: Likewise. * fold-const.c: Likewise. * gcse.c: Likewise. * genattrtab.c: Likewise. * genrecog.c: Likewise. * gensupport.c: Likewise. * ggc-zone.c: Likewise. * integrate.c: Likewise. * local-alloc.c: Likewise. * loop.c: Likewise. * recog.c: Likewise. * regmove.c: Likewise. * reg-stack.c: Likewise. * reorg.c: Likewise. * rtlanal.c: Likewise. * rtl.h: Likewise. * sched-ebb.c: Likewise. * simplify-rtx.c: Likewise. * toplev.c: Likewise. * varasm.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75475 138bc75d-0d04-0410-961f-82ee72b054a4
* * dojump.c (do_jump): If the expression being compared againstsayle2003-12-051-2/+20
| | | | | | | | | | | zero, is the subreg of a promoted variable, perform the comparison in the promoted mode. * simplify-rtx.c (simplify_unary_operation): Optimize sign and zero-extensions of subregs of promoted variables where the extension is identical to that used to promote the variable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74332 138bc75d-0d04-0410-961f-82ee72b054a4
* PR optimization/10817sayle2003-11-021-11/+27
| | | | | | | | | | | | | | | | * ifcvt.c (noce_emit_move_insn): Improve documentation comment. (noce_try_move): New function to optimize an if-the-else into an unconditional move, i.e. "if (a!=b) x=a; else x=b" into "x=a". (noce_process_if_block): Attempt simplification with noce_try_move. * simplify-rtx.c (simplify_ternary_operation): Some minor fixes and improvements to the optimizations of IF_THEN_ELSE expressions. (simplify_subreg): Silence signed/unsigned comparison warning. * gcc.c-torture/compile/20031102-1.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73200 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_replace_rtx): Avoid allocating duplicatesayle2003-10-261-47/+50
| | | | | | | | RTL nodes. If an operator's operands are unchanged, return the original argument unchanged. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72941 138bc75d-0d04-0410-961f-82ee72b054a4
* PR optimization/12260sayle2003-10-111-1/+31
| | | | | | | | | | | | | | | * simplify-rtx.c (simplify_unary_operation): Simplify all unary operations through CONST nodes. Optimize (neg (plus X C)) as (minus -C X) for constant values C. (simplify_binary_operation): Optimize (minus (neg X) C) as (minus -C X) for constant values C. (simplify_plus_minus): Avoid creating (neg (const (plus X C)), instead create (minus -C X). * gcc.c-torture/compile/20031011-2.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72379 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-pretty-print.c: Fix comment typos.kazu2003-10-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * c-pretty-print.h: Likewise. * calls.c: Likewise. * cfgloopmanip.c: Likewise. * cgraphunit.c: Likewise. * cppfiles.c: Likewise. * final.c: Likewise. * function.c: Likewise. * gcov-io.h: Likewise. * gcse.c: Likewise. * genoutput.c: Likewise. * loop.c: Likewise. * postreload.c: Likewise. * reg-stack.c: Likewise. * regmove.c: Likewise. * sched-int.h: Likewise. * sched-rgn.c: Likewise. * simplify-rtx.c: Likewise. * tree-inline.c: Likewise. * config/m68hc11/m68hc11.h: Likewise. * config/mmix/mmix.c: Likewise. * config/mn10300/mn10300.md: Likewise. * config/sh/sh.h: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72118 138bc75d-0d04-0410-961f-82ee72b054a4
* PR optimization/9325, PR java/6391sayle2003-10-031-7/+87
| | | | | | | | | | | | | | | | | * fold-const.c (fold_convert): For floating point to integer conversions, return the maximum/minimum representable integer value if the real constant overflows the destination type. * tree.c (real_value_from_int_cst): Allow the type to be NULL, meaning don't truncate the result to a floating point mode. Simplify the logic by calling real_from_integer directly. * simplify-rtx.c (simplify_unary_operation): Implement the same semantics for folding floating point to integer conversions in RTL. * gcc.c-torture/execute/20031003-1.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72079 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_unary_operation): Only transformsayle2003-09-181-0/+1
| | | | | | | | (not (eq X Y)) into (ne X Y) when mode is BImode or STORE_FLAG_VALUE is -1. RTL "not" is a bit-wise not, "~", not a logical not "!". git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71532 138bc75d-0d04-0410-961f-82ee72b054a4
* PR bootstrap/12269sayle2003-09-161-45/+52
| | | | | | | | | | | | | | | | | | | | | | | | * simplify-rtx.c (simplify_gen_relational): Allow the cmp_mode argument to be VOIDmode, taking the mode of the comparison from the operands. Only call simplify_relational_operation if we know the mode of the comparison. Honor FLOAT_STORE_FLAG_VALUE if comparison has a floating point result. Ensure that the result is always of the specified mode. (simplify_replace_rtx): Simplify call to simplify_gen_relational. (simplify_unary_operation): Ensure the correct mode and cmp_mode are always passed to simplify_gen_relational. Simplify NOT of comparison operator in any mode, not just BImode. (simplify_ternary_operation): Correct tests on the return value of simplify_relational_operation to use const_true_rtx, not const1_rtx. Abort if it ever returns a non-constant result. * cfgloopanal.c (count_strange_loop_iterations): Use the function simplify_relational_operation, not simplify_gen_relational, if we're only interested in constant comparisons and will ignore non-constant results. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71439 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (combine_simplify_rtx): Move several NOT and NEGsayle2003-09-111-2/+106
| | | | | | | | | optimizations from here... * simplify-rtx.c (simplify_unary_operation): to here. Recursively simplify expressions using simplify_gen_*ary instead of gen_rtx_*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71300 138bc75d-0d04-0410-961f-82ee72b054a4
* PR optimization/11700.sayle2003-09-041-3/+5
| | | | | | | | | | | * simplify-rtx.c (simplify_subreg): Check that the subreg offset of a hard register is representable before trying to simplify it using subreg_hard_regno. * gcc.c-torture/compile/20030903-1.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71046 138bc75d-0d04-0410-961f-82ee72b054a4
* * builtins.c (fold_builtin_bitop): New function to perform constantsayle2003-08-261-11/+10
| | | | | | | | | | | | | folding of ffs, clz, ctz, popcount and parity builtin functions and their long and long long variants (such as ffsl and ffsll). (fold_builtin): fold_builtin_bitop when appropriate. * simplify-rtx.c (simplify_unary_operation): Honor both CLZ_DEFINED_VALUE_AT_ZERO and CTZ_DEFINED_VALUE_AT_ZERO when evaluating clz and ctz at compile-time, for operands wider than HOST_WIDE_INT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70806 138bc75d-0d04-0410-961f-82ee72b054a4
* * builtin-attrs.def: Fix comment formatting.kazu2003-08-221-1/+1
| | | | | | | | | | | | * c-pretty-print.c: Likewise. * diagnostic.h: Likewise. * langhooks.h: Likewise. * recog.c: Likewise. * simplify-rtx.c: Likewise. * tree.def: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70676 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-common.c: Fix comment formatting.kazu2003-08-191-6/+6
| | | | | | | | | | | | | | | | * c-common.h: Likewise. * c-decl.c: Likewise. * cppinit.c: Likewise. * cpplib.h: Likewise. * emit-rtl.c: Likewise. * input.h: Likewise. * line-map.h: Likewise. * opts.c: Likewise. * opts.h: Likewise. * simplify-rtx.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70577 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (associative_constant_p): New function to testsayle2003-08-171-6/+118
| | | | | | | | | | | | | whether an RTX expression is an immediate constant. (simplify_associative_operation): New function to perform some reassociation optimizations of associative binary expressions. (simplify_binary_operation): Use simplify_associative_operation to simplify PLUS, MULT, AND, IOR, XOR, SMIN, SMAX, UMIN and UMAX. Floating point expressions are only reassociated when unsafe math optimizations are permitted. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70521 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation): Replace calls tosayle2003-08-121-16/+13
| | | | | | | | | gen_rtx_NEG and gen_rtx_NOT with calls to simplify_gen_unary, and calls to gen_rtx_PLUS, gen_rtx_MULT, gen_rtx_LSHIFTRT, gen_rtx_ASHIFT and gen_rtx_AND with calls to simplify_gen_binary. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70350 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c alloc-pool.c bitmap.c bitmap.h bt-load.c builtins.cghazi2003-07-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | c-common.c c-decl.c c-incpath.c c-lex.c c-opts.c c-parse.in c-pragma.c c-typeck.c calls.c cfg.c cfganal.c cfgloop.c cfgrtl.c collect2.c combine.c conflict.c coverage.c cppexp.c cppfiles.c cpphash.c cppinit.c cpplex.c cpplib.c cppmacro.c cppspec.c cpptrad.c cse.c cselib.c dbxout.c defaults.h df.c dominance.c dwarf2out.c dwarfout.c emit-rtl.c except.c expmed.c expr.c final.c fix-header.c flow.c fold-const.c function.c gcc.c gccspec.c gcov.c gcse.c genattr.c genattrtab.c genautomata.c genconditions.c genemit.c genextract.c genoutput.c genrecog.c gensupport.c ggc-page.c ggc-simple.c global.c graph.c haifa-sched.c hashtable.c integrate.c jump.c langhooks.c lcm.c line-map.c local-alloc.c loop.c mips-tdump.c mips-tfile.c mkdeps.c optabs.c params.c postreload.c prefix.c print-tree.c protoize.c ra-build.c ra-colorize.c ra-rewrite.c ra.c recog.c reg-stack.c regclass.c regmove.c regrename.c reload.c reload1.c reorg.c resource.c sbitmap.c sched-deps.c sched-rgn.c sched-vis.c sdbout.c simplify-rtx.c ssa-ccp.c ssa.c stmt.c stor-layout.c timevar.c tlink.c toplev.c tree-dump.c tree.c unroll.c unwind-dw2-fde.c varasm.c varray.c vmsdbgout.c xcoffout.c: Remove unnecessary casts. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69587 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_rtx): Use simplify_gen_binary to swapsayle2003-07-181-8/+2
| | | | | | | commutative operands instead of modifying the RTL in-place. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69539 138bc75d-0d04-0410-961f-82ee72b054a4
* * fold-const.c (const_binop): Avoid performing the FP operation atsayle2003-07-181-2/+6
| | | | | | | | | | | | | | | | | | | compile-time, if either operand is NaN and we honor signaling NaNs, or if we're dividing by zero and either flag_trapping_math is set or the desired mode doesn't support infinities. (fold_initializer): New function to fold an expression ignoring any potential run-time exceptions or traps. * tree.h (fold_initializer): Prototype here. * c-typeck.c (build_binary_op): Move to the end of the file so that intializer_stack is in scope. If constructing an initializer, i.e. when initializer_stack is not NULL, use fold_initializer to fold expressions. * simplify-rtx.c (simplify_binary_operation): Likewise, avoid performing FP operations at compile-time, if they would raise an exception at run-time. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69533 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_replace_rtx): Convert constant comparisonssayle2003-07-161-12/+46
| | | | | | | | to MODE_FLOAT constants if FLOAT_STORE_FLAG_VALUE is defined. (simplify_rtx): Likewise. Simplify (lo_sum (high X) X) as X. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69475 138bc75d-0d04-0410-961f-82ee72b054a4
* * sbitmap.c: Convert prototypes to ISO C90.aj2003-07-061-70/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * sbitmap.h: Likewise. * scan-decls.c: Likewise. * scan.c: Likewise. * sched-deps.c: Likewise. * sched-ebb.c: Likewise. * sched-int.h: Likewise. * sched-rgn.c: Likewise. * sched-vis.c: Likewise. * sibcall.c: Likewise. * simplify-rtx.c: Likewise. * sreal.c: Likewise. * sreal.h: Likewise. * ssa-ccp.c: Likewise. * ssa-dce.c: Likewise. * ssa.c: Likewise. * ssa.h: Likewise. * stack.h: Likewise. * stmt.c: Likewise. * stor-layout.c: Likewise. * stringpool.c: Likewise. * target.h: Likewise. * timevar.c: Likewise. * timevar.h: Likewise. * tlink.c: Likewise. * tracer.c: Likewise. * tree-inline.c: Likewise. * tree-inline.h: Likewise. * tree.c: Likewise. * tree.h: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69002 138bc75d-0d04-0410-961f-82ee72b054a4
* * bt-load.c: Fix comment typos.kazu2003-07-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * c-incpath.c: Likewise. * cfg.c: Likewise. * cfgcleanup.c: Likewise. * cfgloop.h: Likewise. * cfgloopmanip.c: Likewise. * cfgrtl.c: Likewise. * diagnostic.h: Likewise. * dwarfout.c: Likewise. * emit-rtl.c: Likewise. * et-forest.c: Likewise. * et-forest.h: Likewise. * expr.c: Likewise. * gcse.c: Likewise. * genattr.c: Likewise. * jump.c: Likewise. * langhooks.h: Likewise. * local-alloc.c: Likewise. * loop-unroll.c: Likewise. * loop-unswitch.c: Likewise. * ra-build.c: Likewise. * regclass.c: Likewise. * regmove.c: Likewise. * rtl.def: Likewise. * rtlanal.c: Likewise. * sched-ebb.c: Likewise. * sched-rgn.c: Likewise. * simplify-rtx.c: Likewise. * ssa.c: Likewise. * tracer.c: Likewise. * tree.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68975 138bc75d-0d04-0410-961f-82ee72b054a4
* PR optimization/11381ebotcazou2003-07-031-2/+4
| | | | | | | | | * simplify-rtx.c (simplify_relational_operation): Check that two equal operands have no side-effects before simplifying the comparison. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68869 138bc75d-0d04-0410-961f-82ee72b054a4
* 2003-06-16 Aldy Hernandez <aldyh@redhat.com>aldyh2003-06-171-1/+5
| | | | | | | | | | * simplify-rtx.c (simplify_subreg): Do not over-extend vector constants. * testsuite/gcc.c-torture/execute/simd-4.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68047 138bc75d-0d04-0410-961f-82ee72b054a4
* 2003-06-16 Richard Henderson <rth@redhat.com>aldyh2003-06-161-1/+1
| | | | | | | | * simplify-rtx.c (simplify_subreg): Use GET_MODE_SIZE instead of GET_MODE_UNIT_SIZE when simplifying constant vectors. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68038 138bc75d-0d04-0410-961f-82ee72b054a4
* 2003-06-13 Aldy Hernandez <aldyh@redhat.com>aldyh2003-06-131-2/+1
| | | | | | | | | | | * c-common.c (handle_mode_attribute): Use VECTOR_MODE_P macro. * simplify-rtx.c (simplify_subreg): Same. * emit-rtl.c (gen_lowpart_common): Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67911 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation): Add case forgeoffk2003-05-031-1/+12
| | | | | | | ! (fabs(x) < 0.0). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66440 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c: Fix formatting.kazu2003-04-051-24/+24
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65275 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx (simplify_binary_operation): Don't abort forrth2003-03-161-0/+7
| | | | | | | SS_PLUS, US_PLUS, SS_MINUS, US_MINUS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64452 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (combine_simplify_rtx, simplfy_comparison): Use CC0_P.sayle2003-02-261-5/+1
| | | | | | | | | | | * cse.c (invalidate_skipped_set): Likewise. * integrate.c (subst_constants): Likewise. * jump.c (reversed_comparison_code_parts): Likewise. * loop.c (canonicalize_condition): Likewise. * simplify-rtx.c (simplify_relational_operation): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63446 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation): Simplify ~y whenkazu2003-02-141-4/+10
| | | | | | | (x - (x & y)) is found. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62906 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_unary_operation,hubicka2003-02-091-12/+184
| | | | | | | | simplify_binary_operation): Deal with vector modes (simplify_ternary_operation): Deal with no-op VEC_MERGE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62610 138bc75d-0d04-0410-961f-82ee72b054a4
* * i386.md (ahi?v*3): Set third operand type to TImode.hubicka2003-02-091-1/+70
| | | | | | | | | | | | | | | | | * i386.c (ix86_expand_binop_builtin): Extend operand when needed. * simplify-rtx.c (simplify_subreg): Fix conversion from vector into integer mode. * rtl.def (VEC_MERGE, VEC_SELECT, VEC_CONCAT, VEC_DUPLICATE): Change code so they are arithmetic expressions now. * simplify-rtx.c (simplify_unary_operation, simplify_binary_operation, simplify_ternary_operation): Deal with VEC_* expressions. * i386.md (vmaskcmp, pinsrw, movd patterns): Fix RTL representation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62600 138bc75d-0d04-0410-961f-82ee72b054a4
* * defaults.h (CLZ_DEFINED_VALUE_AT_ZERO): New.rth2003-02-051-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | (CTZ_DEFINED_VALUE_AT_ZERO): New. * doc/rtl.texi, doc/tm.texi: Document them. * combine.c (nonzero_bits) [CLZ, CTZ]: Handle the definedness of the value at zero properly. * fold-const.c (tree_expr_nonnegative_p): Likewise. * simplify-rtx.c (simplify_unary_operation): Likewise. * config/alpha/alpha.h (CLZ_DEFINED_VALUE_AT_ZERO): New. (CTZ_DEFINED_VALUE_AT_ZERO): New. * config/arm/arm.c (TARGET_INIT_BUILTINS): Remove. (TARGET_EXPAND_BUILTIN): Remove. (def_builtin, arm_init_builtins, arm_expand_builtin): Remove. * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO): New. (enum arm_builtins): Remove. * config/arm/arm.md (UNSPEC_CLZ): Remove. (clzsi2): Rename from clz; use clz instead of unspec. (ctzsi2): New. * config/arm/arm-protos.h: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62453 138bc75d-0d04-0410-961f-82ee72b054a4
* * hooks.c (hook_rtx_rtx_identity): Generic hook function thatsayle2003-02-031-3/+27
| | | | | | | | | | | | | | | | | | | | | | | takes a single rtx and returns it unmodified. * hooks.h (hook_rtx_rtx_identity): Prototype here. * target.h (struct gcc_target): Add "delegitimize_address" field to target structure. * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Provide default for delegitimize_address target using hook_rtx_rtx_identity. (TARGET_INITIALIZER): Initialize delegitimize_address field using TARGET_DELEGITIMIZE_ADDRESS macro. * simplify-rtx.c (avoid_constant_pool_reference): Handle float extensions of constant pool references. Use delegitimize_address to undo the obfuscation of "-fpic". * Makefile.in (simplify-rtx.o): Add dependency on target.h. * config/i386/i386.c (TARGET_DELEGITIMIZE_ADDRESS): Define as i386_simplify_dwarf_addr. (ix86_find_base_term): Simplify using i386_simplify_dwarf_addr. (maybe_get_pool_constant): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62336 138bc75d-0d04-0410-961f-82ee72b054a4
* 2003-02-01 Richard Henderson <rth@redhat.com>rth2003-02-011-2/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * optabs.c (expand_unop): Use word_mode for outmode of bit scaners. * libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2, __popcountsi2, __popcountdi2, __paritysi2 __paritydi2): Change return type to Wtype. * libgcc-std.ver (GCC_3.4): Fix inheritance. * config/i386/i386.md (ffssi2): Use nonimmediate_operand for expander input constraint. 2003-02-01 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de> * optabs.h (optab_index): Add OTI_clz, OTI_ctz, OTI_popcount and OTI_parity. (clz_optab, ctz_optab, popcount_optab, parity_optab): New. * optabs.c (widen_clz, expand_parity): New. (expand_unop): Handle clz and parity. Hardcode SImode as outmode for libcalls to clz, ctz, popcount, and parity. (init_optabs): Init clz_optab, ctz_optab, popcount_optab and parity_optab, and set up libfunc handlers. * libgcc2.c (__clzsi2, __clzdi2, __ctzsi2, __ctzdi2, __popcountsi2, __popcountdi2, __paritysi2 __paritydi2, __popcount_tab): New. * libgcc2.h: Declare them. * libgcc-std.ver (GCC_3.4): Add new functions from libgcc2.c. * genopinit.c (optabs): Add clz_optab, ctz_optab, popcount_optab and parity_optab. * builtin-types.def (BT_FN_INT_LONG, BT_FN_INT_LONGLONG): New. * builtins.def (BUILT_IN_CLZ, BUILT_IN_CTZ, BUILT_IN_POPCOUNT, BUILT_IN_PARITY, BUILT_IN_FFSL, BUILT_IN_CLZL, BUILT_IN_CTZL, BUILT_IN_POPCOUNTL, BUILT_IN_PARITYL, BUILT_IN_FFSLL, BUILT_IN_CLZLL, BUILT_IN_CTZLL, BUILT_IN_POPCOUNTLL, BUILT_IN_PARITYLL): New. * builtins.c (expand_builtin_unop): Rename from expand_builtin_ffs and add optab argument. (expand_builtin): Expand BUILT_IN_{FFS,CLZ,POPCOUNT,PARITY}*. * tree.def (CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR, PARITY_EXPR): New. * expr.c (expand_expr): Handle them. * fold-const.c (tree_expr_nonnegative_p): Likewise. * rtl.def (CLZ, CTZ, POPCOUNT, PARITY): New. * reload1.c (eliminate_regs): Handle them. (elimination_effects): Likewise. * function.c (instantiate_virtual_regs_1): Likewise * genattrtab.c (check_attr_value): Likewise. * simplify-rtx.c (simplify_unary_operation): Likewise. * c-common.c (c_common_truthvalue_conversion): Handle POPCOUNT_EXPR. * combine.c (combine_simplify_rtx): Handle POPCOUNT and PARITY. (nonzero_bits): Handle CLZ, CTZ, POPCOUNT and PARITY. * config/alpha/alpha.md (clzdi2, ctzdi2, popcountdi2): New. * config/arm/arm.c (arm_init_builtins): Rename __builtin_clz to __builtin_arm_clz. * Makefile.in (LIB2FUNCS_1, LIB2FUNCS_2): Move... * mklibgcc.in (lib2funcs): ...here and merge. Add new members. * doc/extend.texi (Other Builtins): Add new builtins. * doc/md.texi (Standard Names): Add new patterns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62252 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (emit_prefetch_instructions): Do conversion at right place inhubicka2003-01-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | RTL chain. * combine.c (simplify_set): Reverse order of ragumetns to REG_CANNOT_CHANGE_MODE_P * df.c (df_def_record_1): Likewise. * recog.c (register_operand): Likewise. * simplify-rtx.c (simplify_subreg): Likewise. * hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Update use of CANNOT_CHANGE_MODE_CLASS. * regclass.c (cannot_change_mode_set_regs, invalid_mode_change_p): Likewise. * reload.c (push_reload): Likewise. * alpha.h (CANNOT_CHANGE_MODE_CLASS): Update definition. * ia64.h (CANNOT_CHANGE_MODE_CLASS): Update definition. * mips.h (CANNOT_CHANGE_MODE_CLASS): Update definition. * mips-protos.h (mips_cannot_change_mode_class): Update prototype. * mips.c (mips_cannot_change_mode_class): Update. * pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Update definition. * rs6000.h (CANNOT_CHANGE_MODE_CLASS): Update definition. * s390.h (CANNOT_CHANGE_MODE_CLASS): Update definition. * sh.h (CANNOT_CHANGE_MODE_CLASS): Update definition. * sh-protos.h (sh_cannot_change_mode_class): Update prototype. * sh.c (sh_cannot_change_mode_class): Update. * i386.h (CANNOT_CHANGE_MODE_CLASS): New. * tm.texi (CANNOT_CHANGE_MODE_CLASS): Update documentation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62212 138bc75d-0d04-0410-961f-82ee72b054a4
* * emit-rtl.c (reg_attrs_htab): New static variable.hubicka2003-01-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (reg_attrs_htab_hash, reg_attrs_htab_eq, get_reg_attrs): New static functions. (reg_rtx): Do not maintain regno_decl. (gen_rtx_REG_offset, set_reg_attrs_from_mem, set_delc_rtx, set_mem_attrs_from_reg): New global function. (init_emit): Do not initialize regno_decl. (init_emit_once): initialize reg_attrs_htab. * final.c (alter_subreg): Do not replace REG by SUBREG. (gen_mem_expr_from_op): Improve output. (output_asm_operands): Likewise. * function.c (assign_params): Do not set REGNO_DECL. * function.h (struct function): Kill regno_decl. (REGNO_DECL): Kill. * gengtype.c (adjust_field_rtx_def): Handle new field of reg. * print_rtl.c (print_rtx): Output REG information. * regclass.c (reg_scan_mark_refs): Update attrs. * reload1.c (alter_reg): Likewise. * simplify_rtx.c (simplify_subreg): Likewise. * stmt.c (expand_decl): Likewise. * rtl.def (REG): Add new field. * rtl.h (struct reg_attrs): New. (rtunion_def): At rtreg. (X0MEMATTR): Add checking. (X0REGATTR, REG_ATTRS, REG_EXPR, REG_OFFSET): New macro. (set_reg_attrs_from_mem, set_mem_attrs_from_reg, gen_rtx_REG_offset): Declare. * tree.h (SET_DECL_RTL): Call set_decl_rtl. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61741 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud