ref: c3bb2c04976c4e4ff610aec7b593c192e55a84b2
parent: 0a859705bf32bb1462671e03b2b8e932f3d287e4
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Tue Apr 5 13:40:34 EDT 2022
cc1: Simplify icpp() It is possible to use a single array to define all the predefined macros instead of splitting between values or not valued macros.
--- a/src/cmd/cc/cc1/cpp.c
+++ b/src/cmd/cc/cc1/cpp.c
@@ -45,14 +45,22 @@
void
icpp(void)
{
- static char sdate[14], stime[11];
struct tm *tm;
time_t t;
- static char **bp, *list[] = {
- "__STDC__",
- "__STDC_HOSTED__",
- "__SCC__",
- NULL
+ static char sdate[14], stime[11];
+ static struct {
+ char *name;
+ char *value;
+ } *bp, list[] = {
+ {"__STDC__", "1"},
+ {"__STDC_HOSTED__", "1"},
+ {"__SCC__", "1"},
+ {"__DATE__", sdate},
+ {"__TIME__", stime},
+ {"__STDC_VERSION__", STDC_VERSION},
+ {"__LINE__", NULL},
+ {"__FILE__", NULL},
+ {NULL, NULL}
};
t = time(NULL);
@@ -59,17 +67,12 @@
tm = localtime(&t);
strftime(sdate, sizeof(sdate), "\"%b %d %Y\"", tm);
strftime(stime, sizeof(stime), "\"%H:%M:%S\"", tm);
- defdefine("__DATE__", sdate, "built-in");
- defdefine("__TIME__", stime, "built-in");
- defdefine("__STDC_VERSION__", STDC_VERSION, "built-in");
- defdefine("__LINE__", NULL, "built-in");
- defdefine("__FILE__", NULL, "built-in");
+ for (bp = list; bp->name; ++bp)
+ defdefine(bp->name, bp->value, "built-in");
+
symline = lookup(NS_CPP, "__LINE__", ALLOC);
symfile = lookup(NS_CPP, "__FILE__", ALLOC);
-
- for (bp = list; *bp; ++bp)
- defdefine(*bp, "1", "built-in");
ncmdlines = 0;
}