This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: MI guards for generated header files


On Sun, Apr 01, 2001 at 10:53:15PM -0700, Richard Henderson wrote:
> On Sun, Apr 01, 2001 at 12:55:09AM -0800, Zack Weinberg wrote:
> > I looked at three random GCC header files and they all used the
> > _FOOBAR_H style.  I can trivially change the patch to use
> > GCC_FOOBAR_H, though.
> 
> Please do.  Ok with that change.

Revised patch follows.  I'd missed tree-check.h; this does that one
too.

Bootstrapped i686-linux; /mirable dictu/, the tree builds again...

zw

	* genattr.c, gencheck.c, gencodes.c, genconfig.c, genflags.c,
	gengenrtl.c:  Wrap generated header in multiple-include guard.
	Improve error checking.

===================================================================
Index: genattr.c
--- genattr.c	2001/03/06 09:52:31	1.39
+++ genattr.c	2001/04/02 16:26:07
@@ -213,14 +213,16 @@ main (argc, argv)
   if (init_md_reader (argv[1]) != SUCCESS_EXIT_CODE)
     return (FATAL_EXIT_CODE);
 
-  printf ("/* Generated automatically by the program `genattr'\n\
-from the machine description file `md'.  */\n\n");
+  puts ("/* Generated automatically by the program `genattr'");
+  puts ("   from the machine description file `md'.  */\n");
+  puts ("#ifndef GCC_INSN_ATTR_H");
+  puts ("#define GCC_INSN_ATTR_H\n");
 
   /* For compatibility, define the attribute `alternative', which is just
      a reference to the variable `which_alternative'.  */
 
-  printf ("#define HAVE_ATTR_alternative\n");
-  printf ("#define get_attr_alternative(insn) which_alternative\n");
+  puts ("#define HAVE_ATTR_alternative");
+  puts ("#define get_attr_alternative(insn) which_alternative");
      
   /* Read the machine description.  */
 
@@ -359,8 +361,12 @@ from the machine description file `md'. 
   printf("#define ATTR_FLAG_unlikely\t0x10\n");
   printf("#define ATTR_FLAG_very_unlikely\t0x20\n");
 
-  fflush (stdout);
-  return (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+  puts("\n#endif /* GCC_INSN_ATTR_H */");
+
+  if (ferror (stdout) || fflush (stdout) || fclose (stdout))
+    return FATAL_EXIT_CODE;
+
+  return SUCCESS_EXIT_CODE;
 }
 
 /* Define this so we can link with print-rtl.o to get debug_rtx function.  */
===================================================================
Index: gencheck.c
--- gencheck.c	2001/03/27 15:31:45	1.17
+++ gencheck.c	2001/04/02 16:26:07
@@ -35,7 +35,7 @@ static void usage PARAMS ((void));
 static void
 usage ()
 {
-  fprintf (stderr,"Usage: gencheck\n");
+  fputs ("Usage: gencheck\n", stderr);
 }
 
 extern int main PARAMS ((int, char **));
@@ -57,13 +57,17 @@ main (argc, argv)
       return (1);
     }
 
-  printf ("/* This file is generated using gencheck. Do not edit. */\n");
+  puts ("/* This file is generated using gencheck. Do not edit. */\n");
+  puts ("#ifndef GCC_TREE_CHECK_H");
+  puts ("#define GCC_TREE_CHECK_H\n");
+
   for (i = 0; tree_codes[i]; i++)
     {
       printf ("#define %s_CHECK(t)\tTREE_CHECK (t, %s)\n",
 	      tree_codes[i], tree_codes[i]);
     }
 
+  puts ("\n#endif /* GCC_TREE_CHECK_H */");
   return 0;
 }
 
===================================================================
Index: gencodes.c
--- gencodes.c	2001/01/15 13:19:31	1.38
+++ gencodes.c	2001/04/02 16:26:07
@@ -88,11 +88,11 @@ main (argc, argv)
   if (init_md_reader (argv[1]) != SUCCESS_EXIT_CODE)
     return (FATAL_EXIT_CODE);
 
-  printf ("/* Generated automatically by the program `gencodes'\n\
-from the machine description file `md'.  */\n\n");
+  puts ("/* Generated automatically by the program `gencodes'");
+  puts ("   from the machine description file `md'.  */\n");
+  puts ("#ifndef GCC_INSN_CODES_H");
+  puts ("#define GCC_INSN_CODES_H\n");
 
-  printf ("#ifndef MAX_INSN_CODE\n\n");
-
   /* Read the machine description.  */
 
   insn_code_number = 0;
