summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
fbccf8c)
* as/mcs51/lkmain.c (link_main): fixed warning
* device/include/stdbool.h: ds390 has no advanced bit support yet
* src/SDCC.y: use SPEC_SHORT and renamed _signed to b_signed
* src/SDCCsymt.c: use SPEC_SHORT and renamed _signed to b_signed
* src/SDCCsymt.h (struct specifier): renamed _xxx bitfields to b_xxx
and updated their macros
* src/SDCCval.c (constVal): updated comment for renamed b_long
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3874
4a8a32a2-be11-0410-ad9d-
d568d2c75423
+2005-08-23 Maarten Brock <sourceforge.brock AT dse.nl>
+
+ * as/mcs51/aslink.h: completed lkrloc.c prototypes
+ * as/mcs51/lkmain.c (link_main): fixed warning
+ * device/include/stdbool.h: ds390 has no advanced bit support yet
+ * src/SDCC.y: use SPEC_SHORT and renamed _signed to b_signed
+ * src/SDCCsymt.c: use SPEC_SHORT and renamed _signed to b_signed
+ * src/SDCCsymt.h (struct specifier): renamed _xxx bitfields to b_xxx
+ and updated their macros
+ * src/SDCCval.c (constVal): updated comment for renamed b_long
+
2005-08-22 Maarten Brock <sourceforge.brock AT dse.nl>
* as/mcs51/asdata.c: changed ctype['['] to BINOP
2005-08-22 Maarten Brock <sourceforge.brock AT dse.nl>
* as/mcs51/asdata.c: changed ctype['['] to BINOP
extern VOID slew();
/* lkrloc.c */
extern VOID slew();
/* lkrloc.c */
-extern Addr_T adb_b();
-extern Addr_T adb_bit();
-extern Addr_T adb_hi();
-extern Addr_T adb_lo();
-extern Addr_T adb_24_bit(Addr_T v, int i);
+extern Addr_T adb_b(register Addr_T v, register int i);
+extern Addr_T adb_bit(register Addr_T v, register int i);
+extern Addr_T adb_hi(Addr_T v, int i);
+extern Addr_T adb_lo(Addr_T v, int i);
+extern Addr_T adb_24_bit(register Addr_T v, register int i);
extern Addr_T adb_24_hi(Addr_T v, int i);
extern Addr_T adb_24_mid(Addr_T v, int i);
extern Addr_T adb_24_lo(Addr_T v, int i);
extern Addr_T adb_24_hi(Addr_T v, int i);
extern Addr_T adb_24_mid(Addr_T v, int i);
extern Addr_T adb_24_lo(Addr_T v, int i);
-extern Addr_T adw_w();
-extern Addr_T adw_24(Addr_T, int);
-extern Addr_T adw_hi();
-extern Addr_T adw_lo();
-extern Addr_T evword();
-extern VOID rele();
-extern VOID reloc();
-extern VOID relt();
-extern VOID relr();
-extern VOID relp();
-extern VOID relerr();
+extern Addr_T adw_w(register Addr_T v, register int i);
+extern Addr_T adw_24(Addr_T v, int i);
+extern Addr_T adw_hi(Addr_T v, int i);
+extern Addr_T adw_lo(Addr_T v, int i);
+extern Addr_T evword(VOID);
+extern VOID rele(VOID);
+extern VOID reloc(char c);
+extern VOID relt(VOID);
+extern VOID relr(VOID);
+extern VOID relp(VOID);
+extern VOID relerr(char *str);
-extern VOID errdmp();
-extern VOID relerp();
-extern VOID erpdmp();
-extern VOID prntval();
+extern VOID errdmp(FILE *fptr, char *str);
+extern VOID relerp(char *str);
+extern VOID erpdmp(FILE *fptr, char *str);
+extern VOID prntval(FILE *fptr, Addr_T v);
extern int lastExtendedAddress;
/* lklibr.c */
extern int lastExtendedAddress;
/* lklibr.c */
if ((c=endline()) == 0) { return; }
switch (c) {
if ((c=endline()) == 0) { return; }
switch (c) {
#define false 0
#define __bool_true_false_are_defined 1
#define false 0
#define __bool_true_false_are_defined 1
-#if defined (SDCC_hc08) || defined (SDCC_z80) || defined (SDCC_gbz80)
+#if defined (SDCC_ds390) || defined (SDCC_hc08) || defined (SDCC_z80) || defined (SDCC_gbz80)
#define BOOL char
#else
#define BOOL __bit
#define BOOL char
#else
#define BOOL __bit
- : CHAR {
- $$=newLink(SPECIFIER);
- SPEC_NOUN($$) = V_CHAR ;
- ignoreTypedefType = 1;
- }
- | SHORT {
- $$=newLink(SPECIFIER);
- $$->select.s._short = 1 ;
- ignoreTypedefType = 1;
- }
- | INT {
- $$=newLink(SPECIFIER);
- SPEC_NOUN($$) = V_INT ;
- ignoreTypedefType = 1;
- }
- | LONG {
- $$=newLink(SPECIFIER);
- SPEC_LONG($$) = 1 ;
- ignoreTypedefType = 1;
- }
- | SIGNED {
- $$=newLink(SPECIFIER);
- $$->select.s._signed = 1;
- ignoreTypedefType = 1;
- }
+ : CHAR {
+ $$=newLink(SPECIFIER);
+ SPEC_NOUN($$) = V_CHAR ;
+ ignoreTypedefType = 1;
+ }
+ | SHORT {
+ $$=newLink(SPECIFIER);
+ SPEC_SHORT($$) = 1 ;
+ ignoreTypedefType = 1;
+ }
+ | INT {
+ $$=newLink(SPECIFIER);
+ SPEC_NOUN($$) = V_INT ;
+ ignoreTypedefType = 1;
+ }
+ | LONG {
+ $$=newLink(SPECIFIER);
+ SPEC_LONG($$) = 1 ;
+ ignoreTypedefType = 1;
+ }
+ | SIGNED {
+ $$=newLink(SPECIFIER);
+ $$->select.s.b_signed = 1;
+ ignoreTypedefType = 1;
+ }
- $$=newLink(SPECIFIER);
- SPEC_USIGN($$) = 1 ;
- ignoreTypedefType = 1;
- }
- | VOID {
- $$=newLink(SPECIFIER);
- SPEC_NOUN($$) = V_VOID ;
- ignoreTypedefType = 1;
- }
- | CONST {
- $$=newLink(SPECIFIER);
- SPEC_CONST($$) = 1;
- }
+ $$=newLink(SPECIFIER);
+ SPEC_USIGN($$) = 1 ;
+ ignoreTypedefType = 1;
+ }
+ | VOID {
+ $$=newLink(SPECIFIER);
+ SPEC_NOUN($$) = V_VOID ;
+ ignoreTypedefType = 1;
+ }
+ | CONST {
+ $$=newLink(SPECIFIER);
+ SPEC_CONST($$) = 1;
+ }
- $$=newLink(SPECIFIER);
- SPEC_VOLATILE($$) = 1 ;
- }
- | FLOAT {
- $$=newLink(SPECIFIER);
- SPEC_NOUN($$) = V_FLOAT;
- ignoreTypedefType = 1;
- }
- | FIXED16X16 {
- $$=newLink(SPECIFIER);
- SPEC_NOUN($$) = V_FIXED16X16;
- ignoreTypedefType = 1;
- }
+ $$=newLink(SPECIFIER);
+ SPEC_VOLATILE($$) = 1 ;
+ }
+ | FLOAT {
+ $$=newLink(SPECIFIER);
+ SPEC_NOUN($$) = V_FLOAT;
+ ignoreTypedefType = 1;
+ }
+ | FIXED16X16 {
+ $$=newLink(SPECIFIER);
+ SPEC_NOUN($$) = V_FIXED16X16;
+ ignoreTypedefType = 1;
+ }
| XDATA {
$$ = newLink (SPECIFIER);
SPEC_SCLS($$) = S_XDATA ;
| XDATA {
$$ = newLink (SPECIFIER);
SPEC_SCLS($$) = S_XDATA ;
$$ = newLink (SPECIFIER) ;
SPEC_SCLS($$) = S_CODE ;
}
$$ = newLink (SPECIFIER) ;
SPEC_SCLS($$) = S_CODE ;
}
$$ = newLink (SPECIFIER) ;
SPEC_SCLS($$) = S_EEPROM ;
}
$$ = newLink (SPECIFIER) ;
SPEC_SCLS($$) = S_EEPROM ;
}
$$ = newLink (SPECIFIER);
SPEC_SCLS($$) = S_PDATA ;
}
$$ = newLink (SPECIFIER);
SPEC_SCLS($$) = S_PDATA ;
}
- | BIT {
- $$=newLink(SPECIFIER);
- SPEC_NOUN($$) = V_BIT ;
- SPEC_SCLS($$) = S_BIT ;
- SPEC_BLEN($$) = 1;
- SPEC_BSTR($$) = 0;
- ignoreTypedefType = 1;
- }
+ | BIT {
+ $$=newLink(SPECIFIER);
+ SPEC_NOUN($$) = V_BIT ;
+ SPEC_SCLS($$) = S_BIT ;
+ SPEC_BLEN($$) = 1;
+ SPEC_BSTR($$) = 0;
+ ignoreTypedefType = 1;
+ }
| struct_or_union_specifier {
uselessDecl = FALSE;
$$ = $1 ;
| struct_or_union_specifier {
uselessDecl = FALSE;
$$ = $1 ;
}
| enum_specifier {
cenum = NULL ;
}
| enum_specifier {
cenum = NULL ;
sym_link *p ;
sym = findSym(TypedefTab,NULL,$1) ;
$$ = p = copyLinkChain(sym->type);
sym_link *p ;
sym = findSym(TypedefTab,NULL,$1) ;
$$ = p = copyLinkChain(sym->type);
- SPEC_TYPEDEF(getSpec(p)) = 0;
+ SPEC_TYPEDEF(getSpec(p)) = 0;
ignoreTypedefType = 1;
}
| sfr_reg_bit
ignoreTypedefType = 1;
}
| sfr_reg_bit
$$ = newLink(SPECIFIER) ;
SPEC_NOUN($$) = V_SBIT;
SPEC_SCLS($$) = S_SBIT;
$$ = newLink(SPECIFIER) ;
SPEC_NOUN($$) = V_SBIT;
SPEC_SCLS($$) = S_SBIT;
- SPEC_BLEN($$) = 1;
- SPEC_BSTR($$) = 0;
- ignoreTypedefType = 1;
+ SPEC_BLEN($$) = 1;
+ SPEC_BSTR($$) = 0;
+ ignoreTypedefType = 1;
SPEC_NOUN($$) = V_CHAR;
SPEC_SCLS($$) = S_SFR ;
SPEC_USIGN($$) = 1 ;
SPEC_NOUN($$) = V_CHAR;
SPEC_SCLS($$) = S_SFR ;
SPEC_USIGN($$) = 1 ;
}
| SFR BANKED {
$$ = newLink(SPECIFIER) ;
}
| SFR BANKED {
$$ = newLink(SPECIFIER) ;
SPEC_NOUN($$) = V_CHAR;
SPEC_SCLS($$) = S_SFR ;
SPEC_USIGN($$) = 1 ;
SPEC_NOUN($$) = V_CHAR;
SPEC_SCLS($$) = S_SFR ;
SPEC_USIGN($$) = 1 ;
{
case V_INT: {
if (SPEC_LONG(sl)) return "long";
{
case V_INT: {
if (SPEC_LONG(sl)) return "long";
- if (sl->select.s._short) return "short";
+ if (SPEC_SHORT(sl)) return "short";
return "int";
}
case V_FLOAT: return "float";
return "int";
}
case V_FLOAT: return "float";
SPEC_NOUN(etype)==V_FIXED16X16 ||
SPEC_NOUN(etype)==V_DOUBLE ||
SPEC_NOUN(etype)==V_VOID) &&
SPEC_NOUN(etype)==V_FIXED16X16 ||
SPEC_NOUN(etype)==V_DOUBLE ||
SPEC_NOUN(etype)==V_VOID) &&
- (etype->select.s._short || SPEC_LONG(etype))) {
+ (SPEC_SHORT(etype) || SPEC_LONG(etype))) {
// long or short for char float double or void
werror (E_LONG_OR_SHORT_INVALID, noun, name);
}
// long or short for char float double or void
werror (E_LONG_OR_SHORT_INVALID, noun, name);
}
SPEC_NOUN(etype)==V_FIXED16X16 ||
SPEC_NOUN(etype)==V_DOUBLE ||
SPEC_NOUN(etype)==V_VOID) &&
SPEC_NOUN(etype)==V_FIXED16X16 ||
SPEC_NOUN(etype)==V_DOUBLE ||
SPEC_NOUN(etype)==V_VOID) &&
- (etype->select.s._signed || SPEC_USIGN(etype))) {
+ (etype->select.s.b_signed || SPEC_USIGN(etype))) {
// signed or unsigned for float double or void
werror (E_SIGNED_OR_UNSIGNED_INVALID, noun, name);
}
// special case for "short"
// signed or unsigned for float double or void
werror (E_SIGNED_OR_UNSIGNED_INVALID, noun, name);
}
// special case for "short"
- if (etype->select.s._short) {
+ if (SPEC_SHORT(etype)) {
SPEC_NOUN(etype) = options.shortis8bits ? V_CHAR : V_INT;
SPEC_NOUN(etype) = options.shortis8bits ? V_CHAR : V_INT;
- etype->select.s._short = 0;
/* a "plain" int bitfield is unsigned */
if (SPEC_NOUN(etype)==V_BIT ||
SPEC_NOUN(etype)==V_SBIT) {
/* a "plain" int bitfield is unsigned */
if (SPEC_NOUN(etype)==V_BIT ||
SPEC_NOUN(etype)==V_SBIT) {
- if (!etype->select.s._signed)
+ if (!etype->select.s.b_signed)
- if (etype->select.s._signed && SPEC_USIGN(etype)) {
+ if (etype->select.s.b_signed && SPEC_USIGN(etype)) {
// signed AND unsigned
werror (E_SIGNED_AND_UNSIGNED_INVALID, noun, name);
}
// signed AND unsigned
werror (E_SIGNED_AND_UNSIGNED_INVALID, noun, name);
}
- if (etype->select.s._short && SPEC_LONG(etype)) {
+ if (SPEC_SHORT(etype) && SPEC_LONG(etype)) {
// short AND long
werror (E_LONG_AND_SHORT_INVALID, noun, name);
}
// short AND long
werror (E_LONG_AND_SHORT_INVALID, noun, name);
}
// but there are more important thing right now
SPEC_LONG (dest) |= SPEC_LONG (src);
// but there are more important thing right now
SPEC_LONG (dest) |= SPEC_LONG (src);
- dest->select.s._short|=src->select.s._short;
+ SPEC_SHORT(dest) |= SPEC_SHORT(src);
SPEC_USIGN (dest) |= SPEC_USIGN (src);
SPEC_USIGN (dest) |= SPEC_USIGN (src);
- dest->select.s._signed|=src->select.s._signed;
+ dest->select.s.b_signed|=src->select.s.b_signed;
SPEC_STAT (dest) |= SPEC_STAT (src);
SPEC_EXTR (dest) |= SPEC_EXTR (src);
SPEC_CONST(dest) |= SPEC_CONST (src);
SPEC_STAT (dest) |= SPEC_STAT (src);
SPEC_EXTR (dest) |= SPEC_EXTR (src);
SPEC_CONST(dest) |= SPEC_CONST (src);
reType = getSpec (rType);
/* avoid conflicting types */
reType = getSpec (rType);
/* avoid conflicting types */
- reType->select.s._signed = 0;
+ reType->select.s.b_signed = 0;
/* if result is a literal then make not so */
if (IS_LITERAL (reType))
/* if result is a literal then make not so */
if (IS_LITERAL (reType))
NOUN noun; /* CHAR INT STRUCTURE LABEL */
STORAGE_CLASS sclass; /* REGISTER,AUTO,FIX,CONSTANT */
struct memmap *oclass; /* output storage class */
NOUN noun; /* CHAR INT STRUCTURE LABEL */
STORAGE_CLASS sclass; /* REGISTER,AUTO,FIX,CONSTANT */
struct memmap *oclass; /* output storage class */
- unsigned _long:1; /* 1=long */
- unsigned _short:1; /* 1=short int */
- unsigned _unsigned:1; /* 1=unsigned, 0=signed */
- unsigned _signed:1; /* just for sanity checks only*/
- unsigned _static:1; /* 1=static keyword found */
- unsigned _extern:1; /* 1=extern found */
- unsigned _absadr:1; /* absolute address specfied */
- unsigned _volatile:1; /* is marked as volatile */
- unsigned _const:1; /* is a constant */
- unsigned _typedef:1; /* is typedefed */
- unsigned _isregparm:1; /* is the first parameter */
- unsigned _isenum:1; /* is an enumerated type */
+ unsigned b_long:1; /* 1=long */
+ unsigned b_short:1; /* 1=short int */
+ unsigned b_unsigned:1; /* 1=unsigned, 0=signed */
+ unsigned b_signed:1; /* just for sanity checks only*/
+ unsigned b_static:1; /* 1=static keyword found */
+ unsigned b_extern:1; /* 1=extern found */
+ unsigned b_absadr:1; /* absolute address specfied */
+ unsigned b_volatile:1; /* is marked as volatile */
+ unsigned b_const:1; /* is a constant */
+ unsigned b_typedef:1; /* is typedefed */
+ unsigned b_isregparm:1; /* is the first parameter */
+ unsigned b_isenum:1; /* is an enumerated type */
unsigned _addr; /* address of symbol */
unsigned _stack; /* stack offset for stacked v */
unsigned _bitStart; /* bit start position */
unsigned _addr; /* address of symbol */
unsigned _stack; /* stack offset for stacked v */
unsigned _bitStart; /* bit start position */
IFFUNC_BANKED(x)))
#define SPEC_NOUN(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.noun
IFFUNC_BANKED(x)))
#define SPEC_NOUN(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.noun
-#define SPEC_LONG(x) validateLink(x, "SPEC_LONG", #x, SPECIFIER, __FILE__, __LINE__)->select.s._long
-#define SPEC_SHORT(x) validateLink(x, "SPEC_LONG", #x, SPECIFIER, __FILE__, __LINE__)->select.s._short
-#define SPEC_USIGN(x) validateLink(x, "SPEC_USIGN", #x, SPECIFIER, __FILE__, __LINE__)->select.s._unsigned
+#define SPEC_LONG(x) validateLink(x, "SPEC_LONG", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_long
+#define SPEC_SHORT(x) validateLink(x, "SPEC_LONG", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_short
+#define SPEC_USIGN(x) validateLink(x, "SPEC_USIGN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_unsigned
#define SPEC_SCLS(x) validateLink(x, "SPEC_SCLS", #x, SPECIFIER, __FILE__, __LINE__)->select.s.sclass
#define SPEC_SCLS(x) validateLink(x, "SPEC_SCLS", #x, SPECIFIER, __FILE__, __LINE__)->select.s.sclass
-#define SPEC_ENUM(x) validateLink(x, "SPEC_ENUM", #x, SPECIFIER, __FILE__, __LINE__)->select.s._isenum
+#define SPEC_ENUM(x) validateLink(x, "SPEC_ENUM", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_isenum
#define SPEC_OCLS(x) validateLink(x, "SPEC_OCLS", #x, SPECIFIER, __FILE__, __LINE__)->select.s.oclass
#define SPEC_OCLS(x) validateLink(x, "SPEC_OCLS", #x, SPECIFIER, __FILE__, __LINE__)->select.s.oclass
-#define SPEC_STAT(x) validateLink(x, "SPEC_STAT", #x, SPECIFIER, __FILE__, __LINE__)->select.s._static
-#define SPEC_EXTR(x) validateLink(x, "SPEC_EXTR", #x, SPECIFIER, __FILE__, __LINE__)->select.s._extern
+#define SPEC_STAT(x) validateLink(x, "SPEC_STAT", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_static
+#define SPEC_EXTR(x) validateLink(x, "SPEC_EXTR", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_extern
#define SPEC_CODE(x) validateLink(x, "SPEC_CODE", #x, SPECIFIER, __FILE__, __LINE__)->select.s._codesg
#define SPEC_CODE(x) validateLink(x, "SPEC_CODE", #x, SPECIFIER, __FILE__, __LINE__)->select.s._codesg
-#define SPEC_ABSA(x) validateLink(x, "SPEC_ABSA", #x, SPECIFIER, __FILE__, __LINE__)->select.s._absadr
+#define SPEC_ABSA(x) validateLink(x, "SPEC_ABSA", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_absadr
#define SPEC_BANK(x) validateLink(x, "SPEC_BANK", #x, SPECIFIER, __FILE__, __LINE__)->select.s._regbank
#define SPEC_ADDR(x) validateLink(x, "SPEC_ADDR", #x, SPECIFIER, __FILE__, __LINE__)->select.s._addr
#define SPEC_STAK(x) validateLink(x, "SPEC_STAK", #x, SPECIFIER, __FILE__, __LINE__)->select.s._stack
#define SPEC_BANK(x) validateLink(x, "SPEC_BANK", #x, SPECIFIER, __FILE__, __LINE__)->select.s._regbank
#define SPEC_ADDR(x) validateLink(x, "SPEC_ADDR", #x, SPECIFIER, __FILE__, __LINE__)->select.s._addr
#define SPEC_STAK(x) validateLink(x, "SPEC_STAK", #x, SPECIFIER, __FILE__, __LINE__)->select.s._stack
* _bitStart field instead of defining a new field.
*/
#define SPEC_ISR_SAVED_BANKS(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s._bitStart
* _bitStart field instead of defining a new field.
*/
#define SPEC_ISR_SAVED_BANKS(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s._bitStart
-#define SPEC_VOLATILE(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s._volatile
-#define SPEC_CONST(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s._const
+#define SPEC_VOLATILE(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_volatile
+#define SPEC_CONST(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_const
#define SPEC_STRUCT(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.v_struct
#define SPEC_STRUCT(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.v_struct
-#define SPEC_TYPEDEF(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s._typedef
-#define SPEC_REGPARM(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s._isregparm
+#define SPEC_TYPEDEF(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_typedef
+#define SPEC_REGPARM(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.b_isregparm
#define SPEC_ARGREG(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.argreg
/* type check macros */
#define SPEC_ARGREG(x) validateLink(x, "SPEC_NOUN", #x, SPECIFIER, __FILE__, __LINE__)->select.s.argreg
/* type check macros */
#define IS_GENPTR(x) (IS_DECL(x) && DCL_TYPE(x) == GPOINTER)
#define IS_FUNCPTR(x) (IS_DECL(x) && (DCL_TYPE(x) == CPOINTER || DCL_TYPE(x) == GPOINTER) && IS_FUNC(x->next))
#define IS_FUNC(x) (IS_DECL(x) && DCL_TYPE(x) == FUNCTION)
#define IS_GENPTR(x) (IS_DECL(x) && DCL_TYPE(x) == GPOINTER)
#define IS_FUNCPTR(x) (IS_DECL(x) && (DCL_TYPE(x) == CPOINTER || DCL_TYPE(x) == GPOINTER) && IS_FUNC(x->next))
#define IS_FUNC(x) (IS_DECL(x) && DCL_TYPE(x) == FUNCTION)
-#define IS_LONG(x) (IS_SPEC(x) && x->select.s._long)
-#define IS_UNSIGNED(x) (IS_SPEC(x) && x->select.s._unsigned)
-#define IS_TYPEDEF(x)(IS_SPEC(x) && x->select.s._typedef)
+#define IS_LONG(x) (IS_SPEC(x) && x->select.s.b_long)
+#define IS_UNSIGNED(x) (IS_SPEC(x) && x->select.s.b_unsigned)
+#define IS_TYPEDEF(x)(IS_SPEC(x) && x->select.s.b_typedef)
#define IS_CONSTANT(x) (!x ? 0 : \
IS_SPEC(x) ? \
#define IS_CONSTANT(x) (!x ? 0 : \
IS_SPEC(x) ? \
+ x->select.s.b_const : \
x->select.d.ptr_const)
#define IS_STRUCT(x) (IS_SPEC(x) && x->select.s.noun == V_STRUCT)
x->select.d.ptr_const)
#define IS_STRUCT(x) (IS_SPEC(x) && x->select.s.noun == V_STRUCT)
-#define IS_ABSOLUTE(x) (IS_SPEC(x) && x->select.s._absadr )
+#define IS_ABSOLUTE(x) (IS_SPEC(x) && x->select.s.b_absadr )
#define IS_REGISTER(x) (IS_SPEC(x) && SPEC_SCLS(x) == S_REGISTER)
#define IS_RENT(x) (IS_SPEC(x) && x->select.s._reent )
#define IS_STATIC(x) (IS_SPEC(x) && SPEC_STAT(x))
#define IS_INT(x) (IS_SPEC(x) && x->select.s.noun == V_INT)
#define IS_VOID(x) (IS_SPEC(x) && x->select.s.noun == V_VOID)
#define IS_CHAR(x) (IS_SPEC(x) && x->select.s.noun == V_CHAR)
#define IS_REGISTER(x) (IS_SPEC(x) && SPEC_SCLS(x) == S_REGISTER)
#define IS_RENT(x) (IS_SPEC(x) && x->select.s._reent )
#define IS_STATIC(x) (IS_SPEC(x) && SPEC_STAT(x))
#define IS_INT(x) (IS_SPEC(x) && x->select.s.noun == V_INT)
#define IS_VOID(x) (IS_SPEC(x) && x->select.s.noun == V_VOID)
#define IS_CHAR(x) (IS_SPEC(x) && x->select.s.noun == V_CHAR)
-#define IS_EXTERN(x) (IS_SPEC(x) && x->select.s._extern)
+#define IS_EXTERN(x) (IS_SPEC(x) && x->select.s.b_extern)
#define IS_VOLATILE(x) (!x ? 0 : \
IS_SPEC(x) ? \
#define IS_VOLATILE(x) (!x ? 0 : \
IS_SPEC(x) ? \
- x->select.s._volatile : \
+ x->select.s.b_volatile : \
x->select.d.ptr_volatile)
#define IS_INTEGRAL(x) (IS_SPEC(x) && (x->select.s.noun == V_INT || \
x->select.s.noun == V_CHAR || \
x->select.d.ptr_volatile)
#define IS_INTEGRAL(x) (IS_SPEC(x) && (x->select.s.noun == V_INT || \
x->select.s.noun == V_CHAR || \
}
/* Setup the flags first */
}
/* Setup the flags first */
- /* set the _long flag if 'lL' is found */
+ /* set the b_long flag if 'lL' is found */
if (strchr (s, 'l') || strchr (s, 'L')) {
SPEC_NOUN (val->type) = V_INT;
SPEC_LONG (val->type) = 1;
if (strchr (s, 'l') || strchr (s, 'L')) {
SPEC_NOUN (val->type) = V_INT;
SPEC_LONG (val->type) = 1;