On 10/06/2015 03:56 PM, Richard Biener wrote:
> The generators should simply unconditionally check (not in generated
> files, of course).
> And the generated code parts should use flag_checking.
> 
> Richard.

genautomata has some macros similar to tree checks, so I avoided changing them.
genconditions for some reason #undef-s ENABLE_CHECKING in the generated code. I
did not look at it in details, but decided to simply #define CHECKING_P to 0 for
consistency.

As for genextract and gengtype, I followed your recommendations, that is, used
flag_checking instead of CHECKING_P in genextract, and always enable debugging
functions in gengtype.

-- 
Regards,
    Mikhail Maltsev

gcc/ChangeLog:

2015-10-19  Mikhail Maltsev  <malts...@gmail.com>

        * genautomata.c: Use CHECKING_P instead of ENABLE_CHECKING.
        * genconditions.c: Define CHECKING_P in the generated code.
        * genextract.c: Use flag_checking in insn_extract.
        * gengtype.c (main): Remove conditional compilation.
        * gengtype.h: Likewise.
>From df421545d314192e9a4ac2868754f34590d73027 Mon Sep 17 00:00:00 2001
From: Mikhail Maltsev <malts...@gmail.com>
Date: Sun, 4 Oct 2015 22:50:02 +0300
Subject: [PATCH 5/7] Generators - v2

---
 gcc/genautomata.c   | 2 +-
 gcc/genconditions.c | 2 ++
 gcc/genextract.c    | 9 +++++----
 gcc/gengtype.c      | 6 ------
 gcc/gengtype.h      | 5 -----
 5 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/gcc/genautomata.c b/gcc/genautomata.c
index 5196d68..beae5ef 100644
--- a/gcc/genautomata.c
+++ b/gcc/genautomata.c
@@ -879,7 +879,7 @@ struct state_ainsn_table
 /* Macros to access members of unions.  Use only them for access to
    union members of declarations and regexps.  */
 
-#if defined ENABLE_CHECKING && (GCC_VERSION >= 2007)
+#if CHECKING_P && (GCC_VERSION >= 2007)
 
 #define DECL_UNIT(d) __extension__					\
 (({ __typeof (d) const _decl = (d);					\
diff --git a/gcc/genconditions.c b/gcc/genconditions.c
index 001e58e..7481ab4 100644
--- a/gcc/genconditions.c
+++ b/gcc/genconditions.c
@@ -60,6 +60,8 @@ write_header (void)
 \n\
 /* Do not allow checking to confuse the issue.  */\n\
 #undef ENABLE_CHECKING\n\
+#undef CHECKING_P\n\
+#define CHECKING_P 0\n\
 #undef ENABLE_TREE_CHECKING\n\
 #undef ENABLE_RTL_CHECKING\n\
 #undef ENABLE_RTL_FLAG_CHECKING\n\
diff --git a/gcc/genextract.c b/gcc/genextract.c
index fe97701..a03ac97 100644
--- a/gcc/genextract.c
+++ b/gcc/genextract.c
@@ -373,10 +373,11 @@ insn_extract (rtx_insn *insn)\n{\n\
   rtx pat = PATTERN (insn);\n\
   int i ATTRIBUTE_UNUSED; /* only for peepholes */\n\
 \n\
-#ifdef ENABLE_CHECKING\n\
-  memset (ro, 0xab, sizeof (*ro) * MAX_RECOG_OPERANDS);\n\
-  memset (ro_loc, 0xab, sizeof (*ro_loc) * MAX_RECOG_OPERANDS);\n\
-#endif\n");
+  if (flag_checking)\n\
+    {\n\
+      memset (ro, 0xab, sizeof (*ro) * MAX_RECOG_OPERANDS);\n\
+      memset (ro_loc, 0xab, sizeof (*ro_loc) * MAX_RECOG_OPERANDS);\n\
+    }\n");
 
   puts ("\
   switch (INSN_CODE (insn))\n\
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
index 866d809..b7a33c6 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -158,9 +158,6 @@ size_t num_lang_dirs;
    BASE_FILES entry for each language.  */
 static outf_p *base_files;
 
-
-
-#if ENABLE_CHECKING
 /* Utility debugging function, printing the various type counts within
    a list of types.  Called through the DBGPRINT_COUNT_TYPE macro.  */
 void
@@ -222,7 +219,6 @@ dbgprint_count_type_at (const char *fil, int lin, const char *msg, type_p t)
     fprintf (stderr, "@@%%@@ %d undefined types\n", nb_undefined);
   fprintf (stderr, "\n");
 }
-#endif /* ENABLE_CHECKING */
 
 /* Scan the input file, LIST, and determine how much space we need to
    store strings in.  Also, count the number of language directories
@@ -5181,7 +5177,6 @@ main (int argc, char **argv)
 
   parse_program_options (argc, argv);
 
-#if ENABLE_CHECKING
   if (do_debug)
     {
       time_t now = (time_t) 0;
@@ -5189,7 +5184,6 @@ main (int argc, char **argv)
       DBGPRINTF ("gengtype started pid %d at %s",
 		 (int) getpid (), ctime (&now));
     }
-#endif	/* ENABLE_CHECKING */
 
   /* Parse the input list and the input files.  */
   DBGPRINTF ("inputlist %s", inputlist);
diff --git a/gcc/gengtype.h b/gcc/gengtype.h
index 83f3632..b8ce7ce 100644
--- a/gcc/gengtype.h
+++ b/gcc/gengtype.h
@@ -492,17 +492,12 @@ extern int do_dump;		/* (-d) program argument. */
    gengtype source code).  Only useful to debug gengtype itself.  */
 extern int do_debug;		/* (-D) program argument. */
 
-#if ENABLE_CHECKING
 #define DBGPRINTF(Fmt,...) do {if (do_debug)				\
       fprintf (stderr, "%s:%d: " Fmt "\n",				\
 	       lbasename (__FILE__),__LINE__, ##__VA_ARGS__);} while (0)
 void dbgprint_count_type_at (const char *, int, const char *, type_p);
 #define DBGPRINT_COUNT_TYPE(Msg,Ty) do {if (do_debug)			\
       dbgprint_count_type_at (__FILE__, __LINE__, Msg, Ty);}while (0)
-#else
-#define DBGPRINTF(Fmt,...) do {/*nodbgrintf*/} while (0)
-#define DBGPRINT_COUNT_TYPE(Msg,Ty) do{/*nodbgprint_count_type*/}while (0)
-#endif /*ENABLE_CHECKING */
 
 #define FOR_ALL_INHERITED_FIELDS(TYPE, FIELD_VAR) \
   for (type_p sub = (TYPE); sub; sub = sub->u.s.base_class) \
-- 
2.1.4

Reply via email to