@@ -117,11 +117,13 @@ from the machine description file `md'. 
   traverse_md_constants (print_md_constant, stdout);
 
   output_predicate_decls ();
+
+  puts("\n#endif /* GCC_INSN_CODES_H */");
 
-  printf ("\n#endif /* MAX_INSN_CODE */\n");
+  if (ferror (stdout) || fflush (stdout) || fclose (stdout))
+    return FATAL_EXIT_CODE;
 
-  fflush (stdout);
-  return (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+  return SUCCESS_EXIT_CODE;
 }
 
 /* Define this so we can link with print-rtl.o to get debug_rtx function.  */
===================================================================
Index: genconfig.c
--- genconfig.c	2000/05/28 02:17:58	1.39
+++ genconfig.c	2001/04/02 16:26:07
@@ -280,8 +280,10 @@ main (argc, argv)
   if (init_md_reader (argv[1]) != SUCCESS_EXIT_CODE)
     return (FATAL_EXIT_CODE);
 
-  printf ("/* Generated automatically by the program `genconfig'\n\
-from the machine description file `md'.  */\n\n");
+  puts ("/* Generated automatically by the program `genconfig'");
+  puts ("   from the machine description file `md'.  */\n");
+  puts ("#ifndef GCC_INSN_CONFIG_H");
+  puts ("#define GCC_INSN_CONFIG_H\n");
 
   /* Allow at least 10 operands for the sake of asm constructs.  */
   max_recog_operands = 9;  /* We will add 1 later.  */
@@ -356,8 +358,12 @@ from the machine description file `md'. 
       printf ("#define MAX_INSNS_PER_PEEP2 %d\n", max_insns_per_peep2);
     }
 
-  fflush (stdout);
-  return (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+  puts("\n#endif /* GCC_INSN_CONFIG_H */");
+
+  if (ferror (stdout) || fflush (stdout) || fclose (stdout))
+    return FATAL_EXIT_CODE;
+
+  return SUCCESS_EXIT_CODE;
 }
 
 /* Define this so we can link with print-rtl.o to get debug_rtx function.  */
===================================================================
Index: genflags.c
--- genflags.c	2001/03/22 18:48:29	1.36
+++ genflags.c	2001/04/02 16:26:07
@@ -233,8 +233,10 @@ main (argc, argv)
   if (init_md_reader (argv[1]) != SUCCESS_EXIT_CODE)
     return (FATAL_EXIT_CODE);
   
-  printf ("/* Generated automatically by the program `genflags'\n\
-from the machine description file `md'.  */\n\n");
+  puts ("/* Generated automatically by the program `genflags'");
+  puts ("   from the machine description file `md'.  */\n");
+  puts ("#ifndef GCC_INSN_FLAGS_H");
+  puts ("#define GCC_INSN_FLAGS_H\n");
 
   /* Read the machine description.  */
 
@@ -258,8 +260,12 @@ from the machine description file `md'. 
   for (insn_ptr = insns; *insn_ptr; insn_ptr++)
     gen_proto (*insn_ptr);
 
-  fflush (stdout);
-  return (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+  puts("\n#endif /* GCC_INSN_FLAGS_H */");
+
+  if (ferror (stdout) || fflush (stdout) || fclose (stdout))
+    return FATAL_EXIT_CODE;
+
+  return SUCCESS_EXIT_CODE;
 }
 
 /* Define this so we can link with print-rtl.o to get debug_rtx function.  */
===================================================================
Index: gengenrtl.c
--- gengenrtl.c	2001/03/27 15:31:45	1.41
+++ gengenrtl.c	2001/04/02 16:26:07
@@ -351,7 +351,10 @@ genheader ()
 {
   int i;
   const char **fmt;
-  
+
+  puts ("#ifndef GCC_GENRTL_H");
+  puts ("#define GCC_GENRTL_H\n");
+
   for (fmt = formats; *fmt; ++fmt)
     gendecl (*fmt);
 
@@ -360,6 +363,8 @@ genheader ()
   for (i = 0; i < NUM_RTX_CODE; i++)
     if (! special_format (defs[i].format))
       genmacro (i);
+
+  puts ("\n#endif /* GCC_GENRTL_H */");
 }
 
 /* Generate the text of the code file we write, genrtl.c.  */
@@ -419,7 +424,9 @@ main (argc, argv)
     genheader ();
   else
     gencode ();
+
+  if (ferror (stdout) || fflush (stdout) || fclose (stdout))
+    return FATAL_EXIT_CODE;
 
-  fflush (stdout);
-  return (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+  return SUCCESS_EXIT_CODE;
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]