aboutsummaryrefslogtreecommitdiff
path: root/gcc/final.c
AgeCommit message (Collapse)AuthorFilesLines
2000-08-04alias.c (mark_constant_function): Use INSN_P.Rodney Brown1-6/+6
* alias.c (mark_constant_function): Use INSN_P. (init_alias_analysis): Likewise. * combine.c (combine_instructions): Use INSN_P. (can_combine_p): Likewise. (try_combine): Likewise. (distribute_notes): Likewise. (distribute_links): Likewise. * cse.c (cse_around_loop): Use INSN_P. (invalidate_skipped_block): Likewise. (cse_set_around_loop): Likewise. (cse_end_of_basic_block): Likewise. (delete_trivially_dead_insns): Likewise. * emit-rtl.c (unshare_all_rtl_again): Use INSN_P. (unshare_all_rtl_1): Likewise. (next_cc0_user): Likewise. (try_split make_insn_raw): Likewise. (remove_unnecessary_notes): Likewise. * final.c (shorten_branches): Use INSN_P. (leaf_renumber_regs): Likewise. (leaf_renumber_regs_insn): Likewise. * flow.c (find_label_refs): Use INSN_P. (verify_wide_reg): Likewise. (notice_stack_pointer_modification): Likewise. (count_or_remove_death_notes): Likewise. (verify_flow_info): Likewise. (clear_log_links): Likewise. * function.c (fixup_var_refs_insns): Use INSN_P. (compute_insns_for_mem): Likewise. * gcse.c (alloc_gcse_mem): Use INSN_P. (compute_sets): Likewise. (compute_hash_table): Likewise. (classic_gcse): Likewise. (cprop): Likewise. (insert_insn_end_bb): Likewise. (delete_null_pointer_checks_1): Likewise. * global.c (expand_preferences): Use INSN_P. (build_insn_chain): Likewise. * graph.c (node_data): Use INSN_P. * haifa-sched.c (priority): Use INSN_P. (rm_line_notes): Likewise. (rm_other_notes): Likewise. (find_insn_reg_weight): Likewise. (init_target_units): Likewise. (schedule_block): Likewise. (compute_block_forward_dependences): Likewise. (debug_dependencies): Likewise. (set_priorities): Likewise. * integrate.c (function_cannot_inline_p): Use INSN_P. (save_parm_insns): Likewise. (copy_insn_list): Likewise. * jump.c (mark_all_labels): Use INSN_P. (never_reached_warning): Likewise. * lcm.c (optimize_mode_switching): Use INSN_P. * local-alloc.c (validate_equiv_mem): Use INSN_P. (memref_used_between_p): Likewise. (update_equiv_regs): Likewise. (block_alloc): Likewise. (no_conflict_p): Likewise. * loop.c (scan_loop): Use INSN_P. (find_and_verify_loops): Likewise. (count_loop_regs_set): Likewise. (loop_reg_used_before_p): Likewise. (strength_reduce): Likewise. (recombine_givs): Likewise. (check_dbra_loop): Likewise. (load_mems): Likewise. (try_copy_prop): Likewise. * print-rtl.c (print_rtx): Use INSN_P. * recog.c (find_single_use): Use INSN_P. * reg-stack.c (stack_regs_mentioned): Use INSN_P. (next_flags_user): Likewise. (swap_rtx_condition): Likewise. * regmove.c (mark_flags_life_zones): Use INSN_P. (optimize_reg_copy_1): Likewise. (optimize_reg_copy_2): Likewise. (optimize_reg_copy_3): Likewise. (reg_is_remote_constant_p): Likewise. (fixup_match_2): Likewise. (regmove_optimize): Likewise. (fixup_match_1): Likewise. * regrename.c (build_def_use): Use INSN_P. (replace_reg_in_block): Likewise. (consider_use): Likewise. * reload.c (find_equiv_reg): Use INSN_P. * reload1.c (reload): Use INSN_P. (maybe_fix_stack_asms): Likewise. (calculate_needs_all_insns): Likewise. (reload_as_needed): Likewise. (emit_output_reload_insns): Likewise. (delete_address_reloads_1): Likewise. (reload_cse_regs_1): Likewise. (reload_combine): Likewise. (reload_cse_move2add): Likewise. * reorg.c (redundant_insn): Use INSN_P. (dbr_schedule): Likewise. * resource.c (find_dead_or_set_registers): Use INSN_P. (mark_target_live_regs): Likewise. * rtlanal.c (reg_used_between_p): Use INSN_P. (reg_referenced_between_p): Likewise. (reg_set_between_p): Likewise. (reg_set_p): Likewise. (single_set): Likewise. (multiple_sets): Likewise. (find_last_value): Likewise. (reg_set_last): Likewise. (find_reg_note): Likewise. (find_regno_note): Likewise. * sibcall.c (sequence_uses_addressof): Use INSN_P. * simplify-rtx.c (cselib_process_insn): Use INSN_P. * ssa.c (find_evaluations): Use INSN_P. (rename_block): Likewise. (rename_equivalent_regs): Likewise. * unroll.c (loop_find_equiv_value): Use INSN_P. (set_dominates_use): Likewise. * varasm.c (mark_constant_pool): Use INSN_P. (mark_constants): Likewise. * config/alpha/alpha.c (alpha_does_function_need_gp): Use INSN_P. (alphaev4_next_group): Likewise. (alphaev5_next_group): Likewise. * config/c4x/c4x.c (c4x_process_after_reload): Use INSN_P. (c4x_rptb_rpts_p): Likewise. * config/mips/mips.c (mips16_optimize_gp): Use INSN_P. * config/rs6000/rs6000.c (uses_TOC): Use INSN_P. (rs6000_adjust_priority): Likewise. * config/sh/sh.c (sh_loop_align): Use INSN_P. (machine_dependent_reorg): Likewise. (split_branches): Likewise. * config/tahoe/tahoe.c (tahoe_cmp_check): Use INSN_P. From-SVN: r35494
2000-07-30Makefile.in (OBJS): Add doloop.o.Richard Henderson1-3/+9
* Makefile.in (OBJS): Add doloop.o. * doloop.c: New file. * final.c (insn_current_reference_address): Return 0 before final. * flags.h (flag_branch_on_count_reg): Fix typos in commentary. * jump.c (any_uncondjump_p): Likewise. * loop.c (indirect_jump_in_function): Make static. (strength_reduce): Call doloop_optimize. (insert_bct, instrument_loop_bct): Remove. * loop.h (doloop_optimize): Prototype. * recog.c (split_all_insns): Split all INSN_P. * toplev.c (flag_branch_on_count_reg): Default on. * config/c4x/c4x.c (c4x_optimization_options): Don't set flag_branch_on_count_reg. * config/i386/i386.c (override_options): Likewise. * config/rs6000/rs6000.c (optimization_options): Likewise. * config/i386/i386.md (decrement_and_branch_on_count): Remove. (doloop_end): New. (dbra_ge): Remove, as well as all it's splitters. * config/rs6000/rs6000.md (decrement_and_branch_on_count): Remove. (doloop_end): New. * config/ia64/ia64-protos.h (ar_lc_reg_operand): Declare. (ia64_register_move_cost): Declare. * config/ia64/ia64.c (ar_lc_reg_operand): New. (struct ia64_frame_info): Add ar_size. (ia64_compute_frame_size): Set it. (save_restore_insns): Save and restore ar.lc. (ia64_register_move_cost): New, moved from header file. Handle application registers. (REG_AR_PFS, REG_AR_EC): Remove. Replace with AR_*_REGNUM numbers. (emit_insn_group_barriers): Special case doloop_end_internal. (ia64_epilogue_uses): Mark ar.lc live at end. * config/ia64/ia64.h (AR_CCV_REGNUM, AR_LC_REGNUM): New registers. (AR_EC_REGNUM, AR_PFS_REGNUM): New registers. (FIRST_PSEUDO_REGISTER): Make room. (AR_M_REGNO_P, AR_I_REGNO_P, AR_REGNO_P): New. (FIXED_REGISTERS, CALL_USED_REGISTERS): Update. (REG_ALLOC_ORDER): Update. (HARD_REGNO_MODE_OK): Update. (REGISTER_NAMES): Update. (enum reg_class): Add AR_M_REGS and AR_I_REGS. (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update. (REGNO_REG_CLASS): Update. (LEGITIMATE_ADDRESS_DISP): Displacement range is 9 bits, not 10. (REGISTER_MOVE_COST): Move out of line. (PREDICATE_CODES): Update. * config/ia64/ia64.md (movdi patterns): Handle ar register classes. (addsi3_plus1_alt, adddi3_plus1_alt): New. (shladd_elim splitter): Allow constants in the predicate. (doloop_end, doloop_end_internal): New. From-SVN: r35358
2000-07-28Makefile.in (INSN_ATTR_H): New macro.Alexandre Oliva1-20/+21
* Makefile.in (INSN_ATTR_H): New macro. Replace all dependencies on insn-attr.h with it. * genattr.c: Generate `#include "insn-addr.h"' if HAVE_ATTR_length. * insn-addr.h: New header. (insn_addresses_): Renamed from insn_addresses. (INSN_ADDRESSES_DEFN, INSN_ADDRESSES, INSN_ADDRESSES_ALLOC, INSN_ADDRESSES_FREE, INSN_ADDRESSES_SET_P, INSN_ADDRESSES_SIZE, INSN_ADDRESSES_NEW): New macros. * genattrtab.c (write_test_expr): Use new macros. * final.c (insn_addresses, init_insn_lengths): Likewise. (align_fuzz, shorten_branches): Likewise. (final): Likewise. Do not reject new insns if their addresses have been added to INSN_ADDRESSES. * config/arm/arm.c, config/avr/avr.c: Use new macros. * config/h8300/h8300.c, config/i370/i370.c: Likewise. * config/m88k/m88k.c, config/pa/pa.c, config/pa/pa.md: Likewise. * config/sparc/sparc.c, config/sparc/sparc.md: Likewise. * config/sh/sh.c: Likewise. (output_branchy_insn): Use INSN_ADDRESSES_NEW. From-SVN: r35307
2000-07-13final.c (profile_function): Do not emit profile counters in the data ↵Zack Weinberg1-0/+4
section, if NO_PROFILE_COUNTERS is defined. * final.c (profile_function): Do not emit profile counters in the data section, if NO_PROFILE_COUNTERS is defined. * tm.texi: Document NO_PROFILE_COUNTERS. Update doc for FUNCTION_PROFILER. * config/i386/linux.h (NO_PROFILE_COUNTERS): Define. (FUNCTION_PROFILER): Just emit a call to mcount. From-SVN: r35005
2000-07-08final.c (final): Do not abort when reg-stack introduces a new insn.Richard Henderson1-6/+15
* final.c (final): Do not abort when reg-stack introduces a new insn. From-SVN: r34927
2000-07-07final.c (final): Detect out of bounds array access to the insn_lengths array.Jeffrey A Law1-0/+6
* final.c (final): Detect out of bounds array access to the insn_lengths array. From-SVN: r34901
2000-06-13final.c (final_scan_insn): Delete notes between cc0 setter and user when ↵Hans-Peter Nilsson1-1/+19
restarting from setter. * final.c (final_scan_insn): Delete notes between cc0 setter and user when restarting from setter. From-SVN: r34517
2000-05-29final.c (current_output_insn): New.Richard Henderson1-3/+4
* final.c (current_output_insn): New. (final_scan_insn): Set it. * output.h: Declare it. From-SVN: r34258
2000-05-25except.c (func_eh_entry): Add emitted field.Andrew MacLeod1-0/+7
2000-05-25 Andrew MacLeod <amacleod@cygnus.com> Andrew Haley <aph@cygnus.com> * except.c (func_eh_entry): Add emitted field. (new_eh_region_entry): Set emitted field to 0; (output_exception_table_entry): Only emit previously un-emitted data, and send it to the eh_data section. (output_exception_table): Break out common parts. Output exception table for entire compilation unit to eh_data section. (output_exception_table_data): Common parts of output_exception_table. Send output to eh_data section. (output_function_exception_table): Output exception table data for a single function to eh_data section. (free_exception_table): New external to free the table. * except.h (free_exception_table): Add prototype. (output_function_exception_table): Add prototype. * final.c (final_end_function): Output function exception table for IA64_UNWIND_INFO. (final_scan_insn): Emit any unwind directives for an insn. * frame-dwarf2.c: New file containing all DWARF 2 specific code from frame.c. * frame.c: Remove all DWARF 2 specific code. * config/ia64/frame-ia64.c: New file. (gthread_stuff): Make all gthread available with IA64_UNWIND_INFO. (dwarf_fde): Define an IA64 struct for dwarf_fde. (__register_frame_info, __register_frame): Move to common area of file. (__register_frame_info_table, __register_frame_table): Move to common i area. (__deregister_frame_info, __deregister_frame): Move to common area. (__frame_init, find_fde): New versions for IA64_UNWIND_INFO. (read_uleb128): New version for ia64. (get_unwind_record): Read the next IA-64 unwind record. (read_R_record): Read a region header record. (process_a_b_reg_code): X record helper. (read_X_record): Read an X format record. (read_B_record): Read a B format record. (P3_record_types): List of record types matching the P3 format. (P7_record_types): List of record types matching the P7 format. (P8_record_types): List of record types matching the P8 format. (read_P_record): Read a P format record. (init_ia64_reg_loc): Set default fields for a register. (init_ia64_unwind_frame): Set defaults for all register records. (execute_one_ia64_descriptor): Execute one descriptor record. (rse_address_add): Calculate the position of a local reg in memory. (normalize_reg_loc): Turn a location descriptor into a memory address. (maybe_normalize_reg_loc): Only normalize a descriptor if it falls within a specified PC offset range. (get_real_reg_value): Given a register location, retrieve its value. (set_real_reg_value): Change the value of a register location. (copy_reg_value): Copy reg values, if needed. (copy_saved_reg_state): Copy all registers that need to be copied. (process_state_between): Normalize all frame register records that fall within the specified PC range. (frame_translate): Take a processed frame description, and turn everything into addresses. (build_ia64_frame_state ): Find and create frame state record for a PC. (get_personality): Get the personality routine for a given frame. (get_except_table): Get the exception table for a given frame. (record_name): Unwind record names for debugging. (print_record): Print and unwind record. (print_all_records): Print an entire unwind image. (__ia64_backtrace): Print a backtrace. (ia64_backtrace_helper): New function. (__register_frame_info_aux): New function. * config/ia64/crtend.asm (__do_frame_setup_aux): New function. * frame.h (enum unw_record_type): New unwind record types. (struct unw_p_record, unw_b_record, unw_x_record) : New unwind records. (struct unw_r_record, unwind_record): New unwind record structs. (struct unwind_info_ptr): Unwind information layout. (IA64_UNW_LOC_TYPE_*): Macros for different types for location descriptors. (struct ia64_reg_loc): Register location description. (struct ia64_frame_state): Location of all registers in a frame. (struct object): Add pc_base and fde_end for IA64_UNWIND_INFO. * libgcc2.c (__ia64_personality_v1): Personality routine. (__calc_caller_bsp): Calculate the bsp register for the caller's frame. (ia64_throw_helper): Figure out who to return to and set up the registers. (__throw): Throw routine. * output.h (assemble_eh_align, assemble_eh_label): New functions to generate EH info where we want it. (assemble_eh_integer): New function. * toplev.c (compile_file): Output module level exception table for non-ia64 targets. (main): Set exceptions_via_longjump and flag_new_exceptions based on IA64_UNWIND_INFO too. * varasm.c (assemble_eh_label): Generate a label via ASM_OUTPUT_EH_LABEL if it has been specified. (assemble_eh_align): Generate an alignment directive via ASM_OUTPUT_EH_ALIGN if it has been specified. (assemble_eh_label): Generate an integer value via ASM_OUTPUT_EH_type if they have been specified. * config/ia64/ia64.c (rtx_needs_barrier): Add flushrs. (ia64_init_builtins): Add __builtin_ia64_bsp and __builtin_ia64_flushrs. (ia64_expand_builtin): Add IA64_BUILTIN_BSP and IA64_BUILTIN_FLUSHRS. * config/ia64/ia64.h (ia64_builtins): Add IA64_BUILTIN_BSP and IA64_BUILTIN_FLUSHRS. * config/ia64/ia64.md (flushrs): New insn to flush the register stack. Add to unspec list. * config/ia64/crtbegin.asm (frame_object): Change size. (__do_frame_setup_aux): New function. * config/ia64/crtend.asm: call __do_frame_setup_aux. * config/ia64/t-ia64 (LIB2ADDEH): Add. * Makefile.in (LIB2ADDEH): Add. (LIB2ADD): Use LIB2ADDEH. Co-Authored-By: Andrew Haley <aph@cygnus.com> From-SVN: r34169
2000-05-22final.c (final_scan_insn, [...]): Remove dangling "else" that causes "break" ↵Richard Kenner1-3/+0
to be conditional. * final.c (final_scan_insn, case NOTE_INSN_FUNCTION_BEG): Remove dangling "else" that causes "break" to be conditional. Also remove unneeded code at start. From-SVN: r34082
2000-05-20final.c (split_double): Right shift of negative values is not portable.Alexandre Oliva1-15/+40
* final.c (split_double): Right shift of negative values is not portable. From-SVN: r34061
2000-05-20top level:Zack Weinberg1-1/+1
* diagnostic.c: Eliminate implicit int. * except.c, gcc.c: Add static prototypes. * final.c (final_end_function): Mark file arg ATTRIBUTE_UNUSED. * gensupport.c (process_rtx): Use XVEC to initialize vector slot of 'split'. * print-rtl.c: If DEBUG_REGISTER_NAMES, define static debug_reg_names instead of static reg_names. If not, define global reg_names. * regclass.c: Don't define global reg_names unless DEBUG_REGISTER_NAMES is defined. * reload1.c (order_regs_for_reload): Remove unused variable. * varasm.c: Include output.h after defaults.h. Define eh_frame_section as function of no args, not of unspecified args. * gcc.c: Constify argbuf; arguments to store_arg, process_command, main; elements of struct command and struct switchstr; local variables in execute, process_command, main. cp: * except.c: Add static prototypes. From-SVN: r34054
2000-05-19basic-block.h (struct edge_def): New field "count".Jan Hubicka1-4/+3
* basic-block.h (struct edge_def): New field "count". (struct basic_block_def): Likewise. * flow.c (entry_exit_blocks): Add count fileds. (split_edge): Keep count information up-to-date. (dump_edge_info, dump_flow_info): Dump count fields. * final.c (count_instrumented_edges): Rename to edge from arc. (end_final): Update users. * profile.c: Include expr.h, basic-block.h. (struct adj_list, ARC_TARGET, ARC_SOURCE, ARC_COUNT): Kill. (struct bb_info, label_to_bb, label_to_bb_size, bb_graph): Kill. (ignore_next_note, return_label_execution_count): Kill. (bbg_file_name, da_file_name): Kill. (edge_info, bb_info): New structures. (EDGE_INFO, BB_INFO, GCOV_INDEX_TO_BB, BB_TO_GCOV_INDEX): New macros. (count_instrumented_edges, total_num_edges): Rename to edge from arc. (total_num_edges_instrumented): Likewise. (init_arc, expand_spanning_tree): Kill. (fill_spanning_tree, tablejump_entry_p): Kill. (instrument_edges): Rewrite from instrument_arcs to use commit_edge_insertions infrastructure. (compute_branch_probabilities): Remove arguments; rewrite for CFG infrastructure; use rtl_dump_file directly. (branch_prob, find_spanning_tree): Likewise. (union_groups, find_group): New. (init_branch_prob): Make bbg_file_name and da_file_name local. (end_branch_prob): Use rtl_dump_file directly. (init_edge_profiler): Rename to edge from arc. (output_arc_profiler): Kill. (gen_edge_profiler): New. (output_func_start_profiler): Turn off profiling. Make the constructor static when we can. * rtl.h (branch_prob, end_branch_prob): Update prototypes. * toplev.c (DFI_flow): Remove. (DFI_cfg, DFI_life): New. (dump_file): Update accordingly. (compile_file): Call end_branch_prob if profile_arc_flag too. (rest_of_compilation): Move flow1 cfg creation to DFI_cfg. Do edge profiling after the CFG is built. Move flow1 life analysis to DFI_life. Always estimate remaining probabilities. Co-Authored-By: Richard Henderson <rth@cygnus.com> From-SVN: r34037
2000-05-18print-rtl.c (print_rtx): Only print note line number as string if between ↵Jakub Jelinek1-0/+3
NOTE_INSN_BIAS and NOTE_INSN_MAX. * print-rtl.c (print_rtx): Only print note line number as string if between NOTE_INSN_BIAS and NOTE_INSN_MAX. * final.c (final_scan_insn): Do nothing for note line number 0. From-SVN: r33997
2000-05-12Makefile.in (final.o): Depend on BASIC_BLOCK_H.Richard Henderson1-146/+170
* Makefile.in (final.o): Depend on BASIC_BLOCK_H. * final.c (final_end_function): Use app_disable. Rearrange note handling into a switch. Emit deleted labels. (output_asm_label): Generate label strings for deleted labels. * flow.c (tail_recursion_label_list): New. (find_basic_blocks_1): Set label_value_list directly. Collect list of tail recursion labels from call_placeholders. Don't add deleted labels to the label value list. (cleanup_cfg): Use free_EXPR_LIST_list. (flow_delete_insn_chain): Turn non-removable labels into notes. (flow_delete_block): Don't disable deleting the block because of a non-removable label. (tail_recursion_label_p): New. (merge_blocks_move_predecessor_nojumps): Don't disable the merge because of a label. (merge_blocks_move_successor_nojumps): Likewise. Also move a jump table. (merge_blocks): Disable a merge because of tail recursion labels. * ifcvt.c (merge_if_block): Don't disable a merge because of a label. Use a more accurate measure of not merging the join block. (find_if_block): Don't disable conversion because of a label. (find_if_case_1, find_if_case_2): Likewise. * jump.c (duplicate_loop_exit_test): Preserve the kind of list element when copying. (squeeze_notes): Also leave EH notes. (mark_jump_label): Ignore deleted labels. Use an INSN_LIST for REG_LABEL notes. (delete_insn): Preserve LABEL_NAME in NOTE_SOURCE_FILE when deleting a label. * print-rtl.c (print_rtx): Print NOTE_SOURCE_FILE for NOTE_INSN_DELETED_LABEL. Print `[# deleted]' for a label_ref referring to a deleted label. Convert tail handling to a switch. * rtl.def (CODE_LABEL): Rearrange elements to be compatible with NOTE for NOTE_INSN_DELETED_LABEL. (NOTE): Fix commentary. * rtl.h (REG_LABEL): Update commentary wrt INSN_LIST. (REG_CC_SETTER, REG_CC_USER, REG_LIBCALL): Likewise. (CODE_LABEL_NUMBER, LABEL_NAME): Update index. (LABEL_NUSES, LABEL_REFS): Likewise. * unroll.c (copy_loop_body): Don't copy NOTE_INSN_DELETED_LABEL. From-SVN: r33876
2000-05-08final.c (current_insn_predicate): New.Richard Henderson1-0/+12
* final.c (current_insn_predicate): New. (final_scan_insn): Set it. * output.h (current_insn_predicate): Declare. From-SVN: r33790
2000-05-04rtl.h (MEM_COPY_ATTRIBUTES): Also copy RTX_UNCHANGING_P and MEM_ALIAS_SET.Richard Kenner1-1/+1
* rtl.h (MEM_COPY_ATTRIBUTES): Also copy RTX_UNCHANGING_P and MEM_ALIAS_SET. * alias.c (canon_rtx): Don't copy RTX_UNCHANGING_P or MEM_ALIAS_SET when calling MEM_COPY_ATTRIBUTES. * emit-rtl.c (operand_subword, change_address): Likewise. * explow.c (stabilize): Likewise. * expr.c (protect_from_queue, emit_move_insn_1): Likewise. * integrate.c (copy_rtx_and_substitute): Likewise. * combine.c (combine_simplify_rtx): Don't copy RTX_UNCHANGING_P when calling MEM_COPY_ATTRIBUTES. (make_extraction, simplify_shift_const, gen_lowpart_for_combine): Likewise. * cse.c (gen_lowpart_if_possible): Likewise. * function.c (fixup_var_refs_1, purge_addressof_1): Likewise. * optabs.c (gen_move_insn): Likewise. * recog.c (validate_replace_rtx_1): Likewise. * simplify-rtx.c (add_mem_for_addr): Likewise. * stmt.c (expand_anon_union_decl): Likewise. * config/arm/arm.md: Likewise. * config/h8300/h7300.c (fix_bit_operand): Likewise. * config/m88k/m88k.c (legitimize_address, block_move_loop): Likewise. (block_move_no_loop, block_move_sequence): Likewise. * config/rs6000/rs6000.c (expand_block_move_mem): Likewise. * config/alpha/alpha.c (get_aligned_mem): Likewise. Clear MEM_ALIAS_SET. * final.c (alter_subreg): Don't copy MEM_ALIAS_SET when calling MEM_COPY_ATTRIBUTES. From-SVN: r33665
2000-05-02final.c (final_start_function): Fix spelling of "necessary".Mumit Khan1-1/+1
2000-05-02 Mumit Khan <khan@xraylith.wisc.edu> * final.c (final_start_function): Fix spelling of "necessary". From-SVN: r33617
2000-04-16Makefile.in ($(srcdir)/c-parse.y: c-parse.in): Enclose the whole message in ↵Dave Pitts1-2/+1
quotes. * Makefile.in ($(srcdir)/c-parse.y: c-parse.in): Enclose the whole message in quotes. Otherwise, IBM's make program treats the '#' as the start of a comment and ignores the remainder of the line. * c-lex.c (yylex): Change for EBCDIC, lower case characters preceed upper case. * cccp.c (initialize_char_syntax): Allow for holes in EBCDIC. * cexp.y (initialize_random_junk): Likewise. * cppfiles.c (find_include_file): Cast alloca return value. * cppinit.c (initialize_standard_includes): Likewise. * cpplib.c (cpp_define, cpp_undef): Likewise. * defaults.h (ASM_OUTPUT_ASCII): Use ISPRINT. * final.c (output_asm_insn): Allow for holes in EBCDIC. * fold-const.c (CHARMASK): New. (real_hex_to_f): Use it. * real.c (CHARMASK): New. (etoasc, asctoeg): Use it. (asctoeg): EBCDIC lower case characters preceed upper case. From-SVN: r33192
2000-04-06final.c (final): Use xcalloc to allocate line_note_exists.Mark Mitchell1-2/+3
* final.c (final): Use xcalloc to allocate line_note_exists. * function.c (free_after_compilation): Free the temp_slots. (assign_stack_temp_for_type): Use xmalloc to allocate temp_slots. (combine_temp_slot): Free temp_slots when they get combined. (purge_addressof): Fix typo in comment. * stmt.c (mark_goto_fixup): Mark the fixup itself. (expand_fixup): Allocate the fixup with ggc_alloc_obj. * ggc.h: Include varray.h. (ggc_pending_trees): Declare. (ggc_mark_tree_children): Remove declaration. (ggc_mark_tree): Just push unmarked trees on ggc_pending_trees. * ggc-common.c (ggc_pending_trees): New variable. (ggc_mark_roots): Call ggc_mark_trees. (ggc_mark_tree_children): Rename to ggc_mark_trees. Process all the ggc_pending_trees. * Makefile.in (GGC_H): New variable. Use it throughout in place of ggc.h. * Makefile.in (GGC_H): New variable. Use it throughout in place of ggc.h. * call.c: Don't include obstack.h. Include ggc.h. (obstack_chunk_alloc): Don't define. (obstack_chunk_free): Likewise. (add_candidate): Allocate the z_candidate with ggc_alloc_obj. * decl.c (push_switch): Use xmalloc to allocate the cp_switch. (pop_switch): Free it. * decl2.c (grokclassfn): Set TREE_READONLY for PARM_DECLs. * dump.c (dequeue_and_dump): Don't try to print the bit_position if we don't have a DECL_FIELD_OFFSET. * Makefile.in (GGC_H): Add varray.h. From-SVN: r32956
2000-03-29Convert ACCUMULATE_OUTGOING_ARGS to an expression.Jan Hubicka1-13/+21
* calls.c (PUSH_ARGS_REVERSED) Change to expression. (ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): Provide default value. (struct arg_data): Remove #ifdef ACCUMULATE_OUTGOING_ARGS. (save_fixed_argument_area, restore_fixed_argument_area): conditionize by #ifdef REG_PARM_STACK_SPACE only. (emit_call): Change #ifdefs on ACCUMULATE_OUTGOING_ARGS to conditions, handle RETURN_POPS_ARGS on ACCUMULATE_OUTGOING_ARGS. (precompute_register_parameters): Avoid #ifdefs on ACCUMULATE_OUTGOING_ARGS and PUSH_ARGS_REVERSED. (stire_one_args): Likewise. (expand_call): Likewise; conditionize PUSH_ROUNDING code by PUSH_ARGS. (emit_library_call_value_1): Likewise. (compute_argument_block_size): Align to STACK_BOUNDARY only for ACCUMULATE_OUTGOING_ARGS. * combine.c (ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): Provide default value. (nonzero_bits): Conditionize PUSH_ROUNDING code by USE_PUSH. (use_crosses_set_p): Likewise. * all targets (ACCUMULATE_OUTGOING_ARGS define): Change to #define ACCUMULATE_OUTGOING_ARGS 1. * i386.c (ix86_compute_frame_size): Handle ACCUMULATE_OUTGOING_ARGS frames. * i386.h (MASK_NO_PUSH_ARGS, MASK_ACCUMULATE_OUTGOING_ARGS): New constants. (TARGET_PUSH_ARGS, TARGET_ACCUMULATE_OUTGOING_ARGS): New macros. (TARGET_SWITCHES): Add push-args, no-push-args, accumulate-outgoing-args and no-accumulate-outgoing-args. (ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): New macro. * expr.c (ACCUMULATE_OUTGONG_ARGS, PUSH_ARGS): Provide default. (push_block): Avoid ifdefs on ACCUMULATE_OUTGONG_ARGS and PUSH_ROUNDING. (emit_push_insn): Likewise. * final.c (ACCUMULATE_OUTGOING_ARGS): Provide default. (final_scan_insn): Avoid ifdefs on ACCUMULATE_OUTGOING_ARGS. * function.c (ACCUMULATE_OUTGOING_ARGS): Provide default. (STACK_DYNAMIC_OFFSET): Define correctly for both ACCUMULATE_OUTGOING_ARGS and normal mode. * invoke.texi (-mpush_args, -maccumulate-outgoing-args): Document. * tm.texi (PUSH_ARGS): Document. (ACCUMULATE_OUTGOING_ARGS, PUSH_ROUNDING): Update documentation. From-SVN: r32803
2000-03-24sibcall.c (skip_copy_to_return_value): Use OUTGOING_REGNO for comparison if ↵Jakub Jelinek1-4/+5
regno's are equal. * sibcall.c (skip_copy_to_return_value): Use OUTGOING_REGNO for comparison if regno's are equal. * calls.c (initialize_argument_informat): Add ecf_flags argument. Use FUNCTION_INCOMING_ARG if available and ECF_SIBCALL. (expand_call): Update caller. Avoid making a sibling call if argument size of the callee is larger than argument size of the caller. Call hard_function_value with outgoing set if in sibcall pass. Use FUNCTION_INCOMING_ARG if available and ECF_SIBCALL. * final.c (permitted_reg_in_leaf_functions, only_leaf_regs_used): Change LEAF_REGISTERS from an array initializer to actual array identifier. Move static global variable into the function. (leaf_function_p): Allow SIBLING_CALL_P calls even outside of sequences for leaf functions. * global.c (global_alloc): Likewise. * tm.texi (LEAF_REGISTERS): Update documentation. * config/sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Remove the ugly TARGET_FLAT leaf disabling hack. (LEAF_REGISTERS): Changed from an array initializer to actual array identifier to avoid duplication and remove the above hack. (FUNCTION_OK_FOR_SIBCALL): Define. * config/sparc/sparc.md (sibcall): New attr type. Use it almost always like call attribute. (eligible_for_sibcall_delay): New attribute. (sibcall): New delay type. (sibcall, sibcall_value, sibcall_epilogue): New expands. (sibcall_symbolic_sp32, sibcall_symbolic_sp64, sibcall_value_symbolic_sp32, sibcall_value_symbolic_sp64): New insns. * config/sparc/sparc.c (sparc_leaf_regs): New array. (eligible_for_sibcall_delay, output_restore_regs, output_sibcall): New functions. (output_function_epilogue): Move part of the code into output_restore_regs. (ultra_code_from_mask, ultrasparc_sched_reorder): Handle TYPE_SIBCALL. * sparc-protos.h (output_sibcall, eligible_for_sibcall_delay): New prototypes. From-SVN: r32730
2000-03-17Sibling call optimizations.Jeffrey A Law1-2/+4
Co-Authored-By: Richard Henderson <rth@cygnus.com> From-SVN: r32612
2000-03-07rtl.h (rtunion_def): Constify member `rtstr'.Kaveh R. Ghazi1-4/+4
* rtl.h (rtunion_def): Constify member `rtstr'. (emit_line_note_after, emit_line_note, emit_line_note_force, emit_note, decode_asm_operands): Constify. * cse.c (canon_hash): Likewise. * dbxout.c (dbxout_block): Likewise. * diagnostic.c (file_and_line_for_asm, v_error_for_asm, v_warning_for_asm): Likewise. * dwarfout.c (function_start_label): Likewise. * emit-rtl.c (emit_line_note_after, emit_line_note, emit_note, emit_line_note_force): Likewise. * final.c (last_filename, asm_insn_count, final_scan_insn, output_source_line): Likewise. * function.h (struct emit_status): Likewise. * gcse.c (hash_expr_1): Likewise. * genattr.c (gen_attr, main): Likewise. * genattrtab.c (struct function_unit, current_alternative_string, write_attr_valueq, n_comma_elts, next_comma_elt, attr_eq, attr_numeral, check_attr_test, check_attr_value, convert_set_attr_alternative, convert_set_attr, compute_alternative_mask, simplify_by_exploding, gen_attr, gen_unit): Likewise. * genflags.c (gen_insn): Likewise. * gengenrtl.c (type_from_format): Likewise. * genopinit.c (gen_insn): Likewise. * genoutput.c (n_occurrences, process_template, process_template): Likewise. * ggc-page.c (ggc_set_mark, ggc_mark_if_gcable, ggc_get_size): Likewise. * ggc-simple.c (ggc_set_mark, ggc_mark_if_gcable, ggc_get_size): Likewise. * ggc.h (ggc_mark_string, ggc_mark, ggc_mark_if_gcable, ggc_set_mark, ggc_get_size): Likewise. * objc/objc-act.c (build_module_descriptor, finish_objc): Likewise. * optabs.c (init_one_libfunc): Likewise. * output.h (assemble_start_function): Likewise. * recog.c (decode_asm_operands): Likewise. * toplev.c (rest_of_compilation): Likewise. * tree.h (emit_line_note_after, emit_line_note, emit_line_note_force): Likewise. * varasm.c (asm_output_bss, asm_output_aligned_bss, asm_emit_uninitialised, assemble_start_function, assemble_variable, const_hash, compare_constant_1, find_pool_constant, mark_constant_pool, assemble_alias): Likewise. * xcoffout.h (DBX_FINISH_SYMBOL): Likewise. * alpha/alpha.md (call_vms, call_value_vms): Likewise. * arm/aof.h (ASM_OUTPUT_ASCII): Likewise. * arm/aout.h (ASM_OUTPUT_ASCII): Likewise. * arm/arm-protos.h (output_ascii_pseudo_op, arm_dllexport_name_p, arm_dllimport_name_p): Likewise. * arm/arm.c (arm_encode_call_attribute, output_ascii_pseudo_op): Likewise. * arm/arm.h (ASM_OUTPUT_MI_THUNK): Likewise. * arm/elf.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * arm/pe.c (arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport, arm_mark_dllimport, arm_pe_encode_section_info): Likewise. * arm/telf.h (ASM_OUTPUT_DEF_FROM_DECLS, ASM_FINISH_DECLARE_OBJECT): Likewise. * arm/thumb.c (thumb_function_prologue): Likewise. * arm/thumb.h (ASM_OUTPUT_ASCII): Likewise. * avr/avr.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * clipper/clix.h (ASM_OUTPUT_ASCII): Likewise. * fx80/fx80.h (ASM_OUTPUT_ASCII): Likewise. * i386/cygwin.h (ASM_OUTPUT_SECTION_NAME): Likewise. * i386/freebsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * i386/i386-interix.h (ASM_OUTPUT_LIMITED_STRING, ASM_OUTPUT_ASCII, ASM_OUTPUT_SECTION_NAME): Likewise. * i386/i386-protos.h (asm_output_function_prefix): Likewise. * i386/i386.c (asm_output_function_prefix): Likewise. * i386/i386elf.h (ASM_OUTPUT_ASCII): Likewise. * i386/osfrose.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * i386/ptx4-i.h (ASM_OUTPUT_ASCII): Likewise. * i386/sco5.h (ASM_FINISH_DECLARE_OBJECT, ASM_OUTPUT_LIMITED_STRING, ASM_OUTPUT_ASCII, ASM_OUTPUT_SECTION_NAME): Likewise. * i386/sysv4.h (ASM_OUTPUT_ASCII): Likewise. * i860/paragon.h (ASM_OUTPUT_ASCII): Likewise. * i860/sysv3.h (ASM_OUTPUT_ASCII): Likewise. * m32r/m32r.c (m32r_encode_section_info): Likewise. * mcore-elf.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * mcore/mcore.c (mcore_encode_section_info): Likewise. * mips/elf.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * mips/elf64.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * mips/iris6.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * mips/mips.h (ASM_OUTPUT_IDENT): Likewise. * mips/mips.md (movdi, movsi): Likewise. * mips/netbsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * netbsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * openbsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise. * ptx4.h (ASM_FINISH_DECLARE_OBJECT, ASM_OUTPUT_LIMITED_STRING, ASM_OUTPUT_ASCII): Likewise. * rs6000/rs6000.c (rs6000_allocate_stack_space, output_epilog, output_mi_thunk, output_toc): Likewise. * rs6000/rs6000.md (movsi): Likewise. * rs6000/sysv4.h (ASM_OUTPUT_INT, ASM_OUTPUT_SECTION_NAME): Likewise. * tahoe/harris.h (ASM_OUTPUT_ASCII): Likewise. * v850/v850.c (print_operand, print_operand_address, v850_encode_data_area): Likewise. ch: * grant.c (globalize_decl): Constify a char*. cp: * decl2.c (finish_objects): Constify a char*. * method.c (emit_thunk): Likewise. From-SVN: r32388
2000-03-04stmt.c (is_body_block): Move...Jason Merrill1-4/+1
* stmt.c (is_body_block): Move... * dwarfout.c, dwarf2out.c: ...from here. * tree.h: Declare it. * emit-rtl.c (remove_unncessary_notes): Don't remove the body block. * final.c (final_start_function): Do call remove_unnecessary_notes when scheduling. From-SVN: r32324
2000-03-03dwarf2out.c (dwarf2out_frame_debug): Add cast to silence warning.Jason Merrill1-1/+4
* dwarf2out.c (dwarf2out_frame_debug): Add cast to silence warning. (dwarf2out_decl): Functions can now have DECL_IGNORED_P. (gen_decl_die): Likewise. * dwarfout.c (dwarfout_file_scope_decl): Likewise. (output_decl): Likewise. * varasm.c (make_function_rtl): If we change the name used in the rtl, update DECL_ASSEMBLER_NAME accordingly. (make_decl_rtl): Likewise. * toplev.c (rest_of_compilation): Tweak formatting. * toplev.c (rest_of_compilation): find_loop_tree_blocks before remove_unnecessary_notes. (debug_ignore_block): New fn. * toplev.h: Declare it. * emit-rtl.c (remove_unncessary_notes): Call it. * dwarf2out.c (dwarf2out_ignore_block): New fn. * dwarf2out.h: Declare it. * final.c (final_start_function): Don't call remove_unnecessary_notes if we did insn scheduling. From-SVN: r32320
2000-02-29c-decl.c (current_function_decl): Move to toplev.c.Martin v. Löwis1-0/+2
* c-decl.c (current_function_decl): Move to toplev.c. (init_decl_processing): Don't add current_function_decl as a ggc root here. * dbxout.c (dbxout_symbol): Change return type to int. (dbxout_symbol_location, dbxout_syms): Likewise. (dbxout_block): Don't emit LBRAC/RBRAC pairs for blocks without any locals. Use current_function_func_begin_label if set. * dbxout.h (dbxout_symbol, dbxout_syms): Change return type. * dwarf2out.c (dwarf2out_begin_prologue): Set current_function_func_begin_label. * final.c (final_start_function): Reset it. * toplev.c (current_function_decl): Define it here. (current_function_func_begin_label): New variable. (main): Add both as ggc roots. * tree.h (current_function_func_begin_label): Declare. * ch/decl.c (current_function_decl): Move to toplev.c. * cp/decl.c (current_function_decl): Move to toplev.c. * f/com.c (current_function_decl): Move to toplev.c. * java/decl.c (current_function_decl): Move to toplev.c. From-SVN: r32268
2000-02-28emit-rtl.c (remove_unncessary_notes): Remove notes for empty blocks.Mark Mitchell1-65/+30
* emit-rtl.c (remove_unncessary_notes): Remove notes for empty blocks. * final.c (next_block_index): Remove. (max_block_depth): Likewise. (pending_blocks): Likewise. (init_final): Don't initialize them. (final_start_function): Don't set next_block_index. Set up BLOCK_NUMBER. (final_scan_insn): Use BLOCK_NUMBER, not next_block_index. * function.h (number_blocks): New function. * function.c (get_block_vector): New function. (identify_blocks): Use it. (reorder_blocks): Set NOTE_BLOCK. (number_blocks): New function. * tree.def (BLOCK): Add documentation for TREE_ASM_WRITTEN flag. * tree.h (BLOCK_NUMBER): New macro. (tree_block): Add block_num field. * dbxout.c (next_block_number): Remove. (dbxout_init): Don't set it. (dbxout_block): Only output blocks that have TREE_ASM_WRITTEN set. Use BLOCK_NUMBER, rather than next_block_num, to determine block numbers. * toplev.c (rest_of_compilation): Always call find_loop_tree_blocks. Fix indentation. * dwarf2out.c (next_block_number): Remove. (gen_lexical_block_die): Use BLOCK_NUMBER, not next_block_number, to determine block numbers. (gen_inlined_subroutine_die): Likewise. (gen_block_die): Only output blocks that have TREE_ASM_WRITTEN set. (decls_for_scope): Don't increment next_block_number. * dwarfout.c (next_block_number): Remove. (output_lexical_block_die): Use BLOCK_NUMBER, not next_block_number, to determine block numbers. (output_inlined_subroutine_die): Likewise. (output_block): Only output blocks that have TREE_ASM_WRITTEN set. (output_decls_for_scope): Don't increment next_block_number. * sdbout.c (next_block_number): Remove. (sdbout_block): Use BLOCK_NUMBER. (sdbout_begin_block): Simplify. * xcoffout.c (next_block_number): Remove. (xcoffout_block): Use BLOCK_NUMBER, not next_block_number. (xcoffout_begin_block): Don't set next_block_number. (xcoffout_begin_function): Likewise. Use BLOCK_NUMBER, not next_block_number. From-SVN: r32228
2000-02-25Fix copyrights.Jeff Law1-1/+2
From-SVN: r32175
2000-02-23final.c (shorten_branches): Make value passed to LABEL_ALIGN conform to ↵J"orn Rennecke1-1/+1
documentation. * final.c (shorten_branches): Make value passed to LABEL_ALIGN conform to documentation. * sh.h (LABEL_ALIGN): If aligning loops, call sh_label_align to check for special cases. * sh-protos.h (sh_label_align): Declare. * sh.c (sh_label_align): Define. From-SVN: r32114
2000-01-18calls.c (emit_call_1): Mark parameter with ATTRIBUTE_UNUSED.Kaveh R. Ghazi1-1/+1
* calls.c (emit_call_1): Mark parameter with ATTRIBUTE_UNUSED. * except.c (eh_regs): Likewise. * final.c (output_operand): Likewise. * fold-const.c (target_isinf, target_isnan): Likewise. From-SVN: r31490
2000-01-14eh-common.h: PROTO -> PARAMS.Kaveh R. Ghazi1-15/+15
* eh-common.h: PROTO -> PARAMS. * emit-rtl.c: Likewise. * errors.c: Likewise. * errors.h: Likewise. * except.c: Likewise. * except.h: Likewise. * explow.c: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * expr.h: Likewise. * final.c: Likewise. * fix-header.c: Likewise. * flow.c: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * function.h: Likewise. * gcc.c: Likewise. * gcov-io.h: Likewise. * gcov.c: Likewise. * gcse.c: Likewise. From-SVN: r31419
2000-01-10Makefile.in (optabs.o): Depend on real.hKaveh R. Ghazi1-3/+5
* Makefile.in (optabs.o): Depend on real.h (resource.o): Depend on insn-attr.h * builtins.c (result_vector): Wrap prototype in macro conditions governing definition and use. * c-common.c: Include tm_p.h. * c-lex.c: Likewise. * elfos.h: Constify a char*. * final.c (align_fuzz): Wrap prototype in macro HAVE_ATTR_length. (get_attr_length, shorten_branches, profile_after_prologue): Mark parameter with ATTRIBUTE_UNUSED. * fold-const.c (exact_real_inverse): Wrap variable `i' in CHECK_FLOAT_VALUE. * haifa-sched.c (schedule_insns): Mark parameter with ATTRIBUTE_UNUSED. * optabs.c: Include real.h. * real.h (ereal_atof): Add prototype arguments. * resource.c: Include insn-attr.h. * sdbout.c (sdbout_queue_anonymous_type, sdbout_dequeue_anonymous_types): Wrap in macro SDB_ALLOW_FORWARD_REFERENCES. (sdbout_init, sdbout_start_new_source_file): Mark parameter with ATTRIBUTE_UNUSED. * stmt.c (expand_return): Wrap variable `op0' in macro HAVE_return. * stupid.c: Include tm_p.h. * tree.c (real_value_from_int_cst): Mark parameter with ATTRIBUTE_UNUSED. cp: * lex.c: Include tm_p.h. ch: * lex.c: Include tm_p.h. From-SVN: r31308
2000-01-05final.c (shorten_branches): Correctly compute length of asms without operands.Denis Chertykov1-3/+4
* final.c (shorten_branches): Correctly compute length of asms without operands. From-SVN: r31230
1999-12-24Makefile.in (toplev.o): Depend on loop.h.Kaveh R. Ghazi1-2/+2
* Makefile.in (toplev.o): Depend on loop.h. * dwarfout.c: Include tm_p.h. * emit-rtl.c (restore_emit_status): Mark parameter with ATTRIBUTE_UNUSED. * final.c (final_scan_insn): Likewise. * flow.c (flow_nodes_print, flow_exits_print, flow_loops_cfg_dump, flow_loop_nested_p, flow_loop_exits_find, flow_loop_nodes_find, flow_depth_first_order_compute, flow_loop_pre_header_find, flow_loop_tree_node_add, flow_loops_tree_build, flow_loop_level_compute, flow_loops_level_compute, flow_loop_outside_edge_p): Add prototypes. (recompute_reg_usage): Mark parameters with ATTRIBUTE_UNUSED. * ggc-callbacks.c (lang_mark_tree, lang_mark_false_label_stack): Mark with ATTRIBUTE_NORETURN. * hash.c (hash_newfunc): Mark parameter with ATTRIBUTE_UNUSED. * local-alloc.c (no_conflict_p): Likewise. * loop.c (insert_bct): Hide definitions of variables with hidden usage. (note_reg_stored): Mark parameter with ATTRIBUTE_UNUSED. * regclass.c (memory_move_secondary_cost): Mark variable `mem' with ATTRIBUTE_UNUSED. (record_reg_classes): Mark parameter with ATTRIBUTE_UNUSED. (reg_scan): Likewise. * reload.c (find_reloads): Remove unused variables `changed'. * reload1.c (reload_reg_class_lower): Don't unnecessarily cast away const-ness. (allocate_reload_reg): Mark parameter with ATTRIBUTE_UNUSED. Remove unused variable `insn'. * toplev.c: Include loop.h. (report_file_and_line): Remove unnecessary prototype. * tree.c (build_block): Mark parameter with ATTRIBUTE_UNUSED. * unroll.c (biv_total_increment): Likewise. From-SVN: r31085
1999-11-03defaults.h (ASM_OUTPUT_ALTERNATE_LABEL_NAME): Provide default.Catherine Moore1-3/+8
* defaults.h (ASM_OUTPUT_ALTERNATE_LABEL_NAME): Provide default. * emit-rtl.c (gen_label_rtx): Support LABEL_ALTERNATE_NAME. * final.c (final_scan_insn): Emit LABEL_ALTERNATE_NAME. * ggc-common.c (ggc_mark_rtx_children): Mark LABEL_ALTERNATE_NAME. * jump.c (delete_unreferenced_labels): Don't delete if LABEL_ALTERNATE_NAME is set. * print-rtl.c (print_rtx): Dump alternate name. * rtl.def (CODE_LABEL): Change format to "iuuis00s". * rtl.h (LABEL_ALTERNATE_NAME): Define. * rtl.texi (LABEL_ALTERNATE_NAME): Document. * tm.texi (ASM_OUTPUT_ALTERNATE_LABEL_NAME): Document. From-SVN: r30382
1999-10-24final.c (peephole): Delete prototype.Kaveh R. Ghazi1-4/+0
* final.c (peephole): Delete prototype. * gcse.c (process_insert_insn, pre_edge_insert): Add prototypes. (pre_insert_copies): Remove unused variable `bb'. * genrecog.c (debug_decision_0, debug_decision_list, main): Add prototypes. * output.h (peephole): Add prototype. From-SVN: r30144
1999-10-03cpplib.c (if_directive_nameo): Add static prototype.Kaveh R. Ghazi1-2/+6
* cpplib.c (if_directive_nameo): Add static prototype. * cse.c (cse_insn): Remove unused variable `p'. * except.c (create_rethrow_ref, push_entry, receive_exception_label, new_eh_region_entry, find_func_region, clear_function_eh_region, process_nestinfo): Add static prototypes. (get_reg_for_handler): Hide definition. (process_nestinfo): Initialize variable `extra_handlers'. * expr.h (expand_builtin_longjmp): Add extern prototype. * final.c (final_addr_vec_align, align_fuzz): Add static prototypes. * function.c (prepare_function_start): Likewise. (pop_function_context_from): Mark parameter `context' with ATTRIBUTE_UNUSED. (push_temp_slots_for_block, flush_addressof): Hide definition. * gcov.c (init_arc, reverse_arcs, create_program_flow_graph, solve_program_flow_graph, calculate_branch_probs, function_summary, main, fancy_abort): Add prototypes. * gen-protos.c (add_hash, parse_fn_proto, main): Likewise. (add_hash): Constify a char*. * ggc-common.c (ggc_mark_rtx_ptr, ggc_mark_tree_ptr, ggc_mark_tree_varray_ptr, ggc_mark_tree_hash_table_ptr, ggc_mark_string_ptr, ggc_mark_tree_hash_table_entry): Add prototypes. * integrate.c (expand_inline_function_eh_labelmap): Likewise. * lists.c (free_list, zap_lists): Likewise. From-SVN: r29783
1999-10-01Delete !REGISTER_CONSTRAINTS codeBernd Schmidt1-2/+0
From-SVN: r29753
1999-09-26combine.c (gen_rtx_combine): Add missing call to va_end().Kaveh R. Ghazi1-0/+1
* combine.c (gen_rtx_combine): Add missing call to va_end(). * final.c (asm_fprintf): Likewise. * genattrtab.c (attr_rtx): Likewise. cp: * lex.c (compiler_error): Add missing call to va_end(). From-SVN: r29667
1999-09-20Make it possible to prototype port-specific functions (and convert i386 to ↵Bernd Schmidt1-0/+1
use this) From-SVN: r29514
1999-09-14except.c (expand_eh_region_start_for_decl): Use NOTE_EH_HANDLER, not ↵Mark Mitchell1-6/+6
NOTE_BLOCK_NUMBER. * except.c (expand_eh_region_start_for_decl): Use NOTE_EH_HANDLER, not NOTE_BLOCK_NUMBER. (expand_eh_region_end): Likewise. (find_exception_handler_labels): Likewise. (scan_region): Likewise. (exception_optimize): Likewise. (update_rethrow_references): Likewise. (set_insn_eh_region): Likewise. * final.c (final_scan_insn): Likewise. * flow.c (make_edges): Likewise. * integrate.c (expand_inline_function): Likewise. * print-rtl.c (print_rtx): Likewise. From-SVN: r29418
1999-09-13recog.h (INSN_OUTPUT_FORMAT_*): New.Richard Henderson1-16/+30
* recog.h (INSN_OUTPUT_FORMAT_*): New. (struct insn_data): Merge `template' and `outfun' into `output'. Add `output_format'. * genoutput.c (INSN_OUTPUT_FORMAT_*): New. (struct data): Remove `outfun'; add `output_format'. (name_for_index): Remove declaration. (output_insn_data): Handle output formats. (process_template): Emit the bare array for @. (gen_expand, gen_split): Set output_format to NONE. * output.h (get_insn_template): Declare. * final.c (get_insn_template): New. (final_scan_insn): Use it. * toplev.c (compile_file): Likewise. * c4x/c4x.c (c4x_process_after_reload): Likewise. * i860/i860.c (output_delayed_branch): Likewise. (output_delay_insn): Likewise. From-SVN: r29389
1999-09-12Replace insn_foo with insn_data.foo.Richard Henderson1-5/+7
From-SVN: r29358
1999-09-11Replace recog_foo with recog_data.foo.Richard Henderson1-15/+16
From-SVN: r29349
1999-09-07* final.c (shorten_branches): Fix last change.Andreas Schwab1-1/+1
From-SVN: r29160
1999-09-06Merge in gcc2-ss-010999Jeff Law1-2/+4
From-SVN: r29150
1999-09-03dbxout.c (dbxout_init): Use xcalloc instead of xmalloc+bzero.Richard Henderson1-12/+5
* dbxout.c (dbxout_init): Use xcalloc instead of xmalloc+bzero. * dwarf2out.c (dwarf2out_frame_init): Likewise. * final.c (shorten_branches): Likewise. * global.c (global_alloc): Likewise. * haifa-sched.c (build_control_flow): Likewise. * stmt.c (check_for_full_enumeration_handling): Likewise. (estimate_case_costs): Likewise. From-SVN: r29091
1999-09-02flags.h: New variables align_loops...Geoffrey Keating1-6/+6
* flags.h: New variables align_loops, align_loops_log, align_jumps, align_jumps_log, align_labels, align_labels_log, align_functions, align_functions_log. * toplev.c: Define them. (f_options): Handle -falign-* when they have no argument. (main): Add logic to set variables for -falign-functions, -falign-jumps, -falign-labels, -falign-loops. Make it -fsched-verbose=<n> and -finline-limit=<n>. (display_help): Change help to match options. * final.c (LABEL_ALIGN): Default to align_labels_log. (LABEL_ALIGN_MAX_SKIP): Default to align_labels-1. (LOOP_ALIGN): Default to align_loops_log. (LOOP_ALIGN_MAX_SKIP): Default to align_loops-1. (LABEL_ALIGN_AFTER_BARRIER): Default to align_jumps_log. (LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Default to align_jumps-1. * varasm.c (assemble_start_function): Handle align_functions. * config/sparc/sparc.h: Don't declare sparc_align_*. Don't provide LABEL_ALIGN_AFTER_BARRIER or LOOP_ALIGN. (DEFAULT_SPARC_ALIGN_FUNCS): Delete; take functionality into sparc.c. (FUNCTION_BOUNDARY): Fix incorrect use---it's not just a request, it's a promise. * config/sparc/sparc.c: Delete sparc_align_loops, sparc_align_jumps, sparc_align_funcs and the corresponding string variables. (sparc_override_options): Default align_functions on ultrasparc. Delete -malign-* handling. * config/mips/mips.c (override_options): On 64-bit targets, try to align code to 64-bit boundaries. (print_operand): New substitution, %~, which aligns labels to align_labels_log. * config/mips/mips.md (div_trap_normal): Use %~. (div_trap_mips16): Likewise. (abssi): Likewise. (absdi2): Likewise. (ffssi2): Likewise. (ffsdi2): Likewise. (ashldi3_internal): Likewise. (ashrdi3_internal): Likewise. (lshrdi3_internal): Likewise. (casesi_internal): Likewise. Plus corresponding documentation changes. From-SVN: r29045
1999-08-31backport: Makefile.in (STAGESTUFF): Add *.peephole2.Richard Henderson1-0/+4
Merge peephole2 from new_ia32_branch: * Makefile.in (STAGESTUFF): Add *.peephole2. (mostlyclean): Likewise. (recog.o): Depend on resource.h. * final.c (peephole): Conditionalize decl on HAVE_peephole. (final_scan_insn): Likewise for the invocation of peephole. * genconfig.c (main): Look for peephole and peephole2 patterns. Emit HAVE_peephole* accordingly. * genpeep.c (main): Conditionalize entire output on HAVE_peephole. * flags.h (flag_peephole2): Declare. * toplev.c: New pass peephole2. New flag -fpeephole2. * genattrtab.c (main): Count DEFINE_PEEPHOLE2. * gencodes.c (main): Likewise. * genextract.c (main): Likewise. * genoutput.c (main): Likewise. * genemit.c (max_operand_1): Look for the max scratch operand. (gen_rtx_scratch): New. (gen_exp): Use it, and pass on new arg subroutine_type. (gen_expand): Take max scratch into account. (gen_split): Emit peephole2 functions. (output_peephole2_scratch): New. (main): Include hard-reg-set.h and resource.h. Handle peephole2. * genrecog.c (routine_type): Add PEEPHOLE2. (IS_SPLIT): New. (make_insn_sequence): Match outer parallel for peep2. Discard top level scratches and dups. (add_to_sequence): New args insn_type and top. Update all callers. Handle toplevel peep2 matching insns. (write_subroutine): Handle peep2. (write_tree_1): Likewise. (write_tree): Likewise. (main): Likewise. (change_state): New arg afterward. Update all callers. Handle matching separate insns. * recog.c (recog_next_insn): New. (peephole2_optimize): New. * rtl.def (DEFINE_PEEPHOLE2): New. * resource.c (find_free_register): New argument last_insn. Use it to find a register available through the entire span. * resource.h (find_free_register): Update prototype. From-SVN: r29015