]> gcc.gnu.org Git - gcc.git/commitdiff
define_bypass guard functions take a pair of rtx_insn
authorDavid Malcolm <dmalcolm@redhat.com>
Thu, 21 Aug 2014 14:01:37 +0000 (14:01 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Thu, 21 Aug 2014 14:01:37 +0000 (14:01 +0000)
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

gcc/ChangeLog
gcc/genautomata.c

index 6a366d3ee7a3d758412e4580067747c6cfee8c36..12ef5146eba98754a60cdf65f182887e2afd2473 100644 (file)
@@ -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
index 0c61278ff4cdc00ae7b34f0407878efdd4f53489..3cd4d3a50091433d163ccd8ddd49fba91b664f12 100644 (file)
@@ -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,
This page took 0.115924 seconds and 5 git commands to generate.