define_bypass guard functions take a pair of rtx_insn
2014-08-21 David Malcolm <dmalcolm@redhat.com> * genautomata.c (output_internal_insn_latency_func): When writing the function "internal_insn_latency" to insn-automata.c, strengthen params "insn" and "insn2" from rtx to rtx_insn *, thus allowing the optional guard function of (define_bypass) clauses to expect a pair of rtx_insn *, rather than a pair of rtx. (output_insn_latency_func): When writing the function "insn_latency", add an "uncast_" prefix to params "insn" and "insn2", reintroducing "insn" and "insn2" as rtx_insn * locals using checked casts from the params, thus enabling the above change to the generated "internal_insn_latency" function. From-SVN: r214273
This commit is contained in:
parent
a336b719a3
commit
a36e587718
|
@ -1,3 +1,16 @@
|
||||||
|
2014-08-21 David Malcolm <dmalcolm@redhat.com>
|
||||||
|
|
||||||
|
* genautomata.c (output_internal_insn_latency_func): When writing
|
||||||
|
the function "internal_insn_latency" to insn-automata.c,
|
||||||
|
strengthen params "insn" and "insn2" from rtx to rtx_insn *, thus
|
||||||
|
allowing the optional guard function of (define_bypass) clauses to
|
||||||
|
expect a pair of rtx_insn *, rather than a pair of rtx.
|
||||||
|
(output_insn_latency_func): When writing the function
|
||||||
|
"insn_latency", add an "uncast_" prefix to params "insn" and
|
||||||
|
"insn2", reintroducing "insn" and "insn2" as rtx_insn * locals
|
||||||
|
using checked casts from the params, thus enabling the above
|
||||||
|
change to the generated "internal_insn_latency" function.
|
||||||
|
|
||||||
2014-08-21 Jan Hubicka <hubicka@ucw.cz>
|
2014-08-21 Jan Hubicka <hubicka@ucw.cz>
|
||||||
|
|
||||||
PR tree-optimization/62091
|
PR tree-optimization/62091
|
||||||
|
|
|
@ -8360,7 +8360,7 @@ output_internal_insn_latency_func (void)
|
||||||
decl_t decl;
|
decl_t decl;
|
||||||
struct bypass_decl *bypass;
|
struct bypass_decl *bypass;
|
||||||
|
|
||||||
fprintf (output_file, "static int\n%s (int %s ATTRIBUTE_UNUSED,\n\tint %s ATTRIBUTE_UNUSED,\n\trtx %s ATTRIBUTE_UNUSED,\n\trtx %s ATTRIBUTE_UNUSED)\n",
|
fprintf (output_file, "static int\n%s (int %s ATTRIBUTE_UNUSED,\n\tint %s ATTRIBUTE_UNUSED,\n\trtx_insn *%s ATTRIBUTE_UNUSED,\n\trtx_insn *%s ATTRIBUTE_UNUSED)\n",
|
||||||
INTERNAL_INSN_LATENCY_FUNC_NAME, INTERNAL_INSN_CODE_NAME,
|
INTERNAL_INSN_LATENCY_FUNC_NAME, INTERNAL_INSN_CODE_NAME,
|
||||||
INTERNAL_INSN2_CODE_NAME, INSN_PARAMETER_NAME,
|
INTERNAL_INSN2_CODE_NAME, INSN_PARAMETER_NAME,
|
||||||
INSN2_PARAMETER_NAME);
|
INSN2_PARAMETER_NAME);
|
||||||
|
@ -8477,10 +8477,16 @@ output_internal_maximal_insn_latency_func (void)
|
||||||
static void
|
static void
|
||||||
output_insn_latency_func (void)
|
output_insn_latency_func (void)
|
||||||
{
|
{
|
||||||
fprintf (output_file, "int\n%s (rtx %s, rtx %s)\n",
|
fprintf (output_file, "int\n%s (rtx uncast_%s, rtx uncast_%s)\n",
|
||||||
INSN_LATENCY_FUNC_NAME, INSN_PARAMETER_NAME, INSN2_PARAMETER_NAME);
|
INSN_LATENCY_FUNC_NAME, INSN_PARAMETER_NAME, INSN2_PARAMETER_NAME);
|
||||||
fprintf (output_file, "{\n int %s, %s;\n",
|
fprintf (output_file, "{\n int %s, %s;\n",
|
||||||
INTERNAL_INSN_CODE_NAME, INTERNAL_INSN2_CODE_NAME);
|
INTERNAL_INSN_CODE_NAME, INTERNAL_INSN2_CODE_NAME);
|
||||||
|
fprintf (output_file,
|
||||||
|
" rtx_insn *%s = safe_as_a <rtx_insn *> (uncast_%s);\n",
|
||||||
|
INSN_PARAMETER_NAME, INSN_PARAMETER_NAME);
|
||||||
|
fprintf (output_file,
|
||||||
|
" rtx_insn *%s = safe_as_a <rtx_insn *> (uncast_%s);\n",
|
||||||
|
INSN2_PARAMETER_NAME, INSN2_PARAMETER_NAME);
|
||||||
output_internal_insn_code_evaluation (INSN_PARAMETER_NAME,
|
output_internal_insn_code_evaluation (INSN_PARAMETER_NAME,
|
||||||
INTERNAL_INSN_CODE_NAME, 0);
|
INTERNAL_INSN_CODE_NAME, 0);
|
||||||
output_internal_insn_code_evaluation (INSN2_PARAMETER_NAME,
|
output_internal_insn_code_evaluation (INSN2_PARAMETER_NAME,
|
||||||
|
|
Loading…
Reference in New Issue