From fc2224b26c73198d00eba714caf47bd2e3a5e63b Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Fri, 1 Jun 2007 14:31:45 -0400 Subject: Show the compiler how to optimize out the option parsing logic when nothing is using it. --- main.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index 3a50f395..8eaa282d 100644 --- a/main.c +++ b/main.c @@ -50,6 +50,18 @@ struct toy_list *toy_find(char *name) } } +// Figure out whether or not anything is using the option parsing logic, +// because the compiler can't figure out whether or not to optimize it away +// on its' own. + +#undef NEWTOY +#undef OLDTOY +#define NEWTOY(name, opts, flags) opts || +#define OLDTOY(name, oldname, opts, flags) opts || +static const NEED_OPTIONS = +#include "toys/toylist.h" +0; // Ends the opts || opts || opts... + void toy_init(struct toy_list *which, char *argv[]) { // Free old toys contents here? @@ -57,7 +69,7 @@ void toy_init(struct toy_list *which, char *argv[]) toys.which = which; toys.argv = argv; toys.exitval = 1; - if (which->options) get_optflags(); + if (NEED_OPTIONS && which->options) get_optflags(); else toys.optargs = argv+1; } -- cgit v1.2.3