X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCglobl.h;h=c9061a9c4f636e375f255bd6bd99296a0fff8d7c;hb=c2029a0ae596f1a45bf8f0db2c4dd6d2a43f8f47;hp=c21af2bc46ac461ec011477ea1fd815dd4c98325;hpb=73967d94994c82df85e44f90af4461f90b532640;p=fw%2Fsdcc diff --git a/src/SDCCglobl.h b/src/SDCCglobl.h index c21af2bc..c9061a9c 100644 --- a/src/SDCCglobl.h +++ b/src/SDCCglobl.h @@ -99,7 +99,7 @@ typedef int bool; #define FALSE 0 #define MAX_TVAR 6 -#define MAX_INLINEASM 4*1024 +#define INITIAL_INLINEASM 4*1024 #define DEFPOOLSTACK(type,size) \ type *type##Pool ; \ type *type##FreeStack [size] ; \ @@ -158,16 +158,16 @@ typedef int bool; /* optimization options */ struct optimize { - unsigned global_cse:1; - unsigned ptrArithmetic:1; - unsigned label1:1; - unsigned label2:1; - unsigned label3:1; - unsigned label4:1; - unsigned loopInvariant:1; - unsigned loopInduction:1; - unsigned noJTabBoundary:1; - unsigned noLoopReverse:1; + unsigned global_cse; + unsigned ptrArithmetic; + unsigned label1; + unsigned label2; + unsigned label3; + unsigned label4; + unsigned loopInvariant; + unsigned loopInduction; + unsigned noJTabBoundary; + unsigned noLoopReverse; }; /** Build model. @@ -187,38 +187,38 @@ enum struct options { int model; /* see MODEL_* defines above */ - int stackAuto:3; /* Stack Automatic */ - int useXstack:3; /* use Xternal Stack */ - int stack10bit:3; /* use 10 bit stack (flat24 model only) */ - int genericPtr:1; /* use generic pointers */ - int regExtend:1; /* don't use extended registers */ - int dump_raw:1; /* dump after intermediate code generation */ - int dump_gcse:1; /* dump after gcse */ - int dump_loop:1; /* dump after loop optimizations */ - int dump_kill:1; /* dump after dead code elimination */ - int dump_range:1; /* dump after live range analysis */ - int dump_pack:1; /* dump after register packing */ - int dump_rassgn:1; /* dump after register assignment */ - int cc_only:1; /* compile only flag */ - int intlong_rent:1; /* integer & long support routines reentrant */ - int float_rent:1; /* floating point routines are reentrant */ - int out_fmt:1; /* 1 = motorola S19 format 0 = intel Hex format */ - int cyclomatic:1; /* print cyclomatic information */ - int noOverlay:1; /* don't overlay local variables & parameters */ - int mainreturn:1; /* issue a return after main */ - int nopeep:1; /* no peep hole optimization */ - int asmpeep:1; /* pass inline assembler thru peep hole */ - int debug:1; /* generate extra debug info */ - int nodebug:1; /* Generate no debug info. */ - int stackOnData:1; /* stack after data segment */ - int c1mode:1; /* Act like c1 - no pre-proc, asm or link */ + int stackAuto; /* Stack Automatic */ + int useXstack; /* use Xternal Stack */ + int stack10bit; /* use 10 bit stack (flat24 model only) */ + int genericPtr; /* use generic pointers */ + int dump_raw; /* dump after intermediate code generation */ + int dump_gcse; /* dump after gcse */ + int dump_loop; /* dump after loop optimizations */ + int dump_kill; /* dump after dead code elimination */ + int dump_range; /* dump after live range analysis */ + int dump_pack; /* dump after register packing */ + int dump_rassgn; /* dump after register assignment */ + int cc_only; /* compile only flag */ + int intlong_rent; /* integer & long support routines reentrant */ + int float_rent; /* floating point routines are reentrant */ + int out_fmt; /* 1 = motorola S19 format 0 = intel Hex format */ + int cyclomatic; /* print cyclomatic information */ + int noOverlay; /* don't overlay local variables & parameters */ + int mainreturn; /* issue a return after main */ + int nopeep; /* no peep hole optimization */ + int asmpeep; /* pass inline assembler thru peep hole */ + int debug; /* generate extra debug info */ + int stackOnData; /* stack after data segment */ + int c1mode; /* Act like c1 - no pre-proc, asm or link */ char *peep_file; /* additional rules for peep hole */ char *out_name; /* Asm output name for c1 mode */ - int nostdlib:1; /* Don't use standard lib files */ - int nostdinc:1; /* Don't use standard include files */ - int verbose:1; /* Show what the compiler is doing */ - int ANSIint:1; /* Use ANSI integer promotion rules in expressions. */ - + int nostdlib; /* Don't use standard lib files */ + int nostdinc; /* Don't use standard include files */ + int noRegParams; /* Disable passing some parameters in registers */ + int verbose; /* Show what the compiler is doing */ + int shortis8bits; /* treat short like int or char */ + int lessPedantic; /* disable some warnings */ + int profile; /* Turn on extra profiling information */ char *calleeSaves[128]; /* list of functions using callee save */ char *excludeRegs[32]; /* registers excluded from saving */ @@ -233,6 +233,8 @@ struct options }; /* forward definition for variables accessed globally */ +extern int noAssemble; /* no assembly, stop after code generation */ +extern char *yytext; extern char *currFname; extern char *srcFileName; /* source file name without the extenstion */ extern char *moduleName; /* source file name without path & extension */ @@ -252,20 +254,17 @@ extern int cNestLevel; /* block nest level SDCCval.c */ extern int currBlockno; /* sequentail block number */ extern struct optimize optimize; extern struct options options; -extern int maxInterrupts; +extern unsigned maxInterrupts; /* Visible from SDCCmain.c */ extern int nrelFiles; extern char *relFiles[128]; extern char *libFiles[128]; extern int nlibFiles; +extern char *libPaths[128]; +extern int nlibPaths; -/* - void buildCmdLine(char *into, char **args, const char **cmds, - const char *p1, const char *p2, - const char *p3, const char **list); - int my_system (const char *cmd, char **cmd_argv); - */ +extern bool verboseExec ; void parseWithComma (char **, char *); @@ -275,6 +274,13 @@ void parseWithComma (char **, char *); */ FILE *tempfile (void); +/** Creates a temporary file name a'la tmpnam which avoids the bugs + in cygwin wrt c:\tmp. + Scans, in order: TMP, TEMP, TMPDIR, else uses tmpfile(). +*/ +char * +tempfilename (void); + /** Creates a duplicate of the string 'sz' a'la strdup but using libgc. */ @@ -288,5 +294,31 @@ char *gc_strdup (const char *sz); #define wassert(a) wassertl(a,"code generator internal error") +#define DUMP_RAW0 1 +#define DUMP_RAW1 DUMP_RAW0+1 +#define DUMP_CSE DUMP_RAW1+1 +#define DUMP_DFLOW DUMP_CSE+1 +#define DUMP_GCSE DUMP_DFLOW+1 +#define DUMP_DEADCODE DUMP_GCSE+1 +#define DUMP_LOOP DUMP_DEADCODE+1 +#define DUMP_LOOPG DUMP_LOOP+1 +#define DUMP_LOOPD DUMP_LOOPG+1 +#define DUMP_RANGE DUMP_LOOPD+1 +#define DUMP_PACK DUMP_RANGE+1 +#define DUMP_RASSGN DUMP_PACK+1 +#define DUMP_LRANGE DUMP_RASSGN+1 + +struct _dumpFiles { + int id; + char *ext; + FILE *filePtr; +}; + +extern struct _dumpFiles dumpFiles[]; + +/* Buffer which can be used to hold a file name; assume it will + * be trashed by any function call within SDCC. + */ +extern char scratchFileName[FILENAME_MAX]; #endif