]> git.sur5r.net Git - cc65/blobdiff - src/cc65/symentry.c
Allow any number of optional braces around all initializers as required by the standard
[cc65] / src / cc65 / symentry.c
index 8882cdb627fbdf1ad225966eaf4c8f20277186fb..bac584becfdb56aed0262a335d4bb3d617cc347f 100644 (file)
@@ -94,22 +94,22 @@ void DumpSymEntry (FILE* F, const SymEntry* E)
        unsigned            Val;
     } Flags [] = {
        /* Beware: Order is important! */
-       { "SC_TYPEDEF",     SC_TYPEDEF  },
-       { "SC_SFLD",        SC_SFLD     },
-       { "SC_STRUCT",      SC_STRUCT   },
-       { "SC_AUTO",        SC_AUTO     },
-       { "SC_REGISTER",    SC_REGISTER },
-       { "SC_STATIC",      SC_STATIC   },
-       { "SC_EXTERN",      SC_EXTERN   },
-       { "SC_ENUM",        SC_ENUM     },
-       { "SC_CONST",       SC_CONST    },
-       { "SC_LABEL",       SC_LABEL    },
-       { "SC_PARAM",       SC_PARAM    },
-       { "SC_FUNC",        SC_FUNC     },
-       { "SC_STORAGE",     SC_STORAGE  },
-       { "SC_DEF",         SC_DEF      },
-       { "SC_REF",         SC_REF      },
-       { "SC_ZEROPAGE",    SC_ZEROPAGE },
+       { "SC_TYPEDEF",     SC_TYPEDEF          },
+               { "SC_STRUCTFIELD", SC_STRUCTFIELD      },
+       { "SC_STRUCT",      SC_STRUCT           },
+       { "SC_AUTO",        SC_AUTO             },
+       { "SC_REGISTER",    SC_REGISTER         },
+       { "SC_STATIC",      SC_STATIC           },
+       { "SC_EXTERN",      SC_EXTERN           },
+       { "SC_ENUM",        SC_ENUM             },
+       { "SC_CONST",       SC_CONST            },
+       { "SC_LABEL",       SC_LABEL            },
+       { "SC_PARAM",       SC_PARAM            },
+       { "SC_FUNC",        SC_FUNC             },
+       { "SC_STORAGE",     SC_STORAGE          },
+       { "SC_DEF",         SC_DEF              },
+       { "SC_REF",         SC_REF              },
+       { "SC_ZEROPAGE",    SC_ZEROPAGE         },
     };
 
     unsigned I;
@@ -149,10 +149,14 @@ void DumpSymEntry (FILE* F, const SymEntry* E)
 
 
 
-int IsTypeDef (const SymEntry* E)
-/* Return true if the given entry is a typedef entry */
+void CvtRegVarToAuto (SymEntry* Sym)
+/* Convert a register variable to an auto variable */
 {
-    return ((E->Flags & SC_TYPEDEF) == SC_TYPEDEF);
+    /* Change the storage class */
+    Sym->Flags = (Sym->Flags & ~(SC_REGISTER | SC_STATIC | SC_EXTERN)) | SC_AUTO;
+
+    /* Transfer the stack offset from register save area to actual offset */
+    Sym->V.Offs = Sym->V.R.SaveOffs;
 }