aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.c
AgeCommit message (Collapse)AuthorFilesLines
2002-12-16Merge basic-improvements-branch to trunkZack Weinberg1-75/+53
From-SVN: r60174
2002-12-10cse.c (cse_insn): Don't cse past a basic block boundary.Andrew Haley1-2/+10
2002-12-10 Andrew Haley <aph@redhat.com> * cse.c (cse_insn): Don't cse past a basic block boundary. From-SVN: r60000
2002-10-28ChangeLog.1: Fix typos.Kazu Hirata1-1/+1
* ChangeLog.1: Fix typos. * cse.c: Fix a comment typo. * reload1.c: Likewise. From-SVN: r58596
2002-10-12cse.c (mention_regs): Set SUBREG_TICKED to the register number, not the ↵Geoffrey Keating1-3/+3
address of the REG. * cse.c (mention_regs): Set SUBREG_TICKED to the register number, not the address of the REG. (struct cse_reg_info): Make subreg_ticked unsigned. From-SVN: r58075
2002-10-10cse.c (struct cse_reg_info): Add subreg_ticked.Stuart Hastings1-7/+30
2002-10-10 Stuart Hastings <stuart@apple.com> * cse.c (struct cse_reg_info): Add subreg_ticked. (SUBREG_TICKED): New. (get_cse_reg_info): Initialize SUBREG_TICKED. (mention_regs): Use it. (invalidate): Set SUBREG_TICKED. (invalidate_for_call): Likewise. (addr_affects_sp_p): Likewise. From-SVN: r58035
2002-10-10Fix miscompilation of testcase 20021010-1.c for v850 target with -O -mv850e.Jim Wilson1-5/+11
* cse.c (fold_rtx): Don't perform associative optimization for DIV and UDIV. From-SVN: r58026
2002-10-09cse.c (insn_live_p): Pass insn pattern, not full insn to may_trap_p.Ulrich Weigand1-1/+1
* cse.c (insn_live_p): Pass insn pattern, not full insn to may_trap_p. From-SVN: r57982
2002-10-01flow.c (insn_dead_p): When using non-call-exceptions, don't eliminate insns ↵Andrew Haley1-1/+3
that may trap. 2002-09-30 Andrew Haley <aph@redhat.com> * flow.c (insn_dead_p): When using non-call-exceptions, don't eliminate insns that may trap. * cse.c (insn_live_p): Likewise. From-SVN: r57688
2002-09-22ChangeLog: Follow spelling conventions.Kazu Hirata1-10/+10
* ChangeLog: Follow spelling conventions. * ChangeLog.0: Likewise. * ChangeLog.1: Likewise. * ChangeLog.2: Likewise. * ChangeLog.3: Likewise. * ChangeLog.4: Likewise. * ChangeLog.5: Likewise. * ChangeLog.6: Likewise. * FSFChangeLog.10: Likewise. * FSFChangeLog.11: Likewise. * alias.c: Likewise. * basic-block.h: Likewise. * c-aux-info.c: Likewise. * c-common.c: Likewise. * c-common.h: Likewise. * c-decl.c: Likewise. * c-format.c: Likewise. * c-semantics.c: Likewise. * c-typeck.c: Likewise. * calls.c: Likewise. * cfganal.c: Likewise. * cfgloop.c: Likewise. * collect2.c: Likewise. * combine.c: Likewise. * conflict.c: Likewise. * cppexp.c: Likewise. * cppfiles.c: Likewise. * cpphash.h: Likewise. * cppinit.c: Likewise. * cpplex.c: Likewise. * cpplib.c: Likewise. * cpplib.h: Likewise. * cppmacro.c: Likewise. * cse.c: Likewise. From-SVN: r57398
2002-09-21cse.c (fold_rtx): Calculate the old cost before we fold each operand.Richard Earnshaw1-1/+1
* cse.c (fold_rtx): Calculate the old cost before we fold each operand. From-SVN: r57394
2002-09-20real.c (real_hash): New.Richard Henderson1-5/+1
* real.c (real_hash): New. * real.h: Declare it. * cse.c (canon_hash): Use it. * cselib.c (hash_rtx): Likewise. * emit-rtl.c (const_double_htab_hash): Likewise. * rtl.h (CONST_DOUBLE_REAL_VALUE): New. * varasm.c (struct rtx_const): Reduce vector size; separate integer and fp vectors. (HASHBITS): Remove. (const_hash_1): Rename from const_hash. Use real_hash. Do not take modulus MAX_HASH_TABLE. (const_hash): New. Do take modulus MAX_HASH_TABLE. (output_constant_def): Do not take modulus MAX_HASH_TABLE. (SYMHASH): Don't use HASHBITS. (decode_rtx_const): Copy only active bits from REAL_VALUE_TYPE. Fix CONST_VECTOR thinko wrt fp vectors. Fix kind comparison. (simplify_subtraction): Fix kind comparison. (const_hash_rtx): Return unsigned int. Don't use HASHBITS. Use a union to pun integer array. * config/rs6000/rs6000.c (rs6000_hash_constant): Use real_hash; only hash two words of integral CONST_DOUBLE. From-SVN: r57356
2002-09-16real.c, real.h: Rewrite from scratch.Richard Henderson1-8/+15
gcc/ * real.c, real.h: Rewrite from scratch. * Makefile.in (simplify-rtx.o): Depend on TREE_H. (paranoia): New target. * builtins.c (fold_builtin_inf): Use new real.h interface. * c-common.c (builtin_define_with_hex_fp_value): Likewise. * c-lex.c (interpret_float): Likewise. * emit-rtl.c (gen_lowpart_common): Likewise. * optabs.c (expand_float): Use real_2expN. * config/ia64/ia64.md (divsi3, udivsi3): Likewise. * defaults.h (INTEL_EXTENDED_IEEE_FORMAT): New. (FLOAT_WORDS_BIG_ENDIAN): New. * cse.c (find_comparison_args): Don't pass FLOAT_STORE_FLAG_VALUE directly to REAL_VALUE_NEGATIVE. * loop.c (canonicalize_condition): Likewise. * simplify-rtx.c: Include tree.h. (simplify_unary_operation): Don't handle FIX and UNSIGNED_FIX with floating-point result modes. * toplev.c (backend_init): Call init_real_once. * fold-const.c (force_fit_type): Don't call CHECK_FLOAT_VALUE. * tree.c (build_real): Likewise. * config/alpha/alpha.c, config/vax/vax.c (float_strings, float_values, inited_float_values, check_float_value): Remove. * config/alpha/alpha.h, config/m68hc11/m68hc11.h, config/m88k/m88k.h, config/vax/vax.h (CHECK_FLOAT_VALUE): Remove. * doc/tm.texi (CHECK_FLOAT_VALUE): Remove. gcc/f/ * target.c (ffetarget_real1): Don't pass FFETARGET_ATOF_ directly to ffetarget_make_real1. (ffetarget_real2): Similarly. * target.h (ffetarget_cvt_r1_to_rv_, ffetarget_cvt_rv_to_r2_, ffetarget_cvt_r2_to_rv_): Use new real.h interface and simplify. gcc/java/ * jcf-parse.c (get_constant): Runtime check for IEEE format; use new real.h interface. * jcf-write.c (find_constant_index): Use new real.h interface. * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL. contrib/ * paranoia.cc: New file. From-SVN: r57198
2002-09-14ChangeLog: Follow spelling conventions.Kazu Hirata1-1/+1
* ChangeLog: Follow spelling conventions. * ChangeLog.0: Likewise. * ChangeLog.2: Likewise. * ChangeLog.3: Likewise. * ChangeLog.4: Likewise. * ChangeLog.5: Likewise. * ChangeLog.6: Likewise. * cppfiles.c: Likewise. * cppinit.c: Likewise. * cpplib.h: Likewise. * cse.c: Likewise. * debug.h: Likewise. * df.c: Likewise. * dominance.c: Likewise. * hashtable.c: Likewise. * hashtable.h: Likewise. * loop.c: Likewise. * config/arm/README-interworking: Likewise. * config/arm/arm.c: Likewise. * config/arm/arm.h: Likewise. * config/arm/arm.md: Likewise. * config/dsp16xx/dsp16xx.h: Likewise. * config/frv/frv.c: Likewise. * config/frv/frv.h: Likewise. * config/ip2k/ip2k.h: Likewise. * config/rs6000/rs6000.c: Likewise. * config/stormy16/stormy-abi: Likewise. * config/stormy16/stormy16.h: Likewise. * config/v850/v850.c: Likewise. From-SVN: r57146
2002-09-04cse.c (cse_insn): Avoid subreg games if the equivalence is already in the ↵Richard Henderson1-8/+17
proper mode. * cse.c (cse_insn): Avoid subreg games if the equivalence is already in the proper mode. From-SVN: r56819
2002-07-10cse.c (cse_insn): Supply proper SUBREG_BYTE to simplify_gen_subreg.J"orn Rennecke1-2/+17
* cse.c (cse_insn): Supply proper SUBREG_BYTE to simplify_gen_subreg. Get mode from dest. If simplify_gen_subreg fails, try next equivalent. From-SVN: r55368
2002-07-04simplify-rtx.c (simplify_subreg): Reduce problem of finding vector mode ↵J"orn Rennecke1-3/+2
subregs of constants to finding integer... gcc: * simplify-rtx.c (simplify_subreg): Reduce problem of finding vector mode subregs of constants to finding integer mode subregs of constants. * cse.c (cse_insn): Use simplify_gen_subreg. * convert.c (convert_to_integer): Don't strip a NOP_EXPR From a vector mode expression of different size than the target mode. gcc/testsuite: * gcc.c-torture/compile/simd-3.c: New test. From-SVN: r55234
2002-06-11re PR rtl-optimization/6759 (ice when compiling 32 bit sparc code)Jakub Jelinek1-2/+4
PR optimization/6759 * cse.c (cse_insn): Fold src_eqv just once, store it folded back into the REQ_EQUAL note. * g++.dg/opt/cse1.C: New test. From-SVN: r54469
2002-05-26cse.c (fold_rtx): Don't optimize if SUBREG changes mode class.Jakub Jelinek1-1/+3
* cse.c (fold_rtx): Don't optimize if SUBREG changes mode class. * g++.dg/opt/cse2.C: New test. From-SVN: r53905
2002-05-23cse.c (approx_reg_cost_1, [...]): Recode to not use regsets.David S. Miller1-21/+20
2002-05-23 David S. Miller <davem@redhat.com> * cse.c (approx_reg_cost_1, approx_reg_cost): Recode to not use regsets. From-SVN: r53793
2002-05-20cse.c (canon_hash): Reorder do_not_record test.Richard Henderson1-11/+24
* cse.c (canon_hash): Reorder do_not_record test. Always allow pic_offset_table_rtx. From-SVN: r53665
2002-05-10cse.c (rtx_cost): Remove multiplication by power of 2 special casing.David S. Miller1-7/+1
2002-05-10 David S. Miller <davem@redhat.com> * cse.c (rtx_cost): Remove multiplication by power of 2 special casing. From-SVN: r53369
2002-05-08cse.c (dead_libcall_p): Update counts.Jan Hubicka1-3/+10
* cse.c (dead_libcall_p): Update counts. (delete_trivially_dead_insns): Update call of dead_libcall_p. From-SVN: r53287
2002-05-05cse.c: Fix formatting.Kazu Hirata1-17/+19
* cse.c: Fix formatting. * emit-rtl.c: Likewise. From-SVN: r53191
2002-04-22rtl.h (RTX_FLAG): New macro.Janis Johnson1-2/+2
* rtl.h (RTX_FLAG): New macro. * emit-rtl.c (copy_most_rtx): Use macros to access rtx flags. * final.c (alter_subreg): Use macro to access rtx flag. * integrate.c (copy_rtx_and_substitute): Use new access macro. * print-rtl.c (print_rtx): Use new access macro. * cse.c (insert): Check rtx code before accessing flag. * genattrtab.c (ATTR_IND_SIMPLIFIED_P, ATTR_CURR_SIMPLIFIED_P, ATTR_PERMANENT_P, ATTR_EQ_ATTR_P): New. (attr_hash_add_string, attr_rtx_1, attr_copy_rtx, check_attr_test, convert_const_symbol_ref, make_canonical, make_alternative_compare, evaluate_eq_attr, attr_rtx_cost, simplify_test_exp_in_temp, simplify_test_exp, optimize_attrs, simplify_by_exploding, find_and_mark_used_attributes, unmark_used_attributes, add_values_to_cover, simplify_with_current_value, simplify_with_current_value_aux, clear_struct_flag, walk_attr_value, copy_rtx_unchanging, main): Use new access macros. From-SVN: r52645
2002-03-07defaults.h (MODE_HAS_NANS, [...]): New.Richard Sandiford1-13/+12
* defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES): New. (MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): New. * flags.h (HONOR_NANS, HONOR_INFINITIES, HONOR_SIGNED_ZEROS): New. (HONOR_SIGN_DEPENDENT_ROUNDING): New. * builtins.c (expand_builtin_mathfn): Use HONOR_NANS. * c-common.c (truthvalue_conversion): Reduce x - y != 0 to x != y unless x and y could be infinite. (expand_unordered_cmp): New, mostly split from expand_tree_builtin. Check that the common type of both arguments is a real, even for targets without unordered comparisons. Allow an integer argument to be compared against a real. (expand_tree_builtin): Use expand_unordered_cmp. * combine.c (combine_simplify_rtx): Use the new HONOR_... macros. * cse.c (fold_rtx): Likewise. Fix indentation. * fold-const.c (fold_real_zero_addition_p): New. (fold): Use it, and the new HONOR_... macros. * ifcvt.c (noce_try_minmax): Use the new HONOR_... macros. * jump.c (reversed_comparison_code_parts): After searching for the true comparison mode, use HONOR_NANS to decide whether it can be safely reversed. (reverse_condition_maybe_unordered): Remove IEEE check. * simplify-rtx.c (simplify_binary_operation): Use the new macros to decide which simplifications are valid. Allow the following simplifications for IEEE: (-a + b) to (b - a), (a + -b) to (a - b), and (a - -b) to (a + b). (simplify_relational_operation): Use HONOR_NANS. * doc/tm.texi: Document the MODE_HAS_... macros. From-SVN: r50401
2002-03-06cfgrtl.c (delete_insn_and_edges, [...]): New.Jan Hubicka1-60/+29
* cfgrtl.c (delete_insn_and_edges, delete_insn_chain_and_edges): New. * rtl.h (delete_insn_and_edges, delete_insn_chain_and_edges): Declare * basic-block.h (update_life_info, update_life_info_in_dirty_blocks, delete_noop_moves): Return indeger. * flow.c (ndead): New variable. (propagate_block_delete_insn): Use delete_insn_and_edges; remove BB argument; update callers. (propagate_block_delete_libcall): Use delete_insn_chain_and_edges. (life_analysis): Do not call purge_all_dead_edges. (update_life_info): Return number of deleted insns; print statistics. (update_life_info_in_dirty_blocks): likewise. (delete_noop_moves): Use delete_insn_and_edges; print statistics; return number of insns deleted. * cse.c: Include timevar.h (delete_trivially_dead_insns): Kill preserve_basic_blocks argument; iterate until stabilizes; print statistics; return number of killed insns. * Makefile.in: (cse.o): Add timevar.h dependency * rtl.h (delete_trivially_dead_insns): New. * timever.def: Add TV_DELETE_TRIVIALLY_DEAD timer. * toplev.c (rest_of_compilation): Update callers. * cfgcleanup.c (try_optimize_cfg): Kill blocks. (try_optimize_cfg): Do not update liveness. (cleanup-cfg): Loop until try_optimize_cfg and dead code removal stabilizes; use delete_trivially_dead_insns. * cfgrtl.c (verify_flow_info): Sanity check outgoing edges. From-SVN: r50355
2002-02-28basic-block.h (BB_REACHABLE): Renumber.Jan Hubicka1-1/+2
* basic-block.h (BB_REACHABLE): Renumber. (BB_DIRTY, BB_NEW): New flags. (clear_bb_flags): Declare. (update_life_info_in_dirty_blocks): Declare. * cfg.c (clear_bb_flags): New function. * cfgrtl.c (create_basic_block_structure): Set flags to BB_NEW. * emit-rtl.c (add_insn_after, add_insn_before, remove_insn, reorder_insns, emit_insn_after): Mark block as dirty. * flow.c (update_life_info): Fix clearing of PROP_LOG_LINKS. (update_life_info_in_dirty_blocks): New function. * recog.c (apply_change_group): Dirtify block. * cse.c (cse_insn): Reorder emitting of jump insn to keep cfg consistent. * gcse.c (delete_null_pointer_checks): Likewise. * toplev.c (dump_file_index): Move cse2 after bp, add DFI_null (dump_file_info): Similary. (rest_of_compilation): Avoid most of CFG rebuilds; do first if converision after null pointer checks, do cse2 after branch prediction; avoid full liveness rebuild after initializing subregs. * invoke.texi (-d options): Document -du, renumber. * cfgcleanup.c (bb_flags): Remove BB_UPDATE_LIFE. (notice_new_block): Do not set BB_UPDATE_LIFE. (try_forward_edges, merge_blocks_move_predecessor_nojumps, merge_blocks_move_successor_nojumps, merge_blocks, try_crossjump_to_edge): Likewise. (try_optimize_cfg): Likewise; use update_life_info_in_dirty_blocks. * cfgrtl.c (merge_blocks_nomove): Copy b's flags to a. * ifcvt.c (SET_UPDATE_LIFE, UPDATE_LIFE): Kill. (merge_of_block): Do not use life_data_ok. (find_if_case_1): Do not use SET_UPDATE_LIFE. (if_convert): Use BB_DIRTY mechanizm to update life. * lcm.c (optimize_mode_switching): Update update_life_info_in_dirty_blocks From-SVN: r50127
2002-02-19i386.md ("mmx_uavgv8qi3"): Use const_vector.Aldy Hernandez1-0/+21
2002-02-19 Aldy Hernandez <aldyh@redhat.com> * config/i386/i386.md ("mmx_uavgv8qi3"): Use const_vector. ("mmx_uavgv4hi3"): Same. ("pmulhrwv4hi3"): Same. * tree-inline.c (walk_tree): Handle vectors. * c-common.c (constant_expression_warning): Handle vectors. (overflow_warning): Same. * sched-deps.c (sched_analyze_2): Handle vectors. * rtlanal.c (rtx_unstable_p): Handle vectors. (rtx_varies_p): Same. (count_occurrences): Same. (regs_set_between_p): Same. (modified_between_p): Same. (modified_in_p): Same. (volatile_insn_p): Same. (volatile_refs_p): Same. (side_effects_p): Same. (may_trap_p): Same. (inequality_comparisons_p): Same. (replace_regs): Same. (computed_jump_p_1): Same. * rtl.c (DEF_MACHMODE): Change all definitions to accept 8th argument. (inner_mode_array): New. (copy_rtx): Handle vectors. (copy_most_rtx): Same. (rtx_equal_p): Same. (get_mode_alignment): Adjust for vectors. * resource.c (mark_referenced_resources): Handle vectors. (mark_set_resources): Same. * reload1.c (eliminate_regs): Handle vectors. (elimination_effects): Same. (scan_paradoxical_subregs): Same. * reload.c (subst_reg_equivs): Handle vectors. * regrename.c (scan_rtx): Handle vectors. * regclass.c (reg_scan_mark_refs): Handle vectors. * recog.c (find_single_use_1): Handle vectors. * local-alloc.c (equiv_init_varies_p): Handle vectors. (contains_replace_regs): Same. (memref_referenced_p): Same. * integrate.c (copy_rtx_and_substitute): Handle vectors. (subst_constants): Same. * genattrtab.c (attr_copy_rtx): Handle vectors. (encode_units_mask): Same. (clear_struct_flag): Same. (count_sub_rtxs): Same. * gcse.c (want_to_gcse_p): Handle vectors. (oprs_unchanged_p): Same. (hash_expr_1): Same. (oprs_not_set_p): Same. (expr_killed_p): Same. (compute_transp): Same. (store_ops_ok): Same. * function.c (purge_addressof_1): Do not allow paradoxical subregs of vectors. (fixup_var_refs_1): Same. (instantiate_virtual_regs_1): Same. * fold-const.c (operand_equal_p): Handle vectors. (fold): Same. (rtl_expr_nonnegative_p): Same. * flow.c (mark_used_regs): Handle vectors. * df.c (df_uses_record): Handle vectors. * cselib.c (cselib_subst_to_values): Handle vectors. (cselib_mem_conflict_p): Same. (hash_rtx): Same. * cse.c (canon_reg): Handle vectors. (fold_rt): Same. (cse_process_notes): Same. (count_reg_usage): Same. (canon_hash): Same. * alias.c (nonlocal_mentioned_p): Add case for CONST_VECTOR. * combine.c (mark_used_regs_combine): Add case for CONST_VECTOR. * emit-rtl.c (init_emit_once): Generate const0_rtx for vectors. (gen_rtx): Handle CONST_VECTOR. (gen_const_vector_0): New. (copy_rtx_if_shared): CONST_VECTORs can be shared. (reset_used_flags): Same. (copy_insn_1): Same. (initializer_constant_valid_p): Handle VECTOR_CST. * doc/c-tree.texi (Expression trees): Document VECTOR_CST. * doc/rtl.texi (Constants): Document const_vector. (CONST0_RTX): Update for vectors. (RTL sharing): Same. * print-tree.c (print_node): Add case for VECTOR_CST. * tree.h (TREE_VECTOR_CST_ELTS): New. (struct tree_vector): New. (union tree_node): Add vector node. (build_vector): Add prototype. * tree.def (VECTOR_CST): New. * tree.c (build_vector): New. * expmed.c (make_tree): Handle CONST_VECTOR. * rtl.h (CONSTANT_P): CONST_VECTORs are constants too. (CONST_VECTOR_ELT): New. (CONST_VECTOR_NUNITS): New. * machmode.h (GET_MODE_INNER): New. (DEF_MACHMODE): Accept 8th arg. * machmode.def: Add 8th argument for vector inner mode. Add inner vector modes for vectors. * rtl.def (VEC_CONST): Remove. (CONST_VECTOR): New. * expr.c (clear_storage): Allow vectors. (is_zeros_p): Handle VECTOR_CST. * varasm.c (output_constant_pool): Handle vectors. (rtx_const): Add veclo and vechi fields. (kind): Add RTX_VECTOR. (decode_rtx_const): Add case for vector. * config/rs6000/rs6000-protos.h: Add zero_constant. * config/rs6000/rs6000.c (rs6000_emit_move): Handle vector constants. Force easy vector constants into memory. (easy_vector_constant): New. (emit_easy_vector_constant): New. (rs6000_legitimize_reload_address): Do not generate bad reloads on darwin. * config/rs6000/rs6000.md ("altivec_lvx"): Reflect what instruction does. ("altivec_lvxl"): Same. (altivec_lvebx): Same. (altivec_lvehx): Same. (altivec_lvewx): Same. ("*movv4si_const0"): New. ("*movv4sf_const0"): New. ("*movv8hi_const0"): New. ("*movv16qi_const0"): New. From-SVN: r49853
2002-02-12jump.c (never_reached_warning): Add finish argument.Jakub Jelinek1-1/+1
* jump.c (never_reached_warning): Add finish argument. If finish is NULL, stop on CODE_LABEL, otherwise stop before first real insn after end. * rtl.h (never_reached_warning): Adjust prototype. * cse.c (cse_insn): Pass NULL as finish to never_reached_warning. * cfgrtl.c (flow_delete_block): Pass b->end as finish to never_reached_warning. * gcc.dg/Wunreachable-1.c: New test. * gcc.dg/Wunreachable-2.c: New test. From-SVN: r49713
2002-01-23elf.h: New file.Bob Wilson1-4/+4
* config/xtensa/elf.h: New file. * config/xtensa/lib1funcs.asm: New file. * config/xtensa/lib2funcs.S: New file. * config/xtensa/linux.h: New file. * config/xtensa/t-xtensa: New file. * config/xtensa/xtensa-config.h: New file. * config/xtensa/xtensa-protos.h: New file. * config/xtensa/xtensa.c: New file. * config/xtensa/xtensa.h: New file. * config/xtensa/xtensa.md: New file. * config.gcc (xtensa-*-elf*): New target. (xtensa-*-linux*): New target. * cse.c (canon_hash): Compare rtx pointers instead of register numbers. This is required for the Xtensa port. * integrate.c (copy_insn_list): Handle case where the static chain is in memory and the memory address has to be copied to a register. * doc/invoke.texi (Option Summary): Add Xtensa options. (Xtensa Options): New node. * doc/md.texi (Machine Constraints): Add Xtensa machine constraints. * gcc.c-torture/compile/20001226-1.x: xfail for Xtensa. From-SVN: r49155
2002-01-05cse.c: Fix formatting.Kazu Hirata1-3/+3
* cse.c: Fix formatting. * dwarf2asm.c: Likewise. * dwarf2out.c: Likewise. * explow.c: Likewise. * expmed.c: Likewise. * function.c: Likewise. * gcov.c: Likewise. * gencheck.c: Likewise. * genrecog.c: Likewise. * ggc-common.c: Likewise. * ggc-page.c: Likewise. * global.c: Likewise. From-SVN: r48570
2001-11-28cse.c (true_dependence_in_rtx): New function.Jan Hubicka1-3/+1
* cse.c (true_dependence_in_rtx): New function. (invalidate): Use it. * c-common.h (GOTO_FAKE_P): New macro. * tree-inline.c (GOTO_FAKE_P): Set. * c-tree.texi (GOTO_FAKE_P): Document. * varasm.c (assemble_variable): Set reloc to 3 for error_mark containing pointers. (output_addressed_constants): Check for local/external relocations. * elfos.h (SELECT_SECTION): Classify data section. * tm.texi (SELECT_SECTION): Update documentation. * cfganal.c (flow_dfs_compute_reverse_add_bb): set visited bit. (flow_dfs_compute_reverse_execute): Add only unvisited blocks. From-SVN: r47405
2001-11-23ChangeLog.0, [...]: Fix spelling errors.Joseph Myers1-3/+3
* ChangeLog.0, ChangeLog.2, ChangeLog.3, ChangeLog.4, ChangeLog, FSFChangeLog.10, c-decl.c, cppfiles.c, cppinit.c, cpplex.c, cpplib.c, cppmain.c, cse.c, df.c, diagnostic.c, dominance.c, dwarf2out.c, dwarfout.c, emit-rtl.c, errors.c, except.c, except.h, explow.c, function.c, gcse.c, genrecog.c, predict.c, regmove.c, sched-rgn.c, ssa-ccp.c, stmt.c, toplev.c: Fix spelling errors. From-SVN: r47279
2001-11-07* cse.c (cse_insn): Emit BARRIER after unconditional jump.Graham Stott1-5/+13
From-SVN: r46824
2001-10-30emit-rtl.c (set_unique_reg_note): Don't create REG_EQUAL or REG_EQUIV notes ↵Jakub Jelinek1-7/+1
for ASM_OPERANDS. * emit-rtl.c (set_unique_reg_note): Don't create REG_EQUAL or REG_EQUIV notes for ASM_OPERANDS. Return the new note (if any). * rtl.h (set_unique_reg_note): Change return value. * gcse.c (try_replace_reg): Use set_unique_reg_note. * cse.c (cse_insn): Likewise. * expr.c (emit_move_insn): Likewise. * explow.c (force_reg): Likewise. * local-alloc (update_equiv_regs): Likewise. * loop.c (move_moveables, load_mems): Likewise. * reload (find_reloads): Likewise. * gcc.dg/20011029-2.c: New test. From-SVN: r46636
2001-10-26cse.c (check_for_label_ref): Don't require REG_LABEL notes for non-local ↵Alexandre Oliva1-1/+2
label_refs. * cse.c (check_for_label_ref): Don't require REG_LABEL notes for non-local label_refs. From-SVN: r46555
2001-10-11alias.c: Remove uses of "register" specifier in declarations of arguments ↵Stan Shebs1-90/+90
and local... 2001-10-10 Stan Shebs <shebs@apple.com> * alias.c: Remove uses of "register" specifier in declarations of arguments and local variables. * c-common.c: Ditto. * c-convert.c: Ditto. * c-decl.c: Ditto. * c-format.c: Ditto. * c-semantics.c: Ditto. * c-typeck.c: Ditto. * caller-save.c: Ditto. * calls.c: Ditto. * cfg.c: Ditto. * cfgbuild.c: Ditto. * cfgrtl.c: Ditto. * collect2.c: Ditto. * combine.c: Ditto. * convert.c: Ditto. * cppexp.c: Ditto. * cppfiles.c: Ditto. * cse.c: Ditto. * dbxout.c: Ditto. * defaults.h: Ditto. * df.c: Ditto. * dwarf2out.c: Ditto. * dwarfout.c: Ditto. * emit-rtl.c: Ditto. * explow.c: Ditto. * expmed.c: Ditto. * expr.c: Ditto. * final.c: Ditto. * fix-header.c: Ditto. * floatlib.c: Ditto. * flow.c: Ditto. * fold-const.c: Ditto. * function.c: Ditto. * gcc.c: Ditto. * gcse.c: Ditto. * gen-protos.c: Ditto. * genattrtab.c: Ditto. * gencheck.c: Ditto. * genconfig.c: Ditto. * genemit.c: Ditto. * genextract.c: Ditto. * genflags.c: Ditto. * gengenrtl.c: Ditto. * genoutput.c: Ditto. * genpeep.c: Ditto. * genrecog.c: Ditto. * gensupport.c: Ditto. * global.c: Ditto. * gmon.c: Ditto. * graph.c: Ditto. * haifa-sched.c: Ditto. * hard-reg-set.h: Ditto. * hash.c: Ditto. * integrate.c: Ditto. * jump.c: Ditto. * lists.c: Ditto. * local-alloc.c: Ditto. * loop.c: Ditto. * mips-tdump.c: Ditto. * mips-tfile.c: Ditto. * optabs.c: Ditto. * prefix.c: Ditto. * print-rtl.c: Ditto. * read-rtl.c: Ditto. * real.c: Ditto. * recog.c: Ditto. * reg-stack.c: Ditto. * regclass.c: Ditto. * regmove.c: Ditto. * reload.c: Ditto. * reload1.c: Ditto. * reorg.c: Ditto. * resource.c: Ditto. * rtl.c: Ditto. * rtlanal.c: Ditto. * scan.c: Ditto. * sched-deps.c: Ditto. * sched-rgn.c: Ditto. * sdbout.c: Ditto. * simplify-rtx.c: Ditto. * stmt.c: Ditto. * stor-layout.c: Ditto. * toplev.c: Ditto. * tradcif.y: Ditto. * tradcpp.c: Ditto. * tree.c: Ditto. * unroll.c: Ditto. * varasm.c: Ditto. * xcoffout.c: Ditto. From-SVN: r46173
2001-10-10calls.c: Fix formatting.Kazu Hirata1-1/+1
* calls.c: Fix formatting. * c-decl.c: Likewise. * cfgcleanup.c: Likewise. * combine.c: Likewise. * cppfiles.c: Likewise. * cpplib.c: Likewise. * cppmacro.c: Likewise. * crtstuff.c: Likewise. * cse.c: Likewise. * dwarf2out.c: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * gcse.c: Likewise. * genattrtab.c: Likewise. * ggc-page.c: Likewise. * integrate.c: Likewise. * libgcc2.c: Likewise. * loop.c: Likewise. * optabs.c: Likewise. * profile.c: Likewise. * protoize.c: Likewise. * real.c: Likewise. * recog.c: Likewise. * reload1.c: Likewise. * reload.c: Likewise. * reorg.c: Likewise. * resource.c: Likewise. * sched-rgn.c: Likewise. * sdbout.c: Likewise. * stmt.c: Likewise. * toplev.c: Likewise. * varasm.c: Likewise. From-SVN: r46145
2001-10-05Makefile.in (c-decl.o): Depend on tree-inline.h.Alexandre Oliva1-0/+1
* Makefile.in (c-decl.o): Depend on tree-inline.h. (c-lang.o): Likewise, as well as insn-config.h and integrate.h. * c-decl.c: Include tree-inline.h. (c_expand_body): Call optimize_inline_calls. Determine whether a function is inlinable upfront, and only clear DECL_SAVED_TREE, DECL_INITIAL and DECL_ARGUMENTS if it isn't. * c-lang.c: Include tree-inline.h, insn-config.h and integrate.h. (c_disregard_inline_limits): New function. (inline_forbidden_p, c_cannot_inline_tree_fn): Likewise. (c_post_options): Enable tree inlining if inlining is enabled. Don't inline trees when instrumenting functions. (c_init): Initialize lang_disregard_inline_limits and lang_cannot_inline_tree_fn. * tree-inline.c (initialize_inlined_parameters): Handle calls with fewer arguments than declared parameters, and fewer parameters than passed arguments. Don't assume value is a DECL. (declare_return_variable): Convert return value back to the original type, if it was promoted. (tree_inlinable_function_p): New function. (inlinable_function_p): Don't look at DECL_INLINE if we're inlining all functions. Make it work with a NULL id. Re-check DECL_UNINLINABLE after language-specific checks. (varargs_function_p): Move back to cp/tree.c. * tree-inline.h (tree_inlinable_function_p): Declare it. (varargs_function_p): Removed declaration. * integrate.h (function_attribute_inlinable_p): Declare it. * integrate.c (function_attribute_inlinable_p): Export it. (save_for_inline): Don't bother to prepare argvec when not inlining. * cse.c (check_for_label_ref): Don't check deleted labels. From-SVN: r46025
2001-09-29* cse.c (cse_insn) [HAVE_cc0]: Fix typo delete-insn -> delete_insn.Hans-Peter Nilsson1-1/+1
From-SVN: r45878
2001-09-28gcse.c (replace_store_insn): Use delete_insn.Jan Hubicka1-10/+2
* gcse.c (replace_store_insn): Use delete_insn. * loop.c (move_movables): Likewise; avoid delete_insn from clobbering notes moved elsewhere. (check_dbra_loop): Use delete_insn. * ssa.c (convert_from_ssa): Likewise. * cse.c (cse_insn): Use delete_insn. From-SVN: r45859
2001-09-21basic-block.h (flow_delete_insn, [...]): Kill.Jan Hubicka1-4/+2
* basic-block.h (flow_delete_insn, flow_delete_insn_chain): Kill. * cfg.c (delete_insn): Rename from ....; use remove_insn; do not remove some labels. (flow_delete_insn): This one. (delete_insn_chain): Rename from ...; do not care labels. (flow_delete_insn_chain): ... this one. (flow_delete_block): Remove the insns one BB has been expunged. (merge_blocks_nomove): Likewise. (try_redirect_by_replacing_jump): Use delete_insn[_chain]; do not care updating BB boundaries. (tidy_fallthru_edge): Likewise. (commit_one_edge_insertion): Likewise. * cfgbuild.c (find_basic_block): Likewise. (find_basic_blocks_1): Likewise. * cfgcleanup.c (merge_blocks_move_predecessor_nojumps): Likewise. (try_crossjump_to_edge): Likewise. (try_optimize_cfg): Likewise. * cse.c (delete_trivially_dead_insns): Likewise. * df.c (df_insn_delete): Likewise. * doloop.c (doloop_modify): Use delete_related_insns. * emit-rtl.c (try_split): Likewise. (remove_insn): Update BB boundaries. * expect.c (connect_post_landing_pads): Use delete_related_insns. * flow.c (delete_dead_jumptables): Use delete_insn[_chain]; do not care updating BB boundaries. (propagate_block_delete_insn): Likewise. (propagate_block_delete_libcall): Likewise. * function.c (delete_handlers): Use delete_related_insns. (thread_prologue_and_epilogue_insns): Likewise. * gcse.c (delete_null_pointer_checks): Use delete_related_insns. * genpeep.c (gen_peephole): Use delete_related_insns. * ifcvt.c (noce_process_if_block): Use delete_insn; do not care updating BB boundaries. (find_cond_trap): Likewise. * integrate.c (save_for_inline): Use delete_related_insns. (copy_insn_list): Likewise. * jump.c (pruge_linie_number_notes): Likewise. (duplicate_loop_exit_test): Likewise. (delete_computation): Likewise. (delete_related_insn): Rename from ...; use delete_insn (delete_insn): ... this one. (redirect_jump): Use delete_related_insns. * loop.c (scan_loop): Likewise. (move_movables): Likewise. (find_and_verify_loops): Likewise. (check_dbra_loop): Likewise. * recog.c (peephole2_optimize): Likewise. * reg-stack.c (delete_insn_for_stacker): Remove. (move_for_stack_reg): Use delete_insn. * regmove.c (combine_stack_adjustments_for_block): Likewise. * reload1.c (delete_address_reloads): Use delete_related_insns. (fixup_abnormal_edges): Use delete_insn. * recog.c (emit_delay_sequence): Use delete_related_insns. (delete_from-delay_slot): Likewise. (delete_scheduled_jump): likewise. (optimize_skip): Likewise. (try_merge_delay_insns): Likewise. (full_simple_delay_slots): Likewise. (fill_slots_from_thread): Likewise. (relax_delay_slots): Likewise. (make_return_insns): Likewise. (dbr_schedule): Likewise. * rtl.h (delete_insn): Rename to delete_related_insns. (delete_insn, delete_insn_chain): New prototypes. * ssa-ccp (sse_fast_dce): Remove deleting of DEF, as it is done by df_insn_delete already. * ssa-dce.c (delete_insn_bb): Use delete_insn. * ssa.c (convert_from_ssa): Use delete_related_insns. * unroll.c (unroll_loop): Likewise. (calculate_giv_inc): Likewise. (copy_loop_body): Likewise. * i386-protos.h (ix86_libcall_value, ix86_function_value, ix86_function_arg_regno_p, ix86_function_arg_boundary, ix86_return_in_memory, ix86_function_value): Declare. * i386.c (x86_64_int_parameter_registers, x86_64_int_return_registers): new static valurables. (x86_64_reg_class): New enum (x86_64_reg_class_name): New array. (classify_argument, examine_argument, construct_container, merge_classes): New static functions. (optimization_options): Enable flag_omit_frame_pointer and disable flag_pcc_struct_return on 64bit. (ix86_libcall_value, ix86_function_value, ix86_function_arg_regno_p, ix86_function_arg_boundary, ix86_return_in_memory, ix86_function_value): New global functions. (init_cumulative_args): Refuse regparm on x86_64, set maybe_vaarg. (function_arg_advance): Handle x86_64 passing conventions. (function_arg): Likewise. * i386.h (FUNCTION_ARG_BOUNDARY): New macro. (RETURN_IN_MEMORY): Move offline. (FUNCTION_VALUE, LIBCALL_VALUE): Likewise. (FUNCTION_VALUE_REGNO_P): New macro. (FUNCTION_ARG_REGNO_P): Move offline. (struct ix86_args): Add maybe_vaarg. * next.h (FUNCTION_VALUE_REGNO_P): Delete. * unix.h (FUNCTION_VALUE_REGNO_P): Delete. From-SVN: r45726
2001-08-27* cse.c (cse_basic_block): Skip note instructions.Roman Zippel1-4/+5
From-SVN: r45221
2001-08-22Makefile.in, [...]: replace "GNU CC" with "GCC".Lars Brinkhoff1-12/+12
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c, bitmap.h, builtin-types.def, builtins.c, builtins.def, c-aux-info.c, c-common.c, c-common.def, c-common.h, c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c, c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in, c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c, caller-save.c, calls.c, collect2.c, collect2.h, combine.c, conditions.h, config.gcc, configure.frag, configure.in, conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c, cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h, dependence.c, df.c, df.h, diagnostic.c, diagnostic.h, doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c, dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c, emit-rtl.c, errors.c, errors.h, except.c, except.h, exgettext, explow.c, expmed.c, expr.c, expr.h, final.c, fixproto, flags.h, flow.c, fold-const.c, fp-test.c, function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp, gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c, gencheck.c, gencodes.c, genconfig.c, genemit.c, genextract.c, genflags.c, gengenrtl.c, genmultilib, genopinit.c, genoutput.c, genpeep.c, genrecog.c, gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c, ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c, graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h, gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h, gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h, hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h, integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c, libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h, machmode.def, machmode.h, main.c, mbchar.c, mbchar.h, mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk, mkmap-symver.awk, optabs.c, output.h, params.c, params.def, params.h, predict.c, predict.def, predict.h, prefix.c, prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c, read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c, regclass.c, regmove.c, regrename.c, regs.h, reload.c, reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c, rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h, sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c, sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c, ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c, stringpool.c, system.h, timevar.c, timevar.def, timevar.h, tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h, tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h, unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h, unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c, xcoffout.h: replace "GNU CC" with "GCC". From-SVN: r45105
2001-08-12toplev.c (set_float_handler): Make static.Zack Weinberg1-1/+0
* toplev.c (set_float_handler): Make static. * toplev.h: Don't prototype set_float_handler. * simplify-rtx.c: Don't include setjmp.h. (simplify_unary_real, simplify_binary_real, simplify_binary_is2orm1): New functions. (simplify_unary_operation, simplify_binary_operation): Use them, via do_float_handler. * fold-const.c: Don't include setjmp.h. (exact_real_inverse_1): New function. (exact_real_inverse): Use it, via do_float_handler. * varasm.c: Don't include setjmp.h. (assemble_real_1): New function. (assemble_real): Use it, via do_float_handler. Call internal_error if we get a trap here. * c-parse.in, cse.c, cselib.c, ch/lex.c, config/i386/i386.c, config/pj/pj.c, config/s390/s390.c: Don't include setjmp.h. * java/lex.h: Don't include setjmp.h. Don't define SET_FLOAT_HANDLER or prototype set_float_handler. From-SVN: r44815
2001-08-07calls.c (expand_call): Do not emit INSN_SETJMP note.Jan Hubicka1-3/+4
* calls.c (expand_call): Do not emit INSN_SETJMP note. (emit_library_call_value_1): Likewise. (emit_call_1): Emit REG_SETJMP note. * cse.c (cse_end_of_basic_block): Use REG_SETJMP instead of INSN_SETJMP * cselib.c (cselib_process_insn): Likewise. * flow.c (propagate_block): Likewise. * loop.c (find_and_verify_loops): Likewise. * reload.c (find_equiv_regs): Likewise. * reload1.c (reload): Likewise. * resource.c (mark_referenced_resources, mark_set_resources): Likewise. * sched-deps (sched_analyze_insn, sched_analyze): Likewise. * final.c (final_scan_insn): Remove NOTE_INSN_SETJMP. * haifa-sched.c (unlink_other_notes): Likewise. (reemit_notes): Likewise. * sched-ebb.c (sched_ebb): Likewise. * sched-rgc.c (sched_region): Likewise. * rtl.c (note_insn_name): Likewise. (reg_note_name): Add REG_SETJMP * rtl.h (reg_note): Add REG_SETJMP. (insn_note): Remove NOTE_INSN_SETJMP. * profile.c (branch_prob): Add fake edges for setjmp. From-SVN: r44700
2001-08-07alias.c (nonlocal_mentioned_p): Rename CONST_CALL_P to CONST_OR_PURE_CALL_PJan Hubicka1-2/+2
* alias.c (nonlocal_mentioned_p): Rename CONST_CALL_P to CONST_OR_PURE_CALL_P * calls.c (emit_call_1): Likewise. * cse.c (cse_insn, invalidate_skipped_block): Likewise. * cselib.c (cselib_process_insn): Likewise. * df.c (df_insns_modify): Likewise. * flow.c (need_fake_edge_p): Likewise. (propagate_one_insn): Likewise. * haifa-sched.c (reemit_notes): Likewise. * integrate.c (copy_insn_list): Likewise. * jump.c (delete_prior_computation): Likewise. * local-alloc.c (validate_equiv_mem): Likewise. * loop.c (scan_loop): Likewise. * predict.c (estimate_probability): Likewise. * reload.c (reload): Likewise. * sched-deps (sched_analyze): Likewise. * rtl.h (CONST_CALL_P): rename to CONST_OR_PURE_CALL_P. * gcse.c (compute_hash_table): Likewise. (mark_call): Likewise. (store_killed_in_insn): Likewise. From-SVN: r44688
2001-08-03combine.c, [...]: consistently use "VAX", "VAXen", and "MicroVAX" in ↵Lars Brinkhoff1-2/+2
comments and documentation. * combine.c, config.gcc, cse.c, defaults.h, real.c, reload.c, simplify-rtx.c, config/alpha/alpha.h, config/avr/avr.h, config/convex/convex.h, config/d30v/d30v.c, config/d30v/d30v.h, config/dsp16xx/dsp16xx.h, config/elxsi/elxsi.h, config/fr30/fr30.h, config/m88k/m88k.c, config/mips/mips.h, config/mn10200/mn10200.h, config/mn10300/mn10300.h, config/pdp11/pdp11.md, config/v850/v850.h, config/vax/openbsd.h, config/vax/openbsd1.h, config/vax/ultrix.h, config/vax/vax-protos.h, config/vax/vax.c, config/vax/vax.h, config/vax/vax.md, config/vax/vaxv.h, config/vax/xm-vms.h, cp/decl2.c, doc/contrib.texi, doc/cpp.texi, doc/gcc.texi, doc/install.texi, doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/tm.texi: consistently use "VAX", "VAXen", and "MicroVAX" in comments and documentation. From-SVN: r44589
2001-08-01alias.c: Fix comment formatting.Kazu Hirata1-2/+2
* alias.c: Fix comment formatting. * bitmap.c: Likewise. * builtins.c: Likewise. * calls.c: Likewise. * c-common.c: Likewise. * c-decl.c: Likewise. * c-dump.c: Likewise. * c-lex.c: Likewise. * collect2.c: Likewise. * combine.c: Likewise. * conflict.c: Likewise. * cppfiles.c: Likewise. * cppinit.c: Likewise. * cpplex.c: Likewise. * cpplib.c: Likewise. * cppmacro.c: Likewise. * cppspec.c: Likewise. * c-pragma.c: Likewise. * crtstuff.c: Likewise. * cse.c: Likewise. * cselib.c: Likewise. * c-semantics.c: Likewise. * c-typeck.c: Likewise. From-SVN: r44547
2001-07-30jump.c: Add prototype for mark_modified_reg.Andreas Jaeger1-1/+1
* jump.c: Add prototype for mark_modified_reg. * cse.c (set_live_p): Add unused attribute. * gcov.c (calculate_branch_probs): Use gcov_type to avoid overflow. (scan_for_source_files): Use long for count to avoid overflow. (output_data): Likewise. (output_data): Don't use string concatatenation to silence gcc -traditional. * predict.c: Fix typos and grammar. * gcse.c (insert_insn_end_bb): Remove unused variables. For cp: * decl2.c: Remove unused var global_temp_name_counter. From-SVN: r44479