#include "xmalloc.h"
/* cc65 */
+#include "anonname.h"
#include "symentry.h"
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;
-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;
}
void ChangeAsmName (SymEntry* Entry, const char* NewAsmName)
-/* Change the assembler name of the symbol */
+/* Change the assembler name of the symbol */
{
xfree (Entry->AsmName);
Entry->AsmName = xstrdup (NewAsmName);
+int HasAnonName (const SymEntry* Entry)
+/* Return true if the symbol entry has an anonymous name */
+{
+ return IsAnonName (Entry->Name);
+}
+
+
+