.sp 1.5i .NH Compiler options .nh .PP There are some options available to control the behaviour of the compiler. Two types of options can be distinguished: compile-time options and run-time options. .sp .NH 2 Compile time options .LP .sp There are some options that can be set when the compiler is installed. Those options can be found in the file \fIParameters\fR. To set a parameter just modify its definition in the file \fIParameters\fR. The shell script in the file \fImake.hfiles\fR creates for each parameter a separate .h file. This mechanism is derived from the C compiler in ACK. .sp \fBIDFSIZE\fR .in +3m The maximum number of characters that are significant in an identifier. This value has to be at least the value of \fBMINIDFSIZE\fR, defined in the file \fIoptions.c\fR. A compile-time check is included to see if the value of \fBMINIDFSIZE\fR is legal. The compiler will not recognize some keywords if \fBIDFSIZE\fR is too small. .in -3m .sp \fBISTRSIZE\fR, \fBRSTRSIZE\fR .in +3m The lexical analyzer uses these two values for the allocation of memory needed to store a string. \fBISTRSIZE\fR is the initial number of bytes allocated. \fBRSTRSIZE\fR is the step size used for enlarging the memory needed. .in -3m .sp \fBNUMSIZE\fR .in +3m The maximum length of a numeric constant recognized by the lexical analyzer. It is an error if this length is exceeded. .in -3m .sp \fBERROUT\fR, \fBMAXERR_LINE\fR .in +3m Used for error messages. \fBERROUT\fR defines the file on which the messages are written. \fBMAXERR_LINE\fR is the maximum number of error messages given per line. .in -3m .sp \fBSZ_CHAR\fR, \fBAL_CHAR\fR, etc .in +3m The default values of the target machine sizes and alignments. The values can be overruled with the \-V option. .in -3m .sp \fBMAXSIZE\fR .in +3m This value must be set to the maximum of the values of the target machine sizes. This parameter is used in overflow detection (see also section 3.2). .in -3m .sp \fBDENSITY\fR .in +3m This parameter is used to decide what EM instruction has to be generated for a case-statement. If the range of the index value is sparse, i.e. .br .ti +5m (upperbound - lowerbound) / number_of_cases .br is more than some threshold (\fBDENSITY\fR) the \fBcsb\fR instruction is chosen. If the range is dense a jump table is generated (\fBcsa\fR). This uses more space. Reasonable values are 2, 3 or 4. .br Higher values might also be reasonable on machines, which have lots of address space and memory (see also section 3.3.3). .in -3m .sp \fBINP_READ_IN_ONE\fR .in +3m Used by the generic input module. It can either be defined or not defined. Defining it has the effect that files will be read completely into memory using only one read-system call. This should be used only on machines with lots of memory. .in -3m .sp .bp \fBDEBUG\fR .in +3m .nf If this parameter is defined some built-in compiler-debugging tools can be used: .in +2m \(bu only lexical analyzing is done, if the \-l option is given. \(bu if the \-I option is turned on, the allocated number of structures is printed. \(bu the routine debug can be used to print miscellaneous information. \(bu the routine PrNode prints a tree of nodes. \(bu the routine DumpType prints information about a type structure. \(bu the macro DO_DEBUG(x,y) defined as ((x) && (y)) can be used to perform several actions. .in -2m .in -3m .sp .NH 2 Run time options .LP .sp The run time options can be given in the command line when the compiler is called. .br They all have the form: \- .br Depending on the option, a character string has to be specified. The following options are currently available: .sp .IP \-\fBC\fR 18 The lower case and upper case letters are treated different (\fBISO 6.1.1\fR). .sp .IP \-\fBu\fR The character '_' is treated like a letter, so it is allowed to use the underscore in identifiers. .br Note: identifiers starting with an underscore may cause problems, because .br \h'\w'Note: 'u'most identifiers in library routines start with an underscore. .sp .IP \-\fBn\fR This option suppresses the generation of register messages. .sp .IP \-\fBr\fR With this option rangechecks are generated where necessary. .sp .IP \-\fBL\fR Do not generate EM \fBlin\fR and \fBfil\fR instructions. These instructions are used only for profiling. .sp .IP \-\fBM\fR Set the number of characters that are significant in an identifier to . The maximum significant identifier length depends on the constant IDFSIZE, defined in \fIidfsize.h\fR. .sp .IP \-\fBi\fR With this flag the setsize for a set of integers can be changed. The number must be the number of bits per set. Default value : (#bits in a word) \- 1 .sp .IP \-\fBw\fR Suppress warning messages (see also section 2.5). .sp .IP \-\fBV\fR[[\fBw\fR|\fBi\fR|\fBf\fR|\fBp\fR|\fBS\fR][\fIsize\fR]?[\fI.alignment\fR]?]* .br Option to set the object sizes and alignments on the target machine dynamically. The objects that can be manipulated are: .br \fBw\fR\h'\w'ifpS'u' word .br \fBi\fR\h'\w'wfpS'u' integer .br \fBf\fR\h'\w'wipS'u' float .br \fBp\fR\h'\w'wifS'u' pointer .br \fBS\fR\h'\w'wifp'u' structure .br In case of a structure, \fIsize\fR is discarded and the \fIalignment\fR is the initial alignment of the structure. The effective alignment is the least common multiple of \fIalignment\fR and the alignment of its members. This option has been implemented so that the compiler can be used as cross compiler. .bp