On 2012-09-07 10:55 , Dehao Chen wrote:

gcc/ChangeLog:
2012-08-01  Dehao Chen  <de...@google.com>

        * toplev.c (general_init): Init block_locations.
        * tree.c (tree_set_block): New.
        (tree_block): Change to use LOCATION_BLOCK.
        * tree.h (TREE_SET_BLOCK): New.
        * final.c (reemit_insn_block_notes): Change to use LOCATION_BLOCK.
        (final_start_function): Likewise.
        * input.c (expand_location_1): Likewise.
        * input.h (LOCATION_LOCUS): New.
        (LOCATION_BLOCK): New.
        (IS_UNKNOWN_LOCATION): New.
        * fold-const.c (expr_location_or): Change to use new location.
        * reorg.c (emit_delay_sequence): Likewise.
        (try_merge_delay_insns): Likewise.
        * modulo-sched.c (dump_insn_location): Likewise.
        * lto-streamer-out.c (lto_output_location_bitpack): Likewise.
        * jump.c (rtx_renumbered_equal_p): Likewise.
        * ifcvt.c (noce_try_move): Likewise.
        (noce_try_store_flag): Likewise.
        (noce_try_store_flag_constants): Likewise.
        (noce_try_addcc): Likewise.
        (noce_try_store_flag_mask): Likewise.
        (noce_try_cmove): Likewise.
        (noce_try_cmove_arith): Likewise.
        (noce_try_minmax): Likewise.
        (noce_try_abs): Likewise.
        (noce_try_sign_mask): Likewise.
        (noce_try_bitop): Likewise.
        (noce_process_if_block): Likewise.
        (cond_move_process_if_block): Likewise.
        (find_cond_trap): Likewise.
        * dewarf2out.c (add_src_coords_attributes): Likewise.

