aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtl.h
AgeCommit message (Collapse)AuthorFilesLines
2014-08-27Introduce rtx_sequence subclass of rtx_defDavid Malcolm1-0/+52
gcc/ 2014-08-27 David Malcolm <dmalcolm@redhat.com> * coretypes.h (class rtx_sequence): Add forward declaration. * rtl.h (class rtx_sequence): New subclass of rtx_def, adding invariant: GET_CODE (X) == SEQUENCE. (is_a_helper <rtx_sequence *>::test): New. (is_a_helper <const rtx_sequence *>::test): New. (rtx_sequence::len): New. (rtx_sequence::element): New. (rtx_sequence::insn): New. From-SVN: r214591
2014-08-27Use rtx_insn_list in various placesDavid Malcolm1-6/+6
gcc/ 2014-08-27 David Malcolm <dmalcolm@redhat.com> * rtl.h (free_INSN_LIST_list): Strengthen param from rtx * to rtx_insn_list **. (alloc_INSN_LIST): Strengthen return type from rtx to rtx_insn_list *. (copy_INSN_LIST): Likewise for return type and param. (concat_INSN_LIST): Likewise for both params and return type. (remove_free_INSN_LIST_elem): Strenghten first param from rtx to rtx_insn *. Strengthen second param from rtx * to rtx_insn_list **. (remove_free_INSN_LIST_node): Strenghten return type from rtx to rtx_insn *. Strengthen param from rtx * to rtx_insn_list **. * sched-int.h (struct deps_reg): Strengthen fields "uses", "sets", "implicit_sets", "control_uses", "clobbers" from rtx to rtx_insn_list *. (struct deps_desc): Likewise for fields "pending_read_insns", "pending_write_insns", "pending_jump_insns", "last_pending_memory_flush", "last_function_call", "last_function_call_may_noreturn", "sched_before_next_call", "sched_before_next_jump". (struct _haifa_deps_insn_data): Likewise for field "cond_deps". (remove_from_deps): Strengthen second param from rtx to rtx_insn *. * gcse.c (struct ls_expr): Strengthen fields "loads" and "stores" from rtx to rtx_insn_list *. (ldst_entry): Replace use of NULL_RTX with NULL when dealing with rtx_insn_list *. * haifa-sched.c (insn_queue): Strengthen this variable from rtx * to rtx_insn_list **. (dep_cost_1): Strengthen local "dep_cost_rtx_link" from rtx to rtx_insn_list *. (queue_insn): Likewise for local "link". (struct haifa_saved_data): Strengthen field "insn_queue" from rtx * to rtx_insn_list **. (save_backtrack_point): Update allocation of save->insn_queue to reflect the strengthening of elements from rtx to rtx_insn_list *. (queue_to_ready): Strengthen local "link" from rtx to rtx_insn_list *; use methods "next" and "insn" when traversing the list. (early_queue_to_ready): Likewise for locals "link", "next_link", "prev_link". (schedule_block): Update allocation of insn_queue to reflect the strengthening of elements from rtx to rtx_insn_list *. Strengthen local "link" from rtx to rtx_insn_list *, and use methods when working it. (add_to_speculative_block): Strengthen locals "twins" and "next_node" from rtx to rtx_insn_list *, and use methods when working with them. Strengthen local "twin" from rtx to rtx_insn *, eliminating a checked cast. (fix_recovery_deps): Strengthen locals "ready_list" and "link" from rtx to rtx_insn_list *, and use methods when working with them. * lists.c (alloc_INSN_LIST): Strengthen return type and local "r" from rtx to rtx_insn_list *, adding a checked cast. (free_INSN_LIST_list): Strengthen param "listp" from rtx * to rtx_insn_list **. (copy_INSN_LIST): Strengthen return type and locals "new_queue", "newlink" from rtx to rtx_insn_list *. Strengthen local "pqueue" from rtx * to rtx_insn_list **. Strengthen local "x" from rtx to rtx_insn *. (concat_INSN_LIST): Strengthen return type and local "new_rtx", from rtx to rtx_insn_list *. Use methods of the latter class. (remove_free_INSN_LIST_elem): Strengthen param "elem" from rtx to rtx_insn *, and param "listp" from rtx * to rtx_insn_list **. (remove_free_INSN_LIST_node): Strengthen return type and local "elem" from rtx to rtx_insn *. Strenghten param "listp" from rtx * to rtx_insn_list **. Strengthen local "node" from rtx to rtx_insn_list *, using "insn" method. * sched-deps.c (add_dependence_list): Strengthen param "list" from rtx to rtx_insn_list *, and use methods when working with it. (add_dependence_list_and_free): Strengthen param "listp" from rtx * to rtx_insn_list **. (remove_from_dependence_list): Strenghten param "listp" from rtx * to rtx_insn_list **, and use methods when working with *listp. (remove_from_both_dependence_lists): Strengthen param "listp" from rtx * to rtx_insn_list ** (add_insn_mem_dependence): Strengthen local "insn_list" from rtx * to rtx_insn_list **. Eliminate local "link", in favor of two new locals "insn_node" and "mem_node", an rtx_insn_list * and an rtx respectively. (deps_analyze_insn): Split out uses 'f local "t" as an INSN_LIST by introducing local "cond_deps". (remove_from_deps): Strengthen param "insn" from rtx to rtx_insn *. * sched-rgn.c (concat_insn_mem_list): Strengthen param "copy_insns" and local "new_insns" from rtx to rtx_insn_list *. Strengthen param "old_insns_p" from rtx * to rtx_insn_list **. Use methods of rtx_insn_list. * store-motion.c (struct st_expr): Strengthen fields "antic_stores" and "avail_stores" from rtx to rtx_insn_list *. (st_expr_entry): Replace NULL_RTX with NULL when dealing with rtx_insn_list *. (find_moveable_store): Split out "tmp" into multiple more-tightly scoped locals. Use methods of rtx_insn_list *. (compute_store_table): Strengthen local "tmp" from rtx to rtx_insn *. Use methods of rtx_insn_list *. From-SVN: r214590
2014-08-27Introduce rtx_insn_list subclass of rtx_defDavid Malcolm1-0/+45
gcc/ 2014-08-27 David Malcolm <dmalcolm@redhat.com> * coretypes.h (class rtx_insn_list): Add forward declaration. * rtl.h (class rtx_insn_list): New subclass of rtx_def (is_a_helper <rtx_insn_list *>::test): New. (rtx_insn_list::next): New. (rtx_insn_list::insn): New. (gen_rtx_INSN_LIST): Add prototype. * emit-rtl.c (gen_rtx_INSN_LIST): New. * gengenrtl.c (special_rtx): Add INSN_LIST. From-SVN: r214589
2014-08-27Convert various INSN accessors in rtl.h to inline functionsDavid Malcolm1-6/+32
gcc/ 2014-08-27 David Malcolm <dmalcolm@redhat.com> * rtl.h (INSN_UID): Convert from a macro to a pair of inline functions. Require merely an rtx for now, not an rtx_insn *. (BLOCK_FOR_INSN): Likewise. (INSN_LOCATION): Likewise. (INSN_HAS_LOCATION): Convert from a macro to an inline function. From-SVN: r214586
2014-08-27Convert PATTERN from a macro to a pair of inline functionsDavid Malcolm1-1/+9
gcc/ 2014-08-27 David Malcolm <dmalcolm@redhat.com> * rtl.h (PATTERN): Convert this macro into a pair of inline functions, for now, requiring const_rtx and rtx. From-SVN: r214585
2014-08-26Remove DF_REF_INSN scaffoldingDavid Malcolm1-2/+2
gcc/ 2014-08-26 David Malcolm <dmalcolm@redhat.com> * df.h (df_dump_insn_problem_function): Strengthen first param of this callback from const_rtx to const rtx_insn *. (struct df_insn_info): Strengthen field "insn" from rtx to rtx_insn *. (DF_REF_INSN): Eliminate this function, reinstating the older macro definition. (df_find_def): Strengthen param 1 from rtx to rtx_insn *. (df_reg_defined): Likewise. (df_find_use): Likewise. (df_reg_used): Likewise. (df_dump_insn_top): Strengthen param 1 from const_rtx to const rtx_insn *. (df_dump_insn_bottom): Likewise. (df_insn_debug): Strengthen param 1 from rtx to rtx_insn *. (df_insn_debug_regno): Likewise. (debug_df_insn): Likewise. (df_rd_simulate_one_insn): Likewise for param 2. (df_word_lr_simulate_defs): Likewise for param 1. (df_word_lr_simulate_uses): Likewise. (df_md_simulate_one_insn): Likewise for param 2. (df_simulate_find_noclobber_defs): Likewise for param 1. (df_simulate_find_defs): Likewise. (df_simulate_defs): Likewise. (df_simulate_uses): Likewise. (df_simulate_one_insn_backwards): Likewise for param 2. (df_simulate_one_insn_forwards): Likewise. (df_uses_create): Likewise for param 2. (df_insn_create_insn_record): Likewise for param 1. (df_insn_delete): Likewise. (df_insn_rescan): Likewise. (df_insn_rescan_debug_internal): Likewise. (df_insn_change_bb): Likewise. (df_notes_rescan): Likewise. * rtl.h (remove_death): Likewise for param 2. (print_rtl_with_bb): Strengthen param 2 from const_rtx to const rtx_insn *. * sched-int.h (reemit_notes): Strengthen param from rtx to rtx_insn *. * valtrack.h (propagate_for_debug): Likewise for param 1. * cfgrtl.c (print_rtl_with_bb): Strengthen param "rtx_first" and local "tmp_rtx" from const_rtx to const rtx_insn *. * combine.c (remove_death): Strengthen param "insn" from rtx to rtx_insn *. (move_deaths): Likewise for local "where_dead". * cse.c (delete_trivially_dead_insns): Introduce local "bind_var_loc" so that "bind" can be strengthened to an rtx_insn *. * df-core.c (df_find_def): Strengthen param "insn" from rtx to rtx_insn *. (df_reg_defined): Likewise. (df_find_use): Likewise. (df_reg_used): Likewise. (df_dump_insn_problem_data): Strengthen param "insn" from const_rtx to const rtx_insn *. (df_dump_insn_top): Likewise. (df_dump_insn_bottom): Likewise. (df_insn_debug): Strengthen param "insn" from rtx to rtx_insn *. (df_insn_debug_regno): Likewise. (debug_df_insn): Likewise. (DF_REF_INSN): Delete. * df-problems.c (df_rd_simulate_one_insn): Strengthen param "insn" from rtx to rtx_insn *. (df_chain_insn_top_dump): Strengthen param "insn" from const_rtx to const rtx_insn *. (df_chain_insn_bottom_dump): Likewise. (df_word_lr_simulate_defs): Strengthen param "insn" from rtx to rtx_insn *. (df_word_lr_simulate_uses): Likewise. (df_print_note): Likewise. (df_remove_dead_and_unused_notes): Likewise. (df_set_unused_notes_for_mw): Likewise. (df_set_dead_notes_for_mw): Likewise. (df_create_unused_note): Likewise. (df_simulate_find_defs): Likewise. (df_simulate_find_uses): Likewise. (df_simulate_find_noclobber_defs): Likewise. (df_simulate_defs): Likewise. (df_simulate_uses): Likewise. (df_simulate_one_insn_backwards): Likewise. (df_simulate_one_insn_forwards): Likewise. (df_md_simulate_one_insn): Likewise. * df-scan.c (df_uses_create): Likewise. (df_insn_create_insn_record): Likewise. (df_insn_delete): Likewise. (df_insn_rescan): Likewise. (df_insn_rescan_debug_internal): Likewise. (df_insn_change_bb): Likewise. (df_notes_rescan): Likewise. (df_refs_add_to_chains): Likewise. (df_insn_refs_verify): Likewise. * emit-rtl.c (set_insn_deleted): Add checked cast to rtx_insn * when invoking df_insn_delete. (reorder_insns): Strengthen local "x" from rtx to rtx_insn *. (set_unique_reg_note): Add checked cast. * final.c (cleanup_subreg_operands): Likewise. * gcse.c (update_ld_motion_stores): Likewise, strengthening local "insn" from rtx to rtx_insn *. * haifa-sched.c (reemit_notes): Strengthen param "insn" and local "last" from rtx to rtx_insn *. * ira-emit.c (change_regs_in_insn): New function. (change_loop): Strengthen local "insn" from rtx to rtx_insn *. Invoke change_regs_in_insn rather than change_regs. * ira.c (update_equiv_regs): Strengthen locals "insn", "init_insn", "new_insn" from rtx to rtx_insn *. Invoke for_each_rtx_in_insn rather than for_each_rtx. * recog.c (confirm_change_group): Add checked casts. (peep2_update_life): Strengthen local "x" from rtx to rtx_insn *. Add checked cast. (peep2_fill_buffer): Add checked cast. * rtlanal.c (remove_note): Likewise. * valtrack.c (propagate_for_debug): Strengthen param "insn" and locals "next" "end" from rtx to rtx_insn *. / 2014-08-26 David Malcolm <dmalcolm@redhat.com> * rtx-classes-status.txt (TODO): DF_REF_INSN is done. From-SVN: r214548
2014-08-26duplicate_insn_chain accepts rtx_insnDavid Malcolm1-1/+1
gcc/ 2014-08-26 David Malcolm <dmalcolm@redhat.com> * rtl.h (duplicate_insn_chain): Strengthen both params from rtx to rtx_insn *. * cfgrtl.c (duplicate_insn_chain): Likewise for params "from", "to" and locals "insn", "next", "copy". Remove now-redundant checked cast. From-SVN: r214544
2014-08-26Various condition-handling callsDavid Malcolm1-2/+3
gcc/ 2014-08-26 David Malcolm <dmalcolm@redhat.com> * rtl.h (canonicalize_condition): Strengthen param 1 from rtx to rtx_insn * and param 4 from rtx * to rtx_insn **. (get_condition): Strengthen param 1 from rtx to rtx_insn * and param 2 from rtx * to rtx_insn **. * df.h (can_move_insns_across): Strengthen params 1-4 from rtx to rtx_insn * and final param from rtx * to rtx_insn **. * cfgcleanup.c (try_head_merge_bb): Strengthen local "move_before" from rtx to rtx_insn *. (try_head_merge_bb): Likewise for both locals named "move_upto". * df-problems.c (can_move_insns_across): Likewise for params "from", "to", "across_from", "across_to" and locals "insn", "next", "max_to". Strengthen param "pmove_upto" from rtx * to rtx_insn **. * ifcvt.c (struct noce_if_info): Strengthen field "cond_earliest" from rtx to rtx_insn *. (noce_get_alt_condition): Strengthen param "earliest" from rtx * to rtx_insn **. Strengthen local "insn" from rtx to rtx_insn *. (noce_try_minmax): Strengthen locals "earliest", "seq" from rtx to rtx_insn *. (noce_try_abs): Likewise. (noce_get_condition): Likewise for param "jump". Strengthen param "earliest" from rtx * to rtx_insn **. (noce_find_if_block): Strengthen local "cond_earliest" from rtx to rtx_insn *. (find_cond_trap): Likewise. (dead_or_predicable): Likewise for local "earliest". * loop-iv.c (check_simple_exit): Likewise for local "at". Add checked cast. * rtlanal.c (canonicalize_condition): Likewise for param "insn" and local "prev". Strengthen param "earliest" from rtx * to rtx_insn **. (get_condition): Strengthen param "jump" from rtx to rtx_insn * Strengthen param "earliest" from rtx * to rtx_insn **. From-SVN: r214542
2014-08-26Strengthen various insn emission functionsDavid Malcolm1-5/+5
gcc/ 2014-08-26 David Malcolm <dmalcolm@redhat.com> * rtl.h (push_to_sequence): Strengthen param from rtx to rtx_insn *. (push_to_sequence2): Likewise for both params. (delete_insns_since): Likewise for param. (reorder_insns_nobb): Likewise for all three params. (set_new_first_and_last_insn): Likewise for both params. * emit-rtl.h (set_first_insn): Strengthen param "insn" from rtx to rtx_insn *. Remove now-redundant cast. (set_last_insn): Likewise. * builtins.c (expand_builtin_return): Strengthen local "call_fusage" from rtx to rtx_insn *. * cfgrtl.c (create_basic_block_structure): Likewise for local "after". * emit-rtl.c (set_new_first_and_last_insn): Likewise for params "first", "last" and local "insn". (delete_insns_since): Likewise for param "from". (reorder_insns_nobb): Likewise for params "from", "to", "after" and local "x". (push_to_sequence): Likewise for param "first" and local "last". (push_to_sequence2): Likewise for params "first" and "last". * lra.c (emit_add3_insn): Likewise for local "last". (lra_emit_add): Likewise. * lra-constraints.c (base_to_reg): Likewise for locals "insn", "last_insn". (process_address_1): Likewise for locals "insn", last". * modulo-sched.c (ps_first_note): Likewise for return type. * optabs.c (expand_binop_directly): Likewise for param "last". From-SVN: r214539
2014-08-26get_last_insn_anywhere returns an rtx_insnDavid Malcolm1-1/+1
gcc/ 2014-08-26 David Malcolm <dmalcolm@redhat.com> * rtl.h (get_last_insn_anywhere): Strengthen return type from rtx to rtx_insn*. * emit-rtl.c (get_last_insn_anywhere): Likewise. From-SVN: r214538
2014-08-26Params of add_insn and unlink_insn_chainDavid Malcolm1-2/+2
gcc/ 2014-08-26 David Malcolm <dmalcolm@redhat.com> * rtl.h (add_insn): Strengthen param from rtx to rtx_insn *. (unlink_insn_chain): Strengthen both params from rtx to rtx_insn *. * cfgrtl.c (cfg_layout_function_header): Likewise for this variable. (unlink_insn_chain): Likewise for params "first" and "last". Remove now-redundant checked cast. (record_effective_endpoints): Replace use of NULL_RTX with NULL. (fixup_reorder_chain): Strengthen local "insn" from rtx to rtx_insn *. * emit-rtl.c (link_insn_into_chain): Likewise for all three params. (add_insn): Likewise for param "insn" and local "prev". (add_insn_after_nobb): Likewise for both params and local "next". (add_insn_before_nobb): Likewise for both params and local "prev". (add_insn_after): Rename param "after" to "uncast_after", introducing local "after" with another checked cast. (add_insn_before): Rename params "insn" and "before", giving them "uncast_" prefixes, adding the old names back using checked casts. (emit_note_after): Likewise for param "after". (emit_note_before): Likewise for param "before". (emit_label): Add a checked cast. From-SVN: r214536
2014-08-26cselib and incdecDavid Malcolm1-2/+2
gcc/ * rtl.h (for_each_inc_dec): Strengthen param 1 from rtx * to rtx_insn **. (check_for_inc_dec): Strengthen param "insn" from rtx to rtx_insn *. * cselib.h (cselib_process_insn): Likewise. * cselib.c (cselib_record_sets): Likewise. (cselib_process_insn): Likewise. * dse.c (struct insn_info): Likewise for field "insn". (check_for_inc_dec_1): Likewise for local "insn". (check_for_inc_dec): Likewise for param "insn". (scan_insn): Likewise. (dse_step1): Likewise for local "insn". * rtlanal.c (for_each_inc_dec): Strengthen param 1 from rtx * to rtx_insn **. Use for_each_rtx_in_insn rather than for_each_rtx. From-SVN: r214531
2014-08-25Add rtx_jump_table_data::get_labels methodDavid Malcolm1-0/+24
gcc/ * rtl.h (rtx_jump_table_data::get_labels): New method. * cfgbuild.c (make_edges): Replace hand-coded lookup of labels with use of the new rtx_jump_table_data::get_labels method. (purge_dead_tablejump_edges): Strengthen param "table" from rtx to rtx_jump_table_data *. Simplify by using get_labels method. * cfgrtl.c (delete_insn): Replace use of JUMP_TABLE_DATA_P with a dyn_cast, introducing local "table", using it to replace label-lookup logic with a get_labels method call. (patch_jump_insn): Simplify using get_labels method. * dwarf2cfi.c (create_trace_edges): Likewise. * rtlanal.c (label_is_jump_target_p): Likewise. From-SVN: r214476
2014-08-25unshare_all_rtl_again takes an rtx_insn *David Malcolm1-1/+1
gcc/ * rtl.h (unshare_all_rtl_again): Strengthen param "insn" from rtx to rtx_insn *. * emit-rtl.c (unshare_all_rtl_1): Likewise. (unshare_all_rtl_again): Likewise, also for local "p". From-SVN: r214475
2014-08-25delete_insn_and_edges takes an rtx_insn *David Malcolm1-1/+1
gcc/ * rtl.h (delete_insn_and_edges): Strengthen param "insn" from rtx to rtx_insn *. * cfgrtl.c (delete_insn_and_edges): Likewise. From-SVN: r214474
2014-08-25reorder_insns requires rtx_insn *David Malcolm1-1/+1
gcc/ * rtl.h (reorder_insns): Strengthen params "from", "to", "after" from rtx to rtx_insn *. * emit-rtl.c (reorder_insns): Likewise, also for local "insn". From-SVN: r214473
2014-08-22reginfo.c: Use rtx_insn (also touches rtl.h)David Malcolm1-1/+1
gcc/ * rtl.h (reg_scan): Strengthen param "f" from rtx to rtx_insn *. * reginfo.c (reg_scan): Likewise, also for local "insn". (reg_scan_mark_refs): Likewise for param "insn". (init_subregs_of_mode): Likewise for local "insn". From-SVN: r214367
2014-08-22print-rtl.c: Use rtx_insn for various debug_ functionsDavid Malcolm1-3/+3
gcc/ * rtl.h (debug_rtx_list): Strengthen param 1 "x" from const_rtx to const rtx_insn *. (debug_rtx_range): Likewise for params 1 and 2 "start" and "end". (debug_rtx_find): Likewise for param 1 "x". * print-rtl.c (debug_rtx_list): Strengthen param 1 "x" from const_rtx to const rtx_insn *. Likewise for local "insn". (debug_rtx_range): Likewise for params 1 and 2 "start" and "end". (debug_rtx_find): Likewise for param 1 "x". (print_rtl): Likewise for local "tmp_rtx", adding a checked cast from const_rtx to const rtx_insn * within the appropriate cases of the switch statement. * config/rs6000/rs6000.c (rs6000_debug_legitimize_address): Strengthen local "insns" from rtx to rtx_insn * since this is passed to a call to debug_rtx_list. From-SVN: r214362
2014-08-22postreload.c: Use rtx_insn (also touches rtl.h and cprop.c)David Malcolm1-1/+1
gcc/ * rtl.h (fis_get_condition): Strengthen param "jump" from rtx to rtx_insn *. * cprop.c (fis_get_condition): Likewise. * postreload.c (reload_cse_regs): Likewise for param "first". (reload_cse_simplify): Likewise for param "insn". (reload_cse_regs_1): Likewise for local "insn". (reload_cse_simplify_set): Likewise for param "insn". (reload_cse_simplify_operands): Likewise. (struct reg_use): Likewise for field "insn". (reload_combine_purge_insn_uses): Likewise for param "insn". (fixup_debug_insns): Likewise for params "from", "to" and local "insn". (try_replace_in_use): Likewise for local "use_insn". (reload_combine_recognize_const_pattern): Likewise for param "insn" and locals "add_moved_after_insn", "use_insn". (reload_combine_recognize_pattern): Likewise for param "insn" and local "prev". (reload_combine): Likewise for locals "insn", "prev". (reload_combine_note_use): Likewise for param "insn". (move2add_use_add2_insn): Likewise. (move2add_use_add3_insn): Likewise. (reload_cse_move2add): Likewise, also for local "next". (move2add_note_store): Likewise for local "insn". From-SVN: r214358
2014-08-22jump.c: Use rtx_insn in a few places (also touches rtl.h and cfgexpand.c)David Malcolm1-2/+2
gcc/ * rtl.h (rebuild_jump_labels): Strengthen param "f" from rtx to rtx_insn *. (rebuild_jump_labels_chain): Likewise for param "chain". * cfgexpand.c (pass_expand::execute): Add checked cast to rtx_insn * when calling rebuild_jump_labels_chain in region where we know e->insns.r is non-NULL. * jump.c (rebuild_jump_labels_1): Strengthen param "f" from rtx to rtx_insn *. (rebuild_jump_labels): Likewise. (rebuild_jump_labels_chain): Likewise for param "chain". (cleanup_barriers): Likewise for locals "insn", "next", "prev". (init_label_info): Likewise for param "f". (maybe_propagate_label_ref): Likewise for params "jump_insn", "prev_nonjump_insn". (mark_all_labels): Likewise for param "f" and locals "insn", "prev_nonjump_insn". From-SVN: r214341
2014-08-21delete_related_insns returns an rtx_insnDavid Malcolm1-1/+1
2014-08-21 David Malcolm <dmalcolm@redhat.com> * rtl.h (delete_related_insns): Strengthen return type from rtx to rtx_insn *. * jump.c (delete_related_insns): Likewise, also for locals "next" and "prev". From-SVN: r214275
2014-08-21peephole returns an rtx_insnDavid Malcolm1-1/+1
2014-08-21 David Malcolm <dmalcolm@redhat.com> * output.h (peephole): Strengthen return type from rtx to rtx_insn *. * rtl.h (delete_for_peephole): Likewise for both params. * genpeep.c (main): In generated "peephole" function, strengthen return type and local "insn" from rtx to rtx_insn *. For now, rename param "ins1" to "uncast_ins1", adding "ins1" back as an rtx_insn *, with a checked cast. * jump.c (delete_for_peephole): Strengthen params "from", "to" and locals "insn", "next", "prev" from rtx to rtx_insn *. From-SVN: r214264
2014-08-21try_split returns an rtx_insnDavid Malcolm1-1/+1
2014-08-21 David Malcolm <dmalcolm@redhat.com> * rtl.h (try_split): Strengthen return type from rtx to rtx_insn *. * emit-rtl.c (try_split): Likewise, also for locals "before" and "after". For now, don't strengthen param "trial", which requires adding checked casts when returning it. From-SVN: r214260
2014-08-21find_first_parameter_load returns an rtx_insnDavid Malcolm1-1/+1
2014-08-21 David Malcolm <dmalcolm@redhat.com> * rtl.h (find_first_parameter_load): Strengthen return type from rtx to rtx_insn *. * rtlanal.c (find_first_parameter_load): Strengthen return type from rtx to rtx_insn *. Add checked cast for now, to postpone strengthening the params. From-SVN: r214252
2014-08-19Return types of unlink_insn_chain and duplicate_insn_chainDavid Malcolm1-2/+2
2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (unlink_insn_chain): Strengthen return type from rtx to rtx_insn *. (duplicate_insn_chain): Likewise. * cfgrtl.c (unlink_insn_chain): Strengthen return type from rtx to rtx_insn *, also for locals "prevfirst" and "nextlast". Add a checked cast for now (until we can strengthen the params in the same way). (duplicate_insn_chain): Likewise. From-SVN: r214197
2014-08-19next_cc0_user and prev_cc0_setter scaffoldingDavid Malcolm1-2/+2
2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (next_cc0_user): Strengthen return type from rtx to rtx_insn *. (prev_cc0_setter): Likewise. * emit-rtl.c (next_cc0_user): Strengthen return type from rtx to rtx_insn *, adding checked casts for now as necessary. (prev_cc0_setter): Likewise. From-SVN: r214196
2014-08-19emit_* functions return rtx_insnDavid Malcolm1-39/+39
2014-08-19 David Malcolm <dmalcolm@redhat.com> * emit-rtl.h (emit_copy_of_insn_after): Strengthen return type from rtx to rtx_insn *. * rtl.h (emit_insn_before): Likewise. (emit_insn_before_noloc): Likewise. (emit_insn_before_setloc): Likewise. (emit_jump_insn_before): Likewise. (emit_jump_insn_before_noloc): Likewise. (emit_jump_insn_before_setloc): Likewise. (emit_call_insn_before): Likewise. (emit_call_insn_before_noloc): Likewise. (emit_call_insn_before_setloc): Likewise. (emit_debug_insn_before): Likewise. (emit_debug_insn_before_noloc): Likewise. (emit_debug_insn_before_setloc): Likewise. (emit_label_before): Likewise. (emit_insn_after): Likewise. (emit_insn_after_noloc): Likewise. (emit_insn_after_setloc): Likewise. (emit_jump_insn_after): Likewise. (emit_jump_insn_after_noloc): Likewise. (emit_jump_insn_after_setloc): Likewise. (emit_call_insn_after): Likewise. (emit_call_insn_after_noloc): Likewise. (emit_call_insn_after_setloc): Likewise. (emit_debug_insn_after): Likewise. (emit_debug_insn_after_noloc): Likewise. (emit_debug_insn_after_setloc): Likewise. (emit_label_after): Likewise. (emit_insn): Likewise. (emit_debug_insn): Likewise. (emit_jump_insn): Likewise. (emit_call_insn): Likewise. (emit_label): Likewise. (gen_clobber): Likewise. (emit_clobber): Likewise. (gen_use): Likewise. (emit_use): Likewise. (emit): Likewise. (emit_barrier_before): Strengthen return type from rtx to rtx_barrier *. (emit_barrier_after): Likewise. (emit_barrier): Likewise. * emit-rtl.c (emit_pattern_before_noloc): Strengthen return type from rtx to rtx_insn *. Add checked casts for now when converting "last" from rtx to rtx_insn *. (emit_insn_before_noloc): Likewise for return type. (emit_jump_insn_before_noloc): Likewise. (emit_call_insn_before_noloc): Likewise. (emit_debug_insn_before_noloc): Likewise. (emit_barrier_before): Strengthen return type and local "insn" from rtx to rtx_barrier *. (emit_label_before): Strengthen return type from rtx to rtx_insn *. Add checked cast for now when returning param (emit_pattern_after_noloc): Strengthen return type from rtx to rtx_insn *. Add checked casts for now when converting "last" from rtx to rtx_insn *. (emit_insn_after_noloc): Strengthen return type from rtx to rtx_insn *. (emit_jump_insn_after_noloc): Likewise. (emit_call_insn_after_noloc): Likewise. (emit_debug_insn_after_noloc): Likewise. (emit_barrier_after): Strengthen return type from rtx to rtx_barrier *. (emit_label_after): Strengthen return type from rtx to rtx_insn *. Add checked cast for now when converting "label" from rtx to rtx_insn *. (emit_pattern_after_setloc): Strengthen return type from rtx to rtx_insn *. Add checked casts for now when converting "last" from rtx to rtx_insn *. (emit_pattern_after): Strengthen return type from rtx to rtx_insn *. (emit_insn_after_setloc): Likewise. (emit_insn_after): Likewise. (emit_jump_insn_after_setloc): Likewise. (emit_jump_insn_after): Likewise. (emit_call_insn_after_setloc): Likewise. (emit_call_insn_after): Likewise. (emit_debug_insn_after_setloc): Likewise. (emit_debug_insn_after): Likewise. (emit_pattern_before_setloc): Likewise. Add checked casts for now when converting "last" from rtx to rtx_insn *. (emit_pattern_before): Strengthen return type from rtx to rtx_insn *. (emit_insn_before_setloc): Likewise. (emit_insn_before): Likewise. (emit_jump_insn_before_setloc): Likewise. (emit_jump_insn_before): Likewise. (emit_call_insn_before_setloc): Likewise. (emit_call_insn_before): Likewise. (emit_debug_insn_before_setloc): Likewise. (emit_debug_insn_before): Likewise. (emit_insn): Strengthen return type and locals "last", "insn", "next" from rtx to rtx_insn *. Add checked cast to rtx_insn within cases where we know we have an insn. (emit_debug_insn): Likewise. (emit_jump_insn): Likewise. (emit_call_insn): Strengthen return type and local "insn" from rtx to rtx_insn *. (emit_label): Strengthen return type from rtx to rtx_insn *. Add a checked cast to rtx_insn * for now on "label". (emit_barrier): Strengthen return type from rtx to rtx_barrier *. (emit_clobber): Strengthen return type from rtx to rtx_insn *. (emit_use): Likewise. (gen_use): Likewise, also for local "seq". (emit): Likewise for return type and local "insn". (rtx_insn): Likewise for return type and local "new_rtx". * cfgrtl.c (emit_barrier_after_bb): Strengthen local "barrier" from rtx to rtx_barrier *. * config/sh/sh.c (output_stack_adjust): Since emit_insn has changed return type from rtx to rtx_insn *, we must update "emit_fn" type, and this in turn means updating... (frame_insn): ...this. Strengthen return type from rtx to rtx_insn *. Introduce a new local "insn" of the appropriate type. From-SVN: r214194
2014-08-19emit_jump_table_data returns an rtx_jump_table_data *David Malcolm1-1/+1
2014-08-19 David Malcolm <dmalcolm@redhat.com> * emit-rtl.c (emit_jump_table_data): Strengthen return type from rtx to rtx_jump_table_data *. Also for local. * rtl.h (emit_jump_table_data): Likewise. From-SVN: r214193
2014-08-19Convert various rtx to rtx_note *David Malcolm1-4/+4
2014-08-19 David Malcolm <dmalcolm@redhat.com> * basic-block.h (create_basic_block_structure): Strengthen third param "bb_note" from rtx to rtx_note *. * rtl.h (emit_note_before): Strengthen return type from rtx to rtx_note *. (emit_note_after): Likewise. (emit_note): Likewise. (emit_note_copy): Likewise. Also, strengthen param similarly. * function.h (struct rtl_data): Strengthen field "x_stack_check_probe_note" from rtx to rtx_note *. * cfgexpand.c (expand_gimple_basic_block): Strengthen local "note" from rtx to rtx_note *. * cfgrtl.c (create_basic_block_structure): Strengthen third param "bb_note" from rtx to rtx_note *. (duplicate_insn_chain): Likewise for local "last". Add a checked cast when calling emit_note_copy. * emit-rtl.c (make_note_raw): Strengthen return type from rtx to rtx_note *. (emit_note_after): Likewise. (emit_note_before): Likewise. (emit_note_copy): Likewise. Also, strengthen param similarly. (emit_note): Likewise. * except.c (emit_note_eh_region_end): Likewise for return type. Strengthen local "next" from rtx to rtx_insn *. (convert_to_eh_region_ranges): Strengthen local "note" from rtx to rtx_note *. * final.c (change_scope): Likewise. (reemit_insn_block_notes): Likewise, for both locals named "note". Also, strengthen local "insn" from rtx to rtx_insn *. * haifa-sched.c (sched_extend_bb): Strengthen local "note" from rtx to rtx_note *. * reg-stack.c (compensate_edge): Likewise for local "after". Also, strengthen local "seq" from rtx to rtx_insn *. * reload1.c (reload_as_needed): Strengthen local "marker" from rtx to rtx_note *. * sel-sched-ir.c (bb_note_pool): Strengthen from rtx_vec_t to vec<rtx_note *>. (get_bb_note_from_pool): Strengthen return type from rtx to rtx_note *. (sel_create_basic_block): Strengthen local "new_bb_note" from insn_t to rtx_note *. * var-tracking.c (emit_note_insn_var_location): Strengthen local "note" from rtx to rtx_note *. (emit_notes_in_bb): Likewise. From-SVN: r214192
2014-08-19make_insn_raw returns an rtx_insnDavid Malcolm1-1/+1
2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (make_insn_raw): Strengthen return type from rtx to rtx_insn *. * emit-rtl.c (make_insn_raw): Strengthen return type and local "insn" from rtx to rtx_insn *. (make_debug_insn_raw): Strengthen return type from rtx to rtx_insn *; strengthen local "insn" from rtx to rtx_debug_insn *. (make_jump_insn_raw): Strengthen return type from rtx to rtx_insn *; strengthen local "insn" from rtx to rtx_jump_insn *. (make_call_insn_raw): Strengthen return type from rtx to rtx_insn *; strengthen local "insn" from rtx to rtx_call_insn *. (emit_pattern_before_noloc): Strengthen return type of "make_raw" callback from rtx to rtx_insn *; likewise for local "insn" and "next", adding a checked cast to rtx_insn in the relevant cases of the switch statement. (emit_pattern_after_noloc): Strengthen return type of "make_raw" callback from rtx to rtx_insn *. (emit_pattern_after_setloc): Likewise. (emit_pattern_after): Likewise. (emit_pattern_before_setloc): Likewise. (emit_pattern_before): Likewise. From-SVN: r214187
2014-08-19last_call_insn returns an rtx_call_insn *David Malcolm1-1/+9
2014-08-19 David Malcolm <dmalcolm@redhat.com> * emit-rtl.c (last_call_insn): Strengthen return type from rtx to rtx_call_insn *. * rtl.h (is_a_helper <rtx_call_insn *>::test): New overload, accepting an rtx_insn *. (last_call_insn): Strengthen return type from rtx to rtx_call_insn *. From-SVN: r214186
2014-08-19delete_trivially_dead_insns works on insnsDavid Malcolm1-1/+1
2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (delete_trivially_dead_insns): Strengthen initial param "insns" from rtx to rtx_insn *. * cse.c (delete_trivially_dead_insns): Likewise, also do it for locals "insn" and "prev". From-SVN: r214185
2014-08-19Make tablejump_p accept a rtx_jump_table_data **David Malcolm1-1/+1
2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (tablejump_p): Strengthen third param from rtx * to rtx_jump_table_data **. * cfgbuild.c (make_edges): Introduce local "table", using it in place of "tmp" for jump table data. (find_bb_boundaries): Strengthen local "table" from rtx to rtx_jump_table_data *. * cfgcleanup.c (merge_blocks_move_successor_nojumps): Likewise. (outgoing_edges_match): Likewise for locals "table1" and "table2". (try_crossjump_to_edge): Likewise. * cfgrtl.c (try_redirect_by_replacing_jump): Likewise for local "table". (patch_jump_insn): Introduce local "table", using it in place of "tmp" for jump table data. (force_nonfallthru_and_redirect): Introduce local "table", so that call to tablejump_p can receive an rtx_jump_table_data **. Update logic around the call to overwrite "note" appropriately if tablejump_p returns non-zero. (get_last_bb_insn): Introduce local "table", using it in place of "tmp" for jump table data. * dwarf2cfi.c (create_trace_edges): Likewise. * config/arm/arm.c (get_jump_table_size): Strengthen param "insn" from rtx to rtx_jump_table_data *. (create_fix_barrier): Strengthen local "tmp" from rtx to rtx_jump_table_data *. (arm_reorg): Likewise for local "table". * config/s390/s390.c (s390_chunkify_start): Likewise. * config/spu/spu.c (spu_emit_branch_hint): Likewise. * jump.c (delete_related_insns): Strengthen local "lab_next" from rtx to rtx_jump_table_data *. * rtlanal.c (tablejump_p): Strengthen param "tablep" from rtx * to rtx_jump_table_data **. Add a checked cast when writing through the pointer: we know there that local "table" is non-NULL and that JUMP_TABLE_DATA_P (table) holds. (label_is_jump_target_p): Introduce local "table", using it in place of "tmp" for jump table data. From-SVN: r214184
2014-08-19entry_of_function returns an insnDavid Malcolm1-1/+1
2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (entry_of_function): Strengthen return type from rtx to rtx_insn *. * cfgrtl.c (entry_of_function): Likewise. From-SVN: r214182
2014-08-19Strengthen return type of gen_label_rtxDavid Malcolm1-1/+1
2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (gen_label_rtx): Strengthen return type from rtx to rtx_code_label *. * emit-rtl.c (gen_label_rtx): Likewise. From-SVN: r214179
2014-08-19Strengthen return types of various {next|prev}_*insn from rtx to rtx_insn *David Malcolm1-14/+14
2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (previous_insn): Strengthen return type from rtx to rtx_insn *. (next_insn): Likewise. (prev_nonnote_insn): Likewise. (prev_nonnote_insn_bb): Likewise. (next_nonnote_insn): Likewise. (next_nonnote_insn_bb): Likewise. (prev_nondebug_insn): Likewise. (next_nondebug_insn): Likewise. (prev_nonnote_nondebug_insn): Likewise. (next_nonnote_nondebug_insn): Likewise. (prev_real_insn): Likewise. (next_real_insn): Likewise. (prev_active_insn): Likewise. (next_active_insn): Likewise. * emit-rtl.c (next_insn): Strengthen return type from rtx to rtx_insn *, adding a checked cast. (previous_insn): Likewise. (next_nonnote_insn): Likewise. (next_nonnote_insn_bb): Likewise. (prev_nonnote_insn): Likewise. (prev_nonnote_insn_bb): Likewise. (next_nondebug_insn): Likewise. (prev_nondebug_insn): Likewise. (next_nonnote_nondebug_insn): Likewise. (prev_nonnote_nondebug_insn): Likewise. (next_real_insn): Likewise. (prev_real_insn): Likewise. (next_active_insn): Likewise. (prev_active_insn): Likewise. * config/sh/sh-protos.h (sh_find_set_of_reg): Convert function ptr param "stepfunc" so that it returns an rtx_insn * rather than an rtx, to track the change to prev_nonnote_insn_bb, which is the only function this is called with. * config/sh/sh.c (sh_find_set_of_reg): Likewise. From-SVN: r214178
2014-08-19Add subclasses for the various kinds of instructionDavid Malcolm1-0/+181
2014-08-19 David Malcolm <dmalcolm@redhat.com> * coretypes.h (class rtx_debug_insn): Add forward declaration. (class rtx_nonjump_insn): Likewise. (class rtx_jump_insn): Likewise. (class rtx_call_insn): Likewise. (class rtx_jump_table_data): Likewise. (class rtx_barrier): Likewise. (class rtx_code_label): Likewise. (class rtx_note): Likewise. * rtl.h (class rtx_debug_insn): New, a subclass of rtx_insn, adding the invariant DEBUG_INSN_P (X). (class rtx_nonjump_insn): New, a subclass of rtx_insn, adding the invariant NONJUMP_INSN_P (X). (class rtx_jump_insn): New, a subclass of rtx_insn, adding the invariant JUMP_P (X). (class rtx_call_insn): New, a subclass of rtx_insn, adding the invariant CALL_P (X). (class rtx_jump_table): New, a subclass of rtx_insn, adding the invariant JUMP_TABLE_DATA_P (X). (class rtx_barrier): New, a subclass of rtx_insn, adding the invariant BARRIER_P (X). (class rtx_code_label): New, a subclass of rtx_insn, adding the invariant LABEL_P (X). (class rtx_note): New, a subclass of rtx_insn, adding the invariant NOTE_P(X). (is_a_helper <rtx_debug_insn *>::test): New. (is_a_helper <rtx_nonjump_insn *>::test): New. (is_a_helper <rtx_jump_insn *>::test): New. (is_a_helper <rtx_call_insn *>::test): New. (is_a_helper <rtx_jump_table_data *>::test): New functions, overloaded for both rtx and rtx_insn *. (is_a_helper <rtx_barrier *>::test): New. (is_a_helper <rtx_code_label *>::test): New functions, overloaded for both rtx and rtx_insn *. (is_a_helper <rtx_note *>::test): New. From-SVN: r214172
2014-08-19Replace PREV_INSN et al macros with functionsDavid Malcolm1-4/+22
gcc/ 2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (PREV_INSN): Convert to an inline function. Strengthen the return type from rtx to rtx_insn *, which will enable various conversions in followup patches. For now this is is done by a checked cast. (NEXT_INSN): Likewise. (SET_PREV_INSN): Convert to an inline function. This is intended for use as an lvalue, and so returns an rtx& to allow in-place modification. (SET_NEXT_INSN): Likewise. From-SVN: r214152
2014-08-19Split NEXT_INSN/PREV_INSN into lvalue and rvalue formsDavid Malcolm1-2/+9
/ 2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtx-classes-status.txt: Add SET_NEXT_INSN, SET_PREV_INSN. gcc/ 2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (PREV_INSN): Split macro in two: the existing one, for rvalues, and... (SET_PREV_INSN): New macro, for use as an lvalue. (NEXT_INSN, SET_NEXT_INSN): Likewise. * caller-save.c (save_call_clobbered_regs): Convert lvalue use of PREV_INSN/NEXT_INSN into SET_PREV_INSN/SET_NEXT_INSN. * cfgrtl.c (try_redirect_by_replacing_jump): Likewise. (fixup_abnormal_edges): Likewise. (unlink_insn_chain): Likewise. (fixup_reorder_chain): Likewise. (cfg_layout_delete_block): Likewise. (cfg_layout_merge_blocks): Likewise. * combine.c (update_cfg_for_uncondjump): Likewise. * emit-rtl.c (link_insn_into_chain): Likewise. (remove_insn): Likewise. (delete_insns_since): Likewise. (reorder_insns_nobb): Likewise. (emit_insn_after_1): Likewise. * final.c (rest_of_clean_state): Likewise. (final_scan_insn): Likewise. * gcse.c (can_assign_to_reg_without_clobbers_p): Likewise. * haifa-sched.c (concat_note_lists): Likewise. (remove_notes): Likewise. (restore_other_notes): Likewise. (move_insn): Likewise. (unlink_bb_notes): Likewise. (restore_bb_notes): Likewise. * jump.c (delete_for_peephole): Likewise. * optabs.c (emit_libcall_block_1): Likewise. * reorg.c (emit_delay_sequence): Likewise. (fill_simple_delay_slots): Likewise. * sel-sched-ir.c (sel_move_insn): Likewise. (sel_remove_insn): Likewise. (get_bb_note_from_pool): Likewise. * sel-sched.c (move_nop_to_previous_block): Likewise. * config/bfin/bfin.c (reorder_var_tracking_notes): Likewise. * config/c6x/c6x.c (gen_one_bundle): Likewise. (c6x_gen_bundles): Likewise. (hwloop_optimize): Likewise. * config/frv/frv.c (frv_function_prologue): Likewise. (frv_register_nop): Likewise. * config/ia64/ia64.c (ia64_init_dfa_pre_cycle_insn): Likewise. (ia64_reorg): Likewise. * config/mep/mep.c (mep_reorg_addcombine): Likewise. (mep_make_bundle): Likewise. (mep_bundle_insns): Likewise. * config/picochip/picochip.c (reorder_var_tracking_notes): Likewise. * config/tilegx/tilegx.c (reorder_var_tracking_notes): Likewise. * config/tilepro/tilepro.c (reorder_var_tracking_notes): Likewise. From-SVN: r214128
2014-08-18New function: for_each_rtx_in_insnDavid Malcolm1-0/+1
gcc/ 2014-08-18 David Malcolm <dmalcolm@redhat.com> * rtl.h (for_each_rtx_in_insn): New function. * rtlanal.c (for_each_rtx_in_insn): Likewise. From-SVN: r214119
2014-08-18Introduce rtx_insn subclass of rtx_defDavid Malcolm1-1/+59
gcc/ 2014-08-18 David Malcolm <dmalcolm@redhat.com> * coretypes.h (class rtx_insn): Add forward declaration. * rtl.h: Include is-a.h. (struct rtx_def): Add dummy "desc" and "tag" GTY options as a workaround to ensure gengtype knows inheritance is occurring, whilst continuing to use the pre-existing special-casing for rtx_def. (class rtx_insn): New subclass of rtx_def, adding the invariant that we're dealing with something we can sanely use INSN_UID, NEXT_INSN, PREV_INSN on. (is_a_helper <rtx_insn *>::test): New. (is_a_helper <const rtx_insn *>::test): New. From-SVN: r214118
2014-08-08calls.c (precompute_arguments): Use new SUBREG_PROMOTED_SET instead of ↵Kugan Vivekanandarajah1-17/+63
SUBREG_PROMOTED_UNSIGNED_SET. gcc/ 2014-08-08 Kugan Vivekanandarajah <kuganv@linaro.org> * calls.c (precompute_arguments): Use new SUBREG_PROMOTED_SET instead of SUBREG_PROMOTED_UNSIGNED_SET. (expand_call): Likewise. * cfgexpand.c (expand_gimple_stmt_1): Use SUBREG_PROMOTED_SIGN to get promoted mode. * combine.c (record_promoted_value): Skip > 0 comparison with SUBREG_PROMOTED_UNSIGNED_P as it now returns only 0 or 1. * expr.c (convert_move): Use SUBREG_CHECK_PROMOTED_SIGN instead of SUBREG_PROMOTED_UNSIGNED_P. (convert_modes): Likewise. (store_expr): Use SUBREG_PROMOTED_SIGN to get promoted mode. Use SUBREG_CHECK_PROMOTED_SIGN instead of SUBREG_PROMOTED_UNSIGNED_P. (expand_expr_real_1): Use new SUBREG_PROMOTED_SET instead of SUBREG_PROMOTED_UNSIGNED_SET. * function.c (assign_parm_setup_reg): Use new SUBREG_PROMOTED_SET instead of SUBREG_PROMOTED_UNSIGNED_SET. * ifcvt.c (noce_emit_cmove): Updated to use SUBREG_PROMOTED_GET and SUBREG_PROMOTED_SET. * internal-fn.c (ubsan_expand_si_overflow_mul_check): Use SUBREG_PROMOTED_SET instead of SUBREG_PROMOTED_UNSIGNED_SET. * optabs.c (widen_operand): Use SUBREG_CHECK_PROMOTED_SIGN instead of SUBREG_PROMOTED_UNSIGNED_P. * rtl.h (SUBREG_PROMOTED_UNSIGNED_SET): Remove. (SUBREG_PROMOTED_SET): New define. (SUBREG_PROMOTED_GET): Likewise. (SUBREG_PROMOTED_SIGN): Likewise. (SUBREG_PROMOTED_SIGNED_P): Likewise. (SUBREG_CHECK_PROMOTED_SIGN): Likewise. (SUBREG_PROMOTED_UNSIGNED_P): Updated. * rtlanal.c (unsigned_reg_p): Use new SUBREG_PROMOTED_GET instead of SUBREG_PROMOTED_UNSIGNED_GET. (nonzero_bits1): Skip > 0 comparison with the results as SUBREG_PROMOTED_UNSIGNED_P now returns only 0 or 1. (num_sign_bit_copies1): Use SUBREG_PROMOTED_SIGNED_P instead of !SUBREG_PROMOTED_UNSIGNED_P. * simplify-rtx.c (simplify_unary_operation_1): Use new SUBREG_PROMOTED_SIGNED_P instead of !SUBREG_PROMOTED_UNSIGNED_P. (simplify_subreg): Use new SUBREG_PROMOTED_SIGNED_P, SUBREG_PROMOTED_UNSIGNED_P and SUBREG_PROMOTED_SET instead of SUBREG_PROMOTED_UNSIGNED_P and SUBREG_PROMOTED_UNSIGNED_SET. From-SVN: r213749
2014-08-01RTL & dwarf2out changesAndi Kleen1-1/+0
Convert dwarf2out and rtl.c to the new inchash interface. gcc/: 2014-07-31 Andi Kleen <ak@linux.intel.com> * Makefile.in (OBJS): Add rtlhash.o * dwarf2out.c (addr_table_entry_do_hash): Convert to inchash. (loc_checksum): Dito. (loc_checksum_ordered): Dito. (hash_loc_operands): Dito. (hash_locs): Dito. (hash_loc_list): Dito. * rtl.c (iterative_hash_rtx): Moved to rtlhash.c * rtl.h (iterative_hash_rtx): Moved to rtlhash.h * rtlhash.c: New file. * rtlhash.h: New file. From-SVN: r213395
2014-07-26rtl.h (tls_referenced_p): Declare.Richard Sandiford1-0/+1
gcc/ * rtl.h (tls_referenced_p): Declare. * rtlanal.c (tls_referenced_p_1, tls_referenced_p): New functions. * config/mips/mips.c (mips_tls_symbol_ref_1): Delete. (mips_cannot_force_const_mem): Use tls_referenced_p. * config/pa/pa-protos.h (pa_tls_referenced_p): Delete. * config/pa/pa.h (CONSTANT_ADDRESS_P): Use tls_referenced_p instead of pa_tls_referenced_p. * config/pa/pa.c (hppa_legitimize_address, pa_cannot_force_const_mem) (pa_emit_move_sequence, pa_emit_move_sequence): Likewise. (pa_legitimate_constant_p): Likewise. (pa_tls_symbol_ref_1, pa_tls_referenced_p): Delete. * config/rs6000/rs6000.c (rs6000_tls_referenced_p): Delete. (rs6000_cannot_force_const_mem, rs6000_emit_move) (rs6000_address_for_altivec): Use tls_referenced_p instead of rs6000_tls_referenced_p. (rs6000_tls_symbol_ref_1): Delete. From-SVN: r213077
2014-07-24rtl.h (target_rtl): Remove lang_dependent_initialized.Richard Sandiford1-1/+0
gcc/ * rtl.h (target_rtl): Remove lang_dependent_initialized. * toplev.c (initialize_rtl): Don't use it. Move previously "language-dependent" calls to... (backend_init): ...here. (lang_dependent_init_target): Don't set lang_dependent_initialized. Assert that RTL initialization hasn't happend yet. From-SVN: r213004
2014-06-26toplev.c (backend_init_target): Move init_emit_regs and init_regs to...Jan Hubicka1-0/+4
* toplev.c (backend_init_target): Move init_emit_regs and init_regs to... (backend_init) ... here; skip ira_init_once and backend_init_target. (target_reinit) ... and here; clear this_target_rtl->lang_dependent_initialized. (lang_dependent_init_target): Clear this_target_rtl->lang_dependent_initialized; break out rtl initialization to ... (initialize_rtl): ... here; call also backend_init_target and ira_init_once. * toplev.h (initialize_rtl): New function. * function.c: Include toplev.h (init_function_start): Call initialize_rtl. * rtl.h (target_rtl): Add target_specific_initialized, lang_dependent_initialized. From-SVN: r212007
2014-06-06rtl.h (insn_location): Declare.Eric Botcazou1-0/+1
* rtl.h (insn_location): Declare. * cfgcleanup.c (try_forward_edges): Compare the locus of locations with UNKNOWN_LOCATION. * emit-rtl.c (insn_location): New function. * final.c (notice_source_line): Check that the instruction has a location before retrieving it and use insn_location. * modulo-sched.c (loop_single_full_bb_p): Likewise. * print-rtl.c (print_rtx): Likewise. From-SVN: r211305
2014-05-29Fix rtl-check buildTom de Vries1-1/+1
2014-05-29 Tom de Vries <tom@codesourcery.com> * rtl.h (BLOCK_SYMBOL_CHECK): Use SYMBOL_REF_FLAGS. From-SVN: r211057
2014-05-28rtl.h (set_for_reg_notes): Declare.Richard Sandiford1-0/+1
2014-05-26 Richard Sandiford <rdsandiford@googlemail.com> Olivier Hainque <hainque@adacore.com> * rtl.h (set_for_reg_notes): Declare. * emit-rtl.c (set_for_reg_notes): New function. (set_unique_reg_note): Use it. * optabs.c (add_equal_note): Likewise Co-Authored-By: Olivier Hainque <hainque@adacore.com> From-SVN: r210998
2014-05-19reg-notes.def (CROSSING_JUMP): Likewise.Richard Sandiford1-0/+5
gcc/ * reg-notes.def (CROSSING_JUMP): Likewise. * rtl.h (rtx_def): Update comment for jump flag. (CROSSING_JUMP_P): Define. * cfgcleanup.c (try_forward_edges, try_optimize_cfg): Use it instead of a REG_CROSSING_JUMP note. * cfghooks.c (tidy_fallthru_edges): Likewise. * cfgrtl.c (fixup_partition_crossing, rtl_verify_edges): Likewise. * emit-rtl.c (try_split): Likewise. * haifa-sched.c (sched_create_recovery_edges): Likewise. * ifcvt.c (find_if_case_1, find_if_case_2): Likewise. * jump.c (redirect_jump_2): Likewise. * reorg.c (follow_jumps, fill_slots_from_thread): Likewise. (relax_delay_slots): Likewise. * config/arc/arc.md (jump_i, cbranchsi4_scratch, *bbit): Likewise. (bbit_di): Likewise. * config/arc/arc.c (arc_reorg, arc_can_follow_jump): Likewise. * config/sh/sh.md (jump_compact): Likewise. * bb-reorder.c (rotate_loop): Likewise. (pass_duplicate_computed_gotos::execute): Likewise. (add_reg_crossing_jump_notes): Rename to... (update_crossing_jump_flags): ...this. (pass_partition_blocks::execute): Update accordingly. From-SVN: r210603