struct Segments;
+struct LiteralPool;
struct {
struct FuncDesc* Func; /* Function descriptor */
struct Segments* Seg; /* Segments for this function */
+ struct LiteralPool* LitPool; /* Literal pool for this function */
} F;
} V;
# define SymIsRegVar(Sym) (((Sym)->Flags & (SC_REGISTER|SC_TYPE)) == SC_REGISTER)
#endif
+int SymIsOutputFunc (const SymEntry* Sym);
+/* Return true if this is a function that must be output */
+
#if defined(HAVE_INLINE)
INLINE const char* SymGetAsmName (const SymEntry* Sym)
/* Return the assembler label name for the symbol (beware: may be NULL!) */
# define SymGetAsmName(Sym) ((Sym)->AsmName)
#endif
-const DeclAttr* SymGetAttribute (const SymEntry* Sym, DeclAttrType AttrType);
+const DeclAttr* SymGetAttr (const SymEntry* Sym, DeclAttrType AttrType);
/* Return an attribute for this symbol or NULL if the attribute does not exist */
-void SymUseAttributes (SymEntry* Sym, struct Declaration* D);
+#if defined(HAVE_INLINE)
+INLINE int SymHasAttr (const SymEntry* Sym, DeclAttrType A)
+/* Return true if the symbol has the given attribute */
+{
+ return (SymGetAttr (Sym, A) != 0);
+}
+#else
+# define SymHasAttr(Sym, A) (SymGetAttr (Sym, A) != 0)
+#endif
+
+void SymUseAttr (SymEntry* Sym, struct Declaration* D);
/* Use the attributes from the declaration for this symbol */
void CvtRegVarToAuto (SymEntry* Sym);