166 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| .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: \-<character>
 | |
| .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<number>
 | |
| Set the number of characters that are significant in an identifier to <number>.
 | |
| The maximum significant identifier length depends on the constant IDFSIZE,
 | |
| defined in \fIidfsize.h\fR.
 | |
| .sp
 | |
| .IP \-\fBi\fR<number>
 | |
| 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
 |