s/dewarf2out/dwarf2out/

        * expr.c (expand_expr_real): Likewise.
        * tree-parloops.c (create_loop_fn): Likewise.
        * recog.c (peep2_attempt): Likewise.
        * function.c (free_after_compilation): Likewise.
        (expand_function_end): Likewise.
        (set_insn_locations): Likewise.
        (thread_prologue_and_epilogue_insns): Likewise.
        * print-rtl.c (print_rtx): Likewise.
        * profile.c (branch_prob): Likewise.
        * trans-mem.c (ipa_tm_scan_irr_block): Likewise.
        * gimplify.c (gimplify_call_expr): Likewise.
        * except.c (duplicate_eh_regions_1): Likewise.
        * emit-rtl.c (try_split): Likewise.
        (make_insn_raw): Likewise.
        (make_debug_insn_raw): Likewise.
        (make_jump_insn_raw): Likewise.
        (make_call_insn_raw): Likewise.
        (emit_pattern_after_setloc): Likewise.
        (emit_pattern_after): Likewise.
        (emit_debug_insn_after): Likewise.
        (emit_pattern_before): Likewise.
        (emit_insn_before_setloc): Likewise.
        (emit_jump_insn_before): Likewise.
        (emit_call_insn_before_setloc): Likewise.
        (emit_call_insn_before): Likeise.
        (emit_debug_insn_before_setloc): Likewise.
        (emit_copy_of_insn_after): Likewise.
        (insn_locators_alloc): Remove.
        (insn_locators_finalize): Remove.
        (insn_locators_free): Remove.
        (set_curr_insn_source_location): Remove.
        (get_curr_insn_source_location): Remove.
        (set_curr_insn_block): Remove.
        (get_curr_insn_block): Remove.
        (locator_scope): Remove.
        (insn_scope): Change to use new location.
        (locator_location): Remove.
        (insn_line): Change to use new location.
        (locator_file): Remove.
        (insn_file): Change to use new location.
        (locator_eq): Remove.
        (insn_locations_init): New.
        (insn_locations_finalize): New.
        (set_curr_insn_location): New.
        (curr_insn_location): New.
        * cfgexpand.c (gimple_assign_rhs_to_tree): Change to use new location.
        (expand_gimple_cond): Likewise.
        (expand_call_stmt): Likewise.
        (expand_gimple_stmt_1): Likewise.
        (expand_gimple_basic_block): Likewise.
        (construct_exit_block): Likewise.
        (gimple_expand_cfg): Likewise.
        * cfgcleanup.c (try_forward_edges): Likewise.
        * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
        (dump_scope_block): Likewise.
        (remove_unused_locals): Likewise.
        * rtl.c (rtx_equal_p_cb): Likewise.
        (rtx_equal_p): Likewise.
        * rtl.h (XUINT): New.
        (INSN_LOCATOR): Remove.
        (CURR_INSN_LOCATION): Remove.
        (INSN_LOCATION): New.
        (INSN_HAS_LOCATION): New.
        * tree-inline.c (remap_gimple_op_r): Change to use new location.
        (copy_tree_body_r): Likewise.
        (copy_phis_for_bb): Likewise.
        (expand_call_inline): Likewise.
        * tree-streamer-in.c (lto_input_ts_exp_tree_pointers): Likewise.
        * tree-streamer-out.c (write_ts_decl_minimal_tree_pointers): Likewise.
        * gimple-streamer-out.c (output_gimple_stmt): Likewise.
        * combine.c (try_combine): Likewise.
        * tree-outof-ssa.c (set_location_for_edge): Likewise.
        (insert_partition_copy_on_edge): Likewise.
        (insert_value_copy_on_edge): Likewise.
        (insert_rtx_to_part_on_edge): Likewise.
        (insert_part_to_rtx_on_edge): Likewise.
        * basic-block.h (edge_def): Remove field.
        * gimple.h (gimple_statement_base): Remove field.
        (gimple_bb): Change to use new location.
        (gimple_set_block): Likewise.
        (gimple_has_location): Likewise.
        * tree-cfg.c (make_cond_expr_edges): Likewise.
        (make_goto_expr_edges): Likewise.
        (gimple_can_merge_blocks_p): Likewise.
        (move_stmt_op): Likewise.
        (move_block_to_fn): Likewise.
        * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Likewise.
        * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
        * config/i386/i386.c (x86_output_mi_thunk): Likewise.
        * config/tilegx/tilegx.c (tilegx_output_mi_thunk): Likewise.
        * config/sh/sh.c (sh_output_mi_thunk): Likewise.
        * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
        * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
        * config/score/score.c (score_output_mi_thunk): Likewise.
        * config/tilepro/tilepro.c (tilepro_asm_output_mi_thunk): Likewise.
        * config/mips/mips.c (mips_output_mi_thunk): Likewise.
        * cfgrtl.c (unique_locus_on_edge_between_p): Likewise.
        (unique_locus_on_edge_between_p): Likewise.
        (emit_nop_for_unique_locus_between): Likewise.
        (force_nonfallthru_and_redirect): Likewise.
        (fixup_reorder_chain): Likewise.
        (cfg_layout_merge_blocks): Likewise.
        * stmt.c (emit_case_nodes): Likewise.

gcc/lto/ChangeLog:
2012-08-01  Dehao Chen  <de...@google.com>

        * lto/lto.c (lto_fixup_prevailing_decls): Remove tree.exp.block field.

