diff options
author | David Malcolm <dmalcolm@redhat.com> | 2014-08-21 14:01:37 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2014-08-21 14:01:37 +0000 |
commit | a36e5877186a606603746853480ea9aea3c79c2c (patch) | |
tree | e7d21d772e5ef8546e4cf56644276991e2166af5 /gcc | |
parent | a336b719a34c07effb7e1ba9e72f8c270ea362ee (diff) | |
download | gcc-a36e5877186a606603746853480ea9aea3c79c2c.zip gcc-a36e5877186a606603746853480ea9aea3c79c2c.tar.gz gcc-a36e5877186a606603746853480ea9aea3c79c2c.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/genautomata.c | 10 |
2 files changed, 21 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6a366d3..12ef514 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> PR tree-optimization/62091 diff --git a/gcc/genautomata.c b/gcc/genautomata.c index 0c61278..3cd4d3a 100644 --- a/gcc/genautomata.c +++ b/gcc/genautomata.c @@ -8360,7 +8360,7 @@ output_internal_insn_latency_func (void) decl_t decl; 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_INSN2_CODE_NAME, INSN_PARAMETER_NAME, INSN2_PARAMETER_NAME); @@ -8477,10 +8477,16 @@ output_internal_maximal_insn_latency_func (void) static 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); fprintf (output_file, "{\n int %s, %s;\n", 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, INTERNAL_INSN_CODE_NAME, 0); output_internal_insn_code_evaluation (INSN2_PARAMETER_NAME, |