Fix unused-function warnings in lex output
authorPeter Maydell <pmaydell@chiark.greenend.org.uk>
Mon, 20 Dec 2010 21:13:32 +0000 (21:13 +0000)
committerPeter Maydell <pmaydell@chiark.greenend.org.uk>
Mon, 20 Dec 2010 21:13:32 +0000 (21:13 +0000)
Fix the unused-function warnings in the output of lex. In particular, we
silence a warning about yyunput being static but unused by exposing it as
a global function. This costs us a few hundred bytes in the binary but
the other available solutions are flex-specific or more complicated.
YY_NO_UNPUT used to silence this but no longer works in recent flex.
On the other hand YY_NO_INPUT does work to silence warnings about input().

Signed-off-by: Peter Maydell <pmaydell@chiark.greenend.org.uk>

sbr/dtimep.lex

index c35c9be..0191086 100644 (file)
@@ -17,7 +17,7 @@
 #define yywrap() 1
 #define YY_SKIP_YYWRAP
 
-#define YY_NO_UNPUT
+#define YY_NO_INPUT
 
   /* This is the tricky thing that makes this function cool.  We
    *  replace the traditional int yylex(void) declaration with our
@@ -398,3 +398,16 @@ nl      [ \t\n()]
 {nl}("hdt"|"HDT")                  { INIT(); SETDST(); SETZONE(-1000);
                                       yyterminate(); }
 .|\n
+
+%%
+/* This is a portable way to squash a warning about the yyunput()
+ * function being static but never used. It costs us a tiny amount
+ * of extra code in the binary but the other options are:
+ *  "%option nounput" which is flex-specific
+ *  makefile hackery just to compile dtimep.c with different flags
+ */
+void dtimep_yyunput(int c)
+{
+    unput(c);
+}
+