Commit ed510b16 by Eric Botcazou Committed by Eric Botcazou

gimple.h (gimple_return_retbnd): Delete.

	* gimple.h (gimple_return_retbnd): Delete.
	(gimple_return_set_retbnd): Likewise.
	* cgraphunit.c (cgraph_node::expand_thunk): Remove call to
	gimple_return_set_retbnd.
	* gimple-pretty-print.c (dump_gimple_return): Remove call to
	gimple_return_retbnd and adjust.
	* tree-inline.h (struct copy_body_data): Remove retbnd field.
	* tree-inline.c (remap_gimple_stmt): Remove handling of retbnd.
	Explicitly return NULL in a couple more cases.  Move assertion
	on debug statements and remove unreachable code.
	(reset_debug_binding): Do not test id->retbnd.
	(expand_call_inline): Do not set it.

From-SVN: r262181
parent 1765b023
2018-06-27 Eric Botcazou <ebotcazou@adacore.com>
* gimple.h (gimple_return_retbnd): Delete.
(gimple_return_set_retbnd): Likewise.
* cgraphunit.c (cgraph_node::expand_thunk): Remove call to
gimple_return_set_retbnd.
* gimple-pretty-print.c (dump_gimple_return): Remove call to
gimple_return_retbnd and adjust.
* tree-inline.h (struct copy_body_data): Remove retbnd field.
* tree-inline.c (remap_gimple_stmt): Remove handling of retbnd.
Explicitly return NULL in a couple more cases. Move assertion
on debug statements and remove unreachable code.
(reset_debug_binding): Do not test id->retbnd.
(expand_call_inline): Do not set it.
2018-06-27 Rasmus Villemoes <rv@rasmusvillemoes.dk> 2018-06-27 Rasmus Villemoes <rv@rasmusvillemoes.dk>
* configure.ac: Add --disable-gcov option. * configure.ac: Add --disable-gcov option.
......
...@@ -1803,7 +1803,6 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk) ...@@ -1803,7 +1803,6 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)
int i; int i;
tree resdecl; tree resdecl;
tree restmp = NULL; tree restmp = NULL;
tree resbnd = NULL;
gcall *call; gcall *call;
greturn *ret; greturn *ret;
...@@ -1994,7 +1993,6 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk) ...@@ -1994,7 +1993,6 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)
ret = gimple_build_return (restmp); ret = gimple_build_return (restmp);
else else
ret = gimple_build_return (resdecl); ret = gimple_build_return (resdecl);
gimple_return_set_retbnd (ret, resbnd);
gsi_insert_after (&bsi, ret, GSI_NEW_STMT); gsi_insert_after (&bsi, ret, GSI_NEW_STMT);
} }
......
...@@ -645,12 +645,11 @@ static void ...@@ -645,12 +645,11 @@ static void
dump_gimple_return (pretty_printer *buffer, greturn *gs, int spc, dump_gimple_return (pretty_printer *buffer, greturn *gs, int spc,
dump_flags_t flags) dump_flags_t flags)
{ {
tree t, t2; tree t;
t = gimple_return_retval (gs); t = gimple_return_retval (gs);
t2 = gimple_return_retbnd (gs);
if (flags & TDF_RAW) if (flags & TDF_RAW)
dump_gimple_fmt (buffer, spc, flags, "%G <%T %T>", gs, t, t2); dump_gimple_fmt (buffer, spc, flags, "%G <%T>", gs, t);
else else
{ {
pp_string (buffer, "return"); pp_string (buffer, "return");
...@@ -659,11 +658,6 @@ dump_gimple_return (pretty_printer *buffer, greturn *gs, int spc, ...@@ -659,11 +658,6 @@ dump_gimple_return (pretty_printer *buffer, greturn *gs, int spc,
pp_space (buffer); pp_space (buffer);
dump_generic_node (buffer, t, spc, flags, false); dump_generic_node (buffer, t, spc, flags, false);
} }
if (t2)
{
pp_string (buffer, ", ");
dump_generic_node (buffer, t2, spc, flags, false);
}
pp_semicolon (buffer); pp_semicolon (buffer);
} }
} }
......
...@@ -6198,26 +6198,6 @@ gimple_return_set_retval (greturn *gs, tree retval) ...@@ -6198,26 +6198,6 @@ gimple_return_set_retval (greturn *gs, tree retval)
} }
/* Return the return bounds for GIMPLE_RETURN GS. */
static inline tree
gimple_return_retbnd (const gimple *gs)
{
GIMPLE_CHECK (gs, GIMPLE_RETURN);
return gimple_op (gs, 1);
}
/* Set RETVAL to be the return bounds for GIMPLE_RETURN GS. */
static inline void
gimple_return_set_retbnd (gimple *gs, tree retval)
{
GIMPLE_CHECK (gs, GIMPLE_RETURN);
gimple_set_op (gs, 1, retval);
}
/* Returns true when the gimple statement STMT is any of the OMP types. */ /* Returns true when the gimple statement STMT is any of the OMP types. */
#define CASE_GIMPLE_OMP \ #define CASE_GIMPLE_OMP \
......
...@@ -1382,35 +1382,24 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id) ...@@ -1382,35 +1382,24 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
&& (gimple_debug_nonbind_marker_p (stmt) && (gimple_debug_nonbind_marker_p (stmt)
? !DECL_STRUCT_FUNCTION (id->dst_fn)->debug_nonbind_markers ? !DECL_STRUCT_FUNCTION (id->dst_fn)->debug_nonbind_markers
: !opt_for_fn (id->dst_fn, flag_var_tracking_assignments))) : !opt_for_fn (id->dst_fn, flag_var_tracking_assignments)))
return stmts; return NULL;
/* Begin by recognizing trees that we'll completely rewrite for the /* Begin by recognizing trees that we'll completely rewrite for the
inlining context. Our output for these trees is completely inlining context. Our output for these trees is completely
different from out input (e.g. RETURN_EXPR is deleted, and morphs different from our input (e.g. RETURN_EXPR is deleted and morphs
into an edge). Further down, we'll handle trees that get into an edge). Further down, we'll handle trees that get
duplicated and/or tweaked. */ duplicated and/or tweaked. */
/* When requested, GIMPLE_RETURNs should be transformed to just the /* When requested, GIMPLE_RETURN should be transformed to just the
contained GIMPLE_ASSIGN. The branch semantics of the return will contained GIMPLE_ASSIGN. The branch semantics of the return will
be handled elsewhere by manipulating the CFG rather than the be handled elsewhere by manipulating the CFG rather than the
statement. */ statement. */
if (gimple_code (stmt) == GIMPLE_RETURN && id->transform_return_to_modify) if (gimple_code (stmt) == GIMPLE_RETURN && id->transform_return_to_modify)
{ {
tree retval = gimple_return_retval (as_a <greturn *> (stmt)); tree retval = gimple_return_retval (as_a <greturn *> (stmt));
tree retbnd = gimple_return_retbnd (stmt);
tree bndslot = id->retbnd;
if (retbnd && bndslot)
{
gimple *bndcopy = gimple_build_assign (bndslot, retbnd);
memset (&wi, 0, sizeof (wi));
wi.info = id;
walk_gimple_op (bndcopy, remap_gimple_op_r, &wi);
gimple_seq_add_stmt (&stmts, bndcopy);
}
/* If we're returning something, just turn that into an /* If we're returning something, just turn that into an
assignment into the equivalent of the original RESULT_DECL. assignment to the equivalent of the original RESULT_DECL.
If RETVAL is just the result decl, the result decl has If RETVAL is just the result decl, the result decl has
already been set (e.g. a recent "foo (&result_decl, ...)"); already been set (e.g. a recent "foo (&result_decl, ...)");
just toss the entire GIMPLE_RETURN. */ just toss the entire GIMPLE_RETURN. */
...@@ -1427,7 +1416,7 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id) ...@@ -1427,7 +1416,7 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
skip_first = true; skip_first = true;
} }
else else
return stmts; return NULL;
} }
else if (gimple_has_substatements (stmt)) else if (gimple_has_substatements (stmt))
{ {
...@@ -1668,7 +1657,6 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id) ...@@ -1668,7 +1657,6 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
gimple_seq_add_stmt (&stmts, copy); gimple_seq_add_stmt (&stmts, copy);
return stmts; return stmts;
} }
gcc_checking_assert (!is_gimple_debug (stmt));
/* Create a new deep copy of the statement. */ /* Create a new deep copy of the statement. */
copy = gimple_copy (stmt); copy = gimple_copy (stmt);
...@@ -1754,8 +1742,7 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id) ...@@ -1754,8 +1742,7 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
} }
} }
/* If STMT has a block defined, map it to the newly constructed /* If STMT has a block defined, map it to the newly constructed block. */
block. */
if (gimple_block (copy)) if (gimple_block (copy))
{ {
tree *n; tree *n;
...@@ -1764,12 +1751,8 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id) ...@@ -1764,12 +1751,8 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
gimple_set_block (copy, *n); gimple_set_block (copy, *n);
} }
if (gimple_debug_bind_p (copy) || gimple_debug_source_bind_p (copy) /* Debug statements ought to be rebuilt and not copied. */
|| gimple_debug_nonbind_marker_p (copy)) gcc_checking_assert (!is_gimple_debug (copy));
{
gimple_seq_add_stmt (&stmts, copy);
return stmts;
}
/* Remap all the operands in COPY. */ /* Remap all the operands in COPY. */
memset (&wi, 0, sizeof (wi)); memset (&wi, 0, sizeof (wi));
...@@ -4274,7 +4257,7 @@ reset_debug_binding (copy_body_data *id, tree srcvar, gimple_seq *bindings) ...@@ -4274,7 +4257,7 @@ reset_debug_binding (copy_body_data *id, tree srcvar, gimple_seq *bindings)
if (!VAR_P (*remappedvarp)) if (!VAR_P (*remappedvarp))
return; return;
if (*remappedvarp == id->retvar || *remappedvarp == id->retbnd) if (*remappedvarp == id->retvar)
return; return;
tree tvar = target_for_debug_bind (*remappedvarp); tree tvar = target_for_debug_bind (*remappedvarp);
...@@ -4834,7 +4817,6 @@ expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id) ...@@ -4834,7 +4817,6 @@ expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id)
id->block = NULL_TREE; id->block = NULL_TREE;
id->retvar = NULL_TREE; id->retvar = NULL_TREE;
id->retbnd = NULL_TREE;
successfully_inlined = true; successfully_inlined = true;
egress: egress:
......
...@@ -63,9 +63,6 @@ struct copy_body_data ...@@ -63,9 +63,6 @@ struct copy_body_data
/* The VAR_DECL for the return value. */ /* The VAR_DECL for the return value. */
tree retvar; tree retvar;
/* The VAR_DECL for the return bounds. */
tree retbnd;
/* Assign statements that need bounds copy. */ /* Assign statements that need bounds copy. */
vec<gimple *> assign_stmts; vec<gimple *> assign_stmts;
......
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