Commit fb18c0c9 by Eric Botcazou Committed by Eric Botcazou

tree-inline.c (remap_gimple_stmt): Force input_location on the new statement if…

tree-inline.c (remap_gimple_stmt): Force input_location on the new statement if id->reset_location is true.

	* tree-inline.c (remap_gimple_stmt): Force input_location on the new
	statement if id->reset_location is true.
	(copy_edges_for_bb): Do not set goto_locus on the new edges if
	id->reset_location is true.
	(copy_phis_for_bb): Force input_location on the arguments if
	id->reset_location is true.
	(expand_call_inline): Set id->reset_location if DECL_IGNORED_P
	is set on the function to be inlined.
	* tree-inline.h (struct copy_body_data): Move remapping_type_depth and
	prevent_decl_creation_for_types fields up and add reset_location field.

From-SVN: r262207
parent 09e1386f
2018-06-28 Eric Botcazou <ebotcazou@adacore.com>
* tree-inline.c (remap_gimple_stmt): Force input_location on the new
statement if id->reset_location is true.
(copy_edges_for_bb): Do not set goto_locus on the new edges if
id->reset_location is true.
(copy_phis_for_bb): Force input_location on the arguments if
id->reset_location is true.
(expand_call_inline): Set id->reset_location if DECL_IGNORED_P
is set on the function to be inlined.
* tree-inline.h (struct copy_body_data): Move remapping_type_depth and
prevent_decl_creation_for_types fields up and add reset_location field.
2018-06-27 Stephan Bergmann <sbergman@redhat.com>
* doc/invoke.texi (Debugging Options): Add -gsplit-dwarf.
......
2018-06-28 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/debug15.adb: New test.
2018-06-27 David Malcolm <dmalcolm@redhat.com>
PR c++/86329
......@@ -5,8 +9,6 @@
2018-06-27 Carl Love <cel@us.ibm.com>
Add test case that was supposed to be added in commit 255556 on 2017-12-11.
* gcc.target/vsx-vector-abss.c: New file to test vec_abss.
2018-06-27 Tamar Christina <tamar.christina@arm.com>
......
-- { dg-do compile }
-- { dg-options "-g1" }
procedure Debug15 is
type Shape is abstract tagged record
S : Integer;
end record;
type Rectangle is new Shape with record
R : Integer;
end record;
X : Integer;
R: Rectangle := (1, 2);
S: Shape'Class := R;
begin
X := 12;
end;
-- { dg-final { scan-assembler-not "loc 2" } }
......@@ -1630,6 +1630,8 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
= gimple_build_debug_bind (gimple_debug_bind_get_var (stmt),
gimple_debug_bind_get_value (stmt),
stmt);
if (id->reset_location)
gimple_set_location (copy, input_location);
id->debug_stmts.safe_push (copy);
gimple_seq_add_stmt (&stmts, copy);
return stmts;
......@@ -1640,6 +1642,8 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
(gimple_debug_source_bind_get_var (stmt),
gimple_debug_source_bind_get_value (stmt),
stmt);
if (id->reset_location)
gimple_set_location (copy, input_location);
id->debug_stmts.safe_push (copy);
gimple_seq_add_stmt (&stmts, copy);
return stmts;
......@@ -1653,6 +1657,8 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
return stmts;
gdebug *copy = as_a <gdebug *> (gimple_copy (stmt));
if (id->reset_location)
gimple_set_location (copy, input_location);
id->debug_stmts.safe_push (copy);
gimple_seq_add_stmt (&stmts, copy);
return stmts;
......@@ -1751,6 +1757,9 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
gimple_set_block (copy, *n);
}
if (id->reset_location)
gimple_set_location (copy, input_location);
/* Debug statements ought to be rebuilt and not copied. */
gcc_checking_assert (!is_gimple_debug (copy));
......@@ -2178,7 +2187,8 @@ copy_edges_for_bb (basic_block bb, profile_count num, profile_count den,
new_edge
= make_edge (new_bb, (basic_block) old_edge->dest->aux, flags);
new_edge->probability = old_edge->probability;
new_edge->goto_locus = remap_location (locus, id);
if (!id->reset_location)
new_edge->goto_locus = remap_location (locus, id);
}
if (bb->index == ENTRY_BLOCK || bb->index == EXIT_BLOCK)
......@@ -2375,7 +2385,10 @@ copy_phis_for_bb (basic_block bb, copy_body_data *id)
inserted = true;
}
locus = gimple_phi_arg_location_from_edge (phi, old_edge);
locus = remap_location (locus, id);
if (id->reset_location)
locus = input_location;
else
locus = remap_location (locus, id);
add_phi_arg (new_phi, new_arg, new_edge, locus);
}
}
......@@ -4499,8 +4512,7 @@ expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id)
prepend_lexical_block (gimple_block (stmt), id->block);
}
/* Local declarations will be replaced by their equivalents in this
map. */
/* Local declarations will be replaced by their equivalents in this map. */
st = id->decl_map;
id->decl_map = new hash_map<tree, tree>;
dst = id->debug_map;
......@@ -4509,6 +4521,7 @@ expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id)
/* Record the function we are about to inline. */
id->src_fn = fn;
id->src_cfun = DECL_STRUCT_FUNCTION (fn);
id->reset_location = DECL_IGNORED_P (fn);
id->call_stmt = call_stmt;
/* When inlining into an OpenMP SIMD-on-SIMT loop, arrange for new automatic
......
......@@ -80,6 +80,9 @@ struct copy_body_data
is not. */
gcall *call_stmt;
/* > 0 if we are remapping a type currently. */
int remapping_type_depth;
/* Exception landing pad the inlined call lies in. */
int eh_lp_nr;
......@@ -110,11 +113,14 @@ struct copy_body_data
/* True if this statement will need to be regimplified. */
bool regimplify;
/* True if trees should not be unshared. */
/* True if trees may not be unshared. */
bool do_not_unshare;
/* > 0 if we are remapping a type currently. */
int remapping_type_depth;
/* True if new declarations may not be created during type remapping. */
bool prevent_decl_creation_for_types;
/* True if the location information will need to be reset. */
bool reset_location;
/* A function to be called when duplicating BLOCK nodes. */
void (*transform_lang_insert_block) (tree);
......@@ -145,9 +151,6 @@ struct copy_body_data
/* A list of addressable local variables remapped into the caller
when inlining a call within an OpenMP SIMD-on-SIMT loop. */
vec<tree> *dst_simt_vars;
/* Do not create new declarations when within type remapping. */
bool prevent_decl_creation_for_types;
};
/* Weights of constructions for estimate_num_insns. */
......
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