libcpp/ChangeLog:
2012-08-01  Dehao Chen  <de...@google.com>

        * include/line-map.h (MAX_SOURCE_LOCATION): New value.
        (location_adhoc_data_init): New.
        (location_adhoc_data_fini): New.
        (get_combined_adhoc_loc): New.
        (get_data_from_adhoc_loc): New.
        (get_location_from_adhoc_loc): New.
        (COMBINE_LOCATION_DATA): New.
        (IS_ADHOC_LOC): New.
        (expanded_location): New field.
        * line-map.c (location_adhoc_data): New.
        (location_adhoc_data_htab): New.
        (curr_adhoc_loc): New.
        (location_adhoc_data): New.
        (allocated_location_adhoc_data): New.
        (location_adhoc_data_hash): New.
        (location_adhoc_data_eq): New.
        (location_adhoc_data_update): New.
        (get_combined_adhoc_loc): New.
        (get_data_from_adhoc_loc): New.
        (get_location_from_adhoc_loc): New.
        (location_adhoc_data_init): New.
        (location_adhoc_data_fini): New.
        (linemap_lookup): Change to use new location.
        (linemap_ordinary_map_lookup): Likewise.
        (linemap_macro_map_lookup): Likewise.
        (linemap_macro_map_loc_to_def_point): Likewise.
        (linemap_macro_map_loc_unwind_toward_spel): Likewise.
        (linemap_get_expansion_line): Likewise.
        (linemap_get_expansion_filename): Likewise.
        (linemap_location_in_system_header_p): Likewise.
        (linemap_location_from_macro_expansion_p): Likewise.
        (linemap_macro_loc_to_spelling_point): Likewise.
        (linemap_macro_loc_to_def_point): Likewise.
        (linemap_macro_loc_to_exp_point): Likewise.
        (linemap_resolve_location): Likewise.
        (linemap_unwind_toward_expansion): Likewise.
        (linemap_unwind_to_first_non_reserved_loc): Likewise.
        (linemap_expand_location): Likewise.
        (linemap_dump_location): Likewise.


===================================================================
*** gcc/final.c (revision 190209)
--- gcc/final.c (working copy)
*************** reemit_insn_block_notes (void)
*** 1605,1611 ****
                                             insn_scope (XVECEXP (body, 0, i)));
        }
        if (! this_block)
!       continue;

        if (this_block != cur_block)
        {
--- 1605,1611 ----
                                             insn_scope (XVECEXP (body, 0, i)));
        }
        if (! this_block)
!       this_block = DECL_INITIAL (cfun->decl);


So, this will default to the start of the function when all else fails?

--- 5900,5965 ----
            gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (mode, regno)));
  }

! location_t prologue_location;
! location_t epilogue_location;

  /* Hold current location information and last location information, so the
     datastructures are built lazily only when some instructions in given
     place are needed.  */
  static location_t curr_location, last_location;

! /* Allocate insn location datastructure.  */
  void
! insn_locations_init (void)
  {
!   prologue_location = epilogue_location = 0;
    curr_location = UNKNOWN_LOCATION;
    last_location = UNKNOWN_LOCATION;
  }

  /* At the end of emit stage, clear current location.  */
  void
! insn_locations_finalize (void)
  {
!   epilogue_location = curr_location;
!   curr_location = UNKNOWN_LOCATION;
  }

  /* Set current location.  */
  void
! set_curr_insn_location (location_t location)
  {
    curr_location = location;
  }

  /* Get current location.  */
  location_t
! curr_insn_location (void)
  {
    return curr_location;
  }

  /* Return lexical scope block insn belongs to.  */
  tree
  insn_scope (const_rtx insn)
  {
!   return LOCATION_BLOCK (INSN_LOCATION (insn));
  }

  /* Return line number of the statement that produced this insn.  */
  int
  insn_line (const_rtx insn)
  {
!   return LOCATION_LINE (INSN_LOCATION (insn));
  }

  /* Return source file of the statement that produced this insn.  */
  const char *
  insn_file (const_rtx insn)
  {
!   return LOCATION_FILE (INSN_LOCATION (insn));
  }

  /* Return true if memory model MODEL requires a pre-operation (release-style)
     barrier or a post-operation (acquire-style) barrier.  While not universal,
     this function matches behavior of several targets.  */

I like this!


The patch looks fine to me. Your changes to the backends seem innocuous enough, but please be on the lookout for reported build failures.


Diego.

Reply via email to