Commit 70660539 by Aldy Hernandez Committed by Aldy Hernandez

dwarf2out.c: Remove block_map.

	* dwarf2out.c: Remove block_map.
	(gen_call_site_die): Replace block_map use with BLOCK_DIE.
	(gen_lexical_block_die): Same.
	(dwarf2out_function_decl): Remove block_map use.
	(dwarf2out_c_finalize): Same.
	* tree-core.h (struct tree_block): Add die field.
	* tree.h (BLOCK_DIE): New.

From-SVN: r223758
parent d586cedd
2015-05-27 Aldy Hernandez <aldyh@redhat.com>
* dwarf2out.c: Remove block_map.
(gen_call_site_die): Replace block_map use with BLOCK_DIE.
(gen_lexical_block_die): Same.
(dwarf2out_function_decl): Remove block_map use.
(dwarf2out_c_finalize): Same.
* tree-core.h (struct tree_block): Add die field.
* tree.h (BLOCK_DIE): New.
2015-05-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com> 2015-05-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/65358 PR target/65358
......
...@@ -2908,10 +2908,6 @@ static int call_site_count = -1; ...@@ -2908,10 +2908,6 @@ static int call_site_count = -1;
/* Number of tail call sites in the current function. */ /* Number of tail call sites in the current function. */
static int tail_call_site_count = -1; static int tail_call_site_count = -1;
/* Vector mapping block numbers to DW_TAG_{lexical_block,inlined_subroutine}
DIEs. */
static vec<dw_die_ref> block_map;
/* A cached location list. */ /* A cached location list. */
struct GTY ((for_user)) cached_dw_loc_list_def { struct GTY ((for_user)) cached_dw_loc_list_def {
/* The DECL_UID of the decl that this entry describes. */ /* The DECL_UID of the decl that this entry describes. */
...@@ -18368,8 +18364,7 @@ gen_call_site_die (tree decl, dw_die_ref subr_die, ...@@ -18368,8 +18364,7 @@ gen_call_site_die (tree decl, dw_die_ref subr_die,
&& block != DECL_INITIAL (decl) && block != DECL_INITIAL (decl)
&& TREE_CODE (block) == BLOCK) && TREE_CODE (block) == BLOCK)
{ {
if (block_map.length () > BLOCK_NUMBER (block)) stmt_die = BLOCK_DIE (block);
stmt_die = block_map[BLOCK_NUMBER (block)];
if (stmt_die) if (stmt_die)
break; break;
block = BLOCK_SUPERCONTEXT (block); block = BLOCK_SUPERCONTEXT (block);
...@@ -19469,11 +19464,7 @@ gen_lexical_block_die (tree stmt, dw_die_ref context_die) ...@@ -19469,11 +19464,7 @@ gen_lexical_block_die (tree stmt, dw_die_ref context_die)
dw_die_ref stmt_die = new_die (DW_TAG_lexical_block, context_die, stmt); dw_die_ref stmt_die = new_die (DW_TAG_lexical_block, context_die, stmt);
if (call_arg_locations) if (call_arg_locations)
{ BLOCK_DIE (stmt) = stmt_die;
if (block_map.length () <= BLOCK_NUMBER (stmt))
block_map.safe_grow_cleared (BLOCK_NUMBER (stmt) + 1);
block_map[BLOCK_NUMBER (stmt)] = stmt_die;
}
if (! BLOCK_ABSTRACT (stmt) && TREE_ASM_WRITTEN (stmt)) if (! BLOCK_ABSTRACT (stmt) && TREE_ASM_WRITTEN (stmt))
add_high_low_attributes (stmt, stmt_die); add_high_low_attributes (stmt, stmt_die);
...@@ -19506,11 +19497,7 @@ gen_inlined_subroutine_die (tree stmt, dw_die_ref context_die) ...@@ -19506,11 +19497,7 @@ gen_inlined_subroutine_die (tree stmt, dw_die_ref context_die)
= new_die (DW_TAG_inlined_subroutine, context_die, stmt); = new_die (DW_TAG_inlined_subroutine, context_die, stmt);
if (call_arg_locations) if (call_arg_locations)
{ BLOCK_DIE (stmt) = subr_die;
if (block_map.length () <= BLOCK_NUMBER (stmt))
block_map.safe_grow_cleared (BLOCK_NUMBER (stmt) + 1);
block_map[BLOCK_NUMBER (stmt)] = subr_die;
}
add_abstract_origin_attribute (subr_die, decl); add_abstract_origin_attribute (subr_die, decl);
if (TREE_ASM_WRITTEN (stmt)) if (TREE_ASM_WRITTEN (stmt))
add_high_low_attributes (stmt, subr_die); add_high_low_attributes (stmt, subr_die);
...@@ -21407,7 +21394,6 @@ dwarf2out_function_decl (tree decl) ...@@ -21407,7 +21394,6 @@ dwarf2out_function_decl (tree decl)
call_arg_loc_last = NULL; call_arg_loc_last = NULL;
call_site_count = -1; call_site_count = -1;
tail_call_site_count = -1; tail_call_site_count = -1;
block_map.release ();
decl_loc_table->empty (); decl_loc_table->empty ();
cached_dw_loc_list_table->empty (); cached_dw_loc_list_table->empty ();
} }
...@@ -25008,7 +24994,6 @@ dwarf2out_c_finalize (void) ...@@ -25008,7 +24994,6 @@ dwarf2out_c_finalize (void)
call_arg_loc_last = NULL; call_arg_loc_last = NULL;
call_site_count = -1; call_site_count = -1;
tail_call_site_count = -1; tail_call_site_count = -1;
//block_map = NULL;
cached_dw_loc_list_table = NULL; cached_dw_loc_list_table = NULL;
abbrev_die_table = NULL; abbrev_die_table = NULL;
abbrev_die_table_allocated = 0; abbrev_die_table_allocated = 0;
......
...@@ -1334,6 +1334,9 @@ struct GTY(()) tree_block { ...@@ -1334,6 +1334,9 @@ struct GTY(()) tree_block {
tree abstract_origin; tree abstract_origin;
tree fragment_origin; tree fragment_origin;
tree fragment_chain; tree fragment_chain;
/* Pointer to the DWARF lexical block. */
struct die_struct *die;
}; };
struct GTY(()) tree_type_common { struct GTY(()) tree_type_common {
......
...@@ -1589,6 +1589,7 @@ extern void protected_set_expr_location (tree, location_t); ...@@ -1589,6 +1589,7 @@ extern void protected_set_expr_location (tree, location_t);
#define BLOCK_CHAIN(NODE) (BLOCK_CHECK (NODE)->block.chain) #define BLOCK_CHAIN(NODE) (BLOCK_CHECK (NODE)->block.chain)
#define BLOCK_ABSTRACT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.abstract_origin) #define BLOCK_ABSTRACT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.abstract_origin)
#define BLOCK_ABSTRACT(NODE) (BLOCK_CHECK (NODE)->block.abstract_flag) #define BLOCK_ABSTRACT(NODE) (BLOCK_CHECK (NODE)->block.abstract_flag)
#define BLOCK_DIE(NODE) (BLOCK_CHECK (NODE)->block.die)
/* True if BLOCK has the same ranges as its BLOCK_SUPERCONTEXT. */ /* True if BLOCK has the same ranges as its BLOCK_SUPERCONTEXT. */
#define BLOCK_SAME_RANGE(NODE) (BLOCK_CHECK (NODE)->base.u.bits.nameless_flag) #define BLOCK_SAME_RANGE(NODE) (BLOCK_CHECK (NODE)->base.u.bits.nameless_flag)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment