+}
+
+void processNamedDecl (idDecl t)
+{
+ if (qtype_isUndefined (processingType))
+ {
+ processingType = qtype_create (ctype_int);
+ t = idDecl_fixBase (t, processingType);
+
+ voptgenerror (FLG_IMPTYPE,
+ message ("No type before declaration name (implicit int type): %q",
+ idDecl_unparse (t)),
+ g_currentloc);
+ }
+ else
+ {
+ t = idDecl_fixBase (t, processingType);
+ }
+
+ DPRINTF (("Declare: %s", idDecl_unparse (t)));
+
+ if (s_processingGlobals)
+ {
+ cstring id = idDecl_getName (t);
+ uentry ue = usymtab_lookupSafe (id);
+
+ if (!uentry_isValid (ue))
+ {
+ llerror (FLG_UNRECOG,
+ message ("Variable used in globals list is undeclared: %s", id));
+ }
+ else
+ {
+ if (!ctype_match (uentry_getType (ue), idDecl_getCtype (t)))
+ {
+ voptgenerror
+ (FLG_INCONDEFS,
+ message ("Variable %s used in globals list declared %s, "
+ "but listed as %s",
+ id, ctype_unparse (uentry_getType (ue)),
+ ctype_unparse (idDecl_getCtype (t))),
+ g_currentloc);
+ }
+ else
+ {
+ sRef sr = sRef_copy (uentry_getSref (ue));
+ reflectGlobalQualifiers (sr, idDecl_getQuals (t));
+ }
+ }
+ }
+ else if (s_processingVars)
+ {
+ processVariable (t);
+ }
+ else if (s_processingTypedef)