public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/aoliva/heads/testme)] genmatch: Avoid unused parameter warnings in generated code.
@ 2020-08-06  6:39 Alexandre Oliva
  0 siblings, 0 replies; only message in thread
From: Alexandre Oliva @ 2020-08-06  6:39 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:ef59e1fb372c91c882784392b98c44a8550ff455

commit ef59e1fb372c91c882784392b98c44a8550ff455
Author: Roger Sayle <roger@nextmovesoftware.com>
Date:   Mon Aug 3 13:10:45 2020 +0100

    genmatch: Avoid unused parameter warnings in generated code.
    
    This patch silences a number of unused parameter warnings whilst
    compiling both generic-match.c and gimple-match.c.  The problem is
    that multiple (polymorphic) functions are generated for generic_simplify
    and gimple_simplify, each handling tree codes with a specific number
    of children.  Currently, there are no simplifications for tree codes
    with four or five children, leading to functions with "empty" bodies
    and unused function arguments.  This patch detects those cases, and
    generates stub functions (with anonymous arguments) to silence these
    warnings.
    
    2020-08-03  Roger Sayle  <roger@nextmovesoftware.com>
    
    gcc/ChangeLog
            * genmatch.c (decision_tree::gen): Emit stub functions for
            tree code operand counts that have no simplifications.
            (main): Correct comment typo.

Diff:
---
 gcc/genmatch.c | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/gcc/genmatch.c b/gcc/genmatch.c
index 109dce2d469..4e13bc51579 100644
--- a/gcc/genmatch.c
+++ b/gcc/genmatch.c
@@ -3803,6 +3803,8 @@ decision_tree::gen (FILE *f, bool gimple)
 
   for (unsigned n = 1; n <= 5; ++n)
     {
+      bool has_kids_p = false;
+
       /* First generate split-out functions.  */
       for (unsigned j = 0; j < root->kids.length (); j++)
 	{
@@ -3841,6 +3843,32 @@ decision_tree::gen (FILE *f, bool gimple)
 	  else
 	    fprintf (f, "  return NULL_TREE;\n");
 	  fprintf (f, "}\n");
+	  has_kids_p = true;
+	}
+
+      /* If this main entry has no children, avoid generating code
+	 with compiler warnings, by generating a simple stub.  */
+      if (! has_kids_p)
+	{
+	  if (gimple)
+	    fprintf (f, "\nstatic bool\n"
+			"gimple_simplify (gimple_match_op*, gimple_seq*,\n"
+			"                 tree (*)(tree), code_helper,\n"
+			"                 const tree");
+	  else
+	    fprintf (f, "\ntree\n"
+			"generic_simplify (location_t, enum tree_code,\n"
+			"                  const tree");
+	  for (unsigned i = 0; i < n; ++i)
+	    fprintf (f, ", tree");
+	  fprintf (f, ")\n");
+	  fprintf (f, "{\n");
+	  if (gimple)
+	    fprintf (f, "  return false;\n");
+	  else
+	    fprintf (f, "  return NULL_TREE;\n");
+	  fprintf (f, "}\n");
+	  continue;
 	}
 
       /* Then generate the main entry with the outermost switch and
@@ -5079,7 +5107,7 @@ round_alloc_size (size_t s)
 }
 
 
-/* The genmatch generator progam.  It reads from a pattern description
+/* The genmatch generator program.  It reads from a pattern description
    and outputs GIMPLE or GENERIC IL matching and simplification routines.  */
 
 int


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-08-06  6:39 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-06  6:39 [gcc(refs/users/aoliva/heads/testme)] genmatch: Avoid unused parameter warnings in generated code Alexandre Oliva

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).