bb-reorder.c (fix_crossing_unconditional_branches): Remove a set-but-unused variable.

* bb-reorder.c (fix_crossing_unconditional_branches): Remove a
	set-but-unused variable.

	* cgraph.c (cgraph_release_function_body): Clear cfun->cfg to make
	basic blocks of released function bodies garbage-collectable.

	* ree.c (find_and_remove_re): Do not call df_finish_pass here.
	(struct rtl_opt_pass): Add TODO_df_finish.

	* rtl.def (DEFINE_SUBST, DEFINE_SUBST_ATTR): Add documentation.

From-SVN: r197533
This commit is contained in:
Steven Bosscher 2013-04-05 19:23:17 +00:00
parent 4542a38a21
commit 7bca81dc6a
5 changed files with 55 additions and 8 deletions

View file

@ -1,3 +1,16 @@
2013-04-05 Steven Bosscher <steven@gcc.gnu.org>
* bb-reorder.c (fix_crossing_unconditional_branches): Remove a
set-but-unused variable.
* cgraph.c (cgraph_release_function_body): Clear cfun->cfg to make
basic blocks of released function bodies garbage-collectable.
* ree.c (find_and_remove_re): Do not call df_finish_pass here.
(struct rtl_opt_pass): Add TODO_df_finish.
* rtl.def (DEFINE_SUBST, DEFINE_SUBST_ATTR): Add documentation.
2013-04-05 Greta Yorsh <Greta.Yorsh@arm.com>
* config/arm/constraints.md (q): New constraint.

View file

@ -1998,14 +1998,12 @@ fix_crossing_unconditional_branches (void)
if (JUMP_P (last_insn)
&& (succ->flags & EDGE_CROSSING))
{
rtx label2;
gcc_assert (!any_condjump_p (last_insn));
/* Make sure the jump is not already an indirect or table jump. */
if (!computed_jump_p (last_insn)
&& !tablejump_p (last_insn, &label2, NULL))
&& !tablejump_p (last_insn, NULL, NULL))
{
/* We have found a "crossing" unconditional branch. Now
we must convert it to an indirect jump. First create

View file

@ -1260,7 +1260,10 @@ cgraph_node_remove_callers (struct cgraph_node *node)
node->callers = NULL;
}
/* Release memory used to represent body of function NODE. */
/* Release memory used to represent body of function NODE.
Use this only for functions that are released before being translated to
target code (i.e. RTL). Functions that are compiled to RTL and beyond
are free'd in final.c via free_after_compilation(). */
void
cgraph_release_function_body (struct cgraph_node *node)
@ -1285,6 +1288,7 @@ cgraph_release_function_body (struct cgraph_node *node)
gcc_assert (dom_computed[0] == DOM_NONE);
gcc_assert (dom_computed[1] == DOM_NONE);
clear_edges ();
cfun->cfg = NULL;
}
if (cfun->value_histograms)
free_histograms ();

View file

@ -919,8 +919,6 @@ find_and_remove_re (void)
if (dump_file && num_re_opportunities > 0)
fprintf (dump_file, "Elimination opportunities = %d realized = %d\n",
num_re_opportunities, num_realized);
df_finish_pass (false);
}
/* Find and remove redundant extensions. */
@ -958,7 +956,8 @@ struct rtl_opt_pass pass_ree =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
TODO_ggc_collect |
TODO_verify_rtl_sharing, /* todo_flags_finish */
TODO_df_finish
| TODO_ggc_collect
| TODO_verify_rtl_sharing, /* todo_flags_finish */
}
};

View file

@ -1290,8 +1290,41 @@ DEF_RTL_EXPR (ATTR_FLAG, "attr_flag", "s", RTX_EXTRA)
true, the second operand will be used as the value of the conditional. */
DEF_RTL_EXPR(COND, "cond", "Ee", RTX_EXTRA)
/* Definition of a pattern substitution meta operation on a DEFINE_EXPAND
or a DEFINE_INSN. Automatically generates new instances of DEFINE_INSNs
that match the substitution pattern.
Operand:
0: The name of the substitition template.
1: Input template to match to see if a substitution is applicable.
2: A C expression giving an additional condition for the generated
new define_expand or define_insn.
3: Output tempalate to generate via substitution.
Within a DEFINE_SUBST template, the meaning of some RTL expressions is
different from their usual interpretation: a MATCH_OPERAND matches any
expression tree with matching machine mode or with VOIDmode. Likewise,
MATCH_OP_DUP and MATCH_DUP match more liberally in a DEFINE_SUBST than
in other RTL expressions. MATCH_OPERATOR matches all common operators
but also UNSPEC, UNSPEC_VOLATILE, and MATCH_OPERATORS from the input
DEFINE_EXPAND or DEFINE_INSN. */
DEF_RTL_EXPR(DEFINE_SUBST, "define_subst", "sEsE", RTX_EXTRA)
/* Substitution attribute to apply a DEFINE_SUBST to a pattern.
Operand:
0: The name of the subst-attribute.
1: The name of the DEFINE_SUBST to be applied for this attribute.
2: String to substitute for the subst-attribute name in the pattern
name, for the case that the DEFINE_SUBST is not applied (i.e. the
unmodified version of the pattern).
3: String to substitute for the subst-attribute name in the pattern
name, for the case that the DEFINE_SUBST is applied to the patten.
The use of DEFINE_SUBST and DEFINE_SUBST_ATTR is explained in the
GCC internals manual, under "RTL Templates Transformations". */
DEF_RTL_EXPR(DEFINE_SUBST_ATTR, "define_subst_attr", "ssss", RTX_EXTRA)
#endif /* GENERATOR_FILE */
/*