diff options
Diffstat (limited to 'src/cmd/cc/cc.h')
-rw-r--r-- | src/cmd/cc/cc.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/cmd/cc/cc.h b/src/cmd/cc/cc.h index c8de94120..af2339c97 100644 --- a/src/cmd/cc/cc.h +++ b/src/cmd/cc/cc.h @@ -52,9 +52,12 @@ typedef struct Hist Hist; typedef struct Term Term; typedef struct Init Init; typedef struct Bits Bits; +typedef struct Bvec Bvec; typedef struct Dynimp Dynimp; typedef struct Dynexp Dynexp; +typedef Rune TRune; /* target system type */ + #define BUFSIZ 8192 #define NSYMB 500 #define NHASH 1024 @@ -74,6 +77,12 @@ struct Bits uint32 b[BITS]; }; +struct Bvec +{ + int32 n; // number of bits + uint32 b[]; +}; + struct Node { Node* left; @@ -85,7 +94,7 @@ struct Node double fconst; /* fp constant */ vlong vconst; /* non fp const */ char* cstring; /* character string */ - ushort* rstring; /* rune string */ + TRune* rstring; /* rune string */ Sym* sym; Type* type; @@ -367,6 +376,9 @@ enum TFILE, TOLD, NALLTYPES, + + /* adapt size of Rune to target system's size */ + TRUNE = sizeof(TRune)==4? TUINT: TUSHORT, }; enum { @@ -746,6 +758,12 @@ int beq(Bits, Bits); int bset(Bits, uint); /* + * bv.c + */ +Bvec* bvalloc(int32 n); +void bvset(Bvec *bv, int32 i); + +/* * dpchk.c */ void dpcheck(Node*); @@ -766,12 +784,13 @@ void gclean(void); void gextern(Sym*, Node*, int32, int32); void ginit(void); int32 outstring(char*, int32); -int32 outlstring(ushort*, int32); +int32 outlstring(TRune*, int32); void sextern(Sym*, Node*, int32, int32); void xcom(Node*); int32 exreg(Type*); int32 align(int32, Type*, int, int32*); int32 maxround(int32, int32); +int hasdotdotdot(void); extern schar ewidth[]; @@ -800,7 +819,6 @@ int machcap(Node*); #pragma varargck type "Q" int32 #pragma varargck type "O" int #pragma varargck type "O" uint -#pragma varargck type "S" ushort* #pragma varargck type "T" Type* #pragma varargck type "U" char* #pragma varargck type "|" int |