]> git.draconx.ca Git - cdecl99.git/commitdiff
libcdecl: Explicitly declare most scanner functions static.
authorNick Bowler <nbowler@draconx.ca>
Sun, 7 Jan 2024 16:02:06 +0000 (11:02 -0500)
committerNick Bowler <nbowler@draconx.ca>
Sun, 7 Jan 2024 21:00:07 +0000 (16:00 -0500)
We use barely any of the exported functions generated by flex.  As this
is going into a library the compiler can't eliminate any of these, even
if they are totally unused.

Just marking all unused functions static is sufficient to reduce the
size of the scanner by about 20% without any significant change to the
code.

src/scan.l

index bd1c5c5b267189f04dd13df3af3366391be5683a..73efdde88126075253484ca3d3c760a6959c7019 100644 (file)
  */
 
 #include <config.h>
+#include <stdio.h>
 #include "parse.h"
 
 /* Disable various generated code we don't use */
 #define YY_INPUT(a, b, c) do {} while (0)
 #define YY_NO_INPUT 1
 #define YY_NO_UNPUT 1
+
+/*
+ * The flex-generated scanner defines a huge pile of external functions of
+ * which we use almost none elsewhere.  Explicitly declare any unneeded
+ * functions static, which allows better optimization (especially wrt.
+ * dead code elimination).
+ */
+static struct yy_buffer_state *cdecl__yy_create_buffer(FILE *, int, void *);
+static struct yy_buffer_state *cdecl__yy_scan_bytes(const char *, int, void *);
+static struct yy_buffer_state *cdecl__yy_scan_buffer(char *, size_t, void *);
+static void cdecl__yy_switch_to_buffer(struct yy_buffer_state *, void *);
+static void cdecl__yy_flush_buffer(struct yy_buffer_state *, void *);
+static void yypush_buffer_state(struct yy_buffer_state *, void *);
+static void cdecl__yypop_buffer_state(void *);
+static void cdecl__yyrestart(FILE *, void *);
+static int cdecl__yylex_init(void **);
+
+static int cdecl__yyget_extra(void *);
+static YYLTYPE *cdecl__yyget_lloc(void *);
+static YYSTYPE *cdecl__yyget_lval(void *);
+static char *cdecl__yyget_text(void *);
+static FILE *cdecl__yyget_out(void *);
+static FILE *cdecl__yyget_in(void *);
+static int cdecl__yyget_debug(void *);
+static int cdecl__yyget_lineno(void *);
+static int cdecl__yyget_column(void *);
+static int cdecl__yyget_leng(void *);
+
+static void cdecl__yyset_extra(int, void *);
+static void cdecl__yyset_lloc(YYLTYPE *, void *);
+static void cdecl__yyset_lval(YYSTYPE *, void *);
+static void cdecl__yyset_in(FILE *, void *);
+static void cdecl__yyset_out(FILE *, void *);
+static void cdecl__yyset_debug(int, void *);
+static void cdecl__yyset_lineno(int, void *);
+static void cdecl__yyset_column(int, void *);
+static void cdecl__yyset_leng(int, void *);
+
+static void *cdecl__yyrealloc(void *, size_t, void *);
+static void *cdecl__yyalloc(size_t, void *);
+static void cdecl__yyfree(void *, void *);
 }
 
 %option nodefault noyywrap bison-locations reentrant never-interactive