Pristine Ack-5.5
[Ack-5.5.git] / doc / pascal / options.doc
1 .sp 1.5i
2 .NH
3 Compiler options
4 .nh
5 .PP
6 There are some options available to control the behaviour of the compiler.
7 Two types of options can be distinguished: compile-time options and
8 run-time options.
9 .sp
10 .NH 2
11 Compile time options
12 .LP
13 .sp
14 There are some options that can be set when the compiler is installed.
15 Those options can be found in the file \fIParameters\fR. To set a parameter
16 just modify its definition in the file \fIParameters\fR. The shell script
17 in the file \fImake.hfiles\fR creates for each parameter a separate .h file.
18 This mechanism is derived from the C compiler in ACK.
19 .sp
20 \fBIDFSIZE\fR
21 .in +3m
22 The maximum number of characters that are significant in an identifier. This
23 value has to be at least the value of \fBMINIDFSIZE\fR, defined in the file
24 \fIoptions.c\fR. A compile-time check is included to see if the value of
25 \fBMINIDFSIZE\fR is legal. The compiler will not recognize some keywords
26 if \fBIDFSIZE\fR is too small.
27 .in -3m
28 .sp
29 \fBISTRSIZE\fR, \fBRSTRSIZE\fR
30 .in +3m
31 The lexical analyzer uses these two values for the allocation of memory needed
32 to store a string. \fBISTRSIZE\fR is the initial number of bytes allocated.
33 \fBRSTRSIZE\fR is the step size used for enlarging the memory needed.
34 .in -3m
35 .sp
36 \fBNUMSIZE\fR
37 .in +3m
38 The maximum length of a numeric constant recognized by the lexical analyzer.
39 It is an error if this length is exceeded.
40 .in -3m
41 .sp
42 \fBERROUT\fR, \fBMAXERR_LINE\fR
43 .in +3m
44 Used for error messages. \fBERROUT\fR defines the file on which the
45 messages are written. \fBMAXERR_LINE\fR is the maximum number of error
46 messages given per line.
47 .in -3m
48 .sp
49 \fBSZ_CHAR\fR, \fBAL_CHAR\fR, etc
50 .in +3m
51 The default values of the target machine sizes and alignments. The values
52 can be overruled with the \-V option.
53 .in -3m
54 .sp
55 \fBMAXSIZE\fR
56 .in +3m
57 This value must be set to the maximum of the values of the target machine
58 sizes. This parameter is used in overflow detection (see also section 3.2).
59 .in -3m
60 .sp
61 \fBDENSITY\fR
62 .in +3m
63 This parameter is used to decide what EM instruction has to be generated
64 for a case-statement. If the range of the index value is sparse, i.e.
65 .br
66 .ti +5m
67 (upperbound - lowerbound) / number_of_cases
68 .br
69 is more than some threshold (\fBDENSITY\fR) the \fBcsb\fR instruction is
70 chosen. If the range is dense a jump table is generated (\fBcsa\fR). This
71 uses more space. Reasonable values are 2, 3 or 4.
72 .br
73 Higher values might also be reasonable on machines, which have lots of
74 address space and memory (see also section 3.3.3).
75 .in -3m
76 .sp
77 \fBINP_READ_IN_ONE\fR
78 .in +3m
79 Used by the generic input module. It can either be defined or not defined.
80 Defining it has the effect that files will be read completely into memory
81 using only one read-system call. This should be used only on machines with
82 lots of memory.
83 .in -3m
84 .sp
85 .bp
86 \fBDEBUG\fR
87 .in +3m
88 .nf
89 If this parameter is defined some built-in compiler-debugging tools can be used:
90 .in +2m
91 \(bu only lexical analyzing is done, if the \-l option is given.
92 \(bu if the \-I option is turned on, the allocated number of structures is printed.
93 \(bu the routine debug can be used to print miscellaneous information.
94 \(bu the routine PrNode prints a tree of nodes.
95 \(bu the routine DumpType prints information about a type structure.
96 \(bu the macro DO_DEBUG(x,y) defined as ((x) && (y)) can be used to perform
97   several actions.
98 .in -2m
99 .in -3m
100 .sp
101 .NH 2
102 Run time options
103 .LP
104 .sp
105 The run time options can be given in the command line when the compiler is
106 called.
107 .br
108 They all have the form: \-<character>
109 .br
110 Depending on the option, a character string has to be specified. The following
111 options are currently available:
112 .sp
113 .IP \-\fBC\fR 18
114 The lower case and upper case letters are treated different (\fBISO 6.1.1\fR).
115 .sp
116 .IP \-\fBu\fR
117 The character '_' is treated like a letter, so it is allowed to use the
118 underscore in identifiers.
119 .br
120 Note: identifiers starting with an underscore may cause problems, because
121 .br
122 \h'\w'Note: 'u'most identifiers in library routines start with an underscore.
123 .sp
124 .IP \-\fBn\fR
125 This option suppresses the generation of register messages.
126 .sp
127 .IP \-\fBr\fR
128 With this option rangechecks are generated where necessary.
129 .sp
130 .IP \-\fBL\fR
131 Do not generate EM \fBlin\fR and \fBfil\fR instructions. These instructions
132 are used only for profiling.
133 .sp
134 .IP \-\fBM\fR<number>
135 Set the number of characters that are significant in an identifier to <number>.
136 The maximum significant identifier length depends on the constant IDFSIZE,
137 defined in \fIidfsize.h\fR.
138 .sp
139 .IP \-\fBi\fR<number>
140 With this flag the setsize for a set of integers can be changed. The number must
141 be the number of bits per set. Default value : (#bits in a word) \- 1
142 .sp
143 .IP \-\fBw\fR
144 Suppress warning messages (see also section 2.5).
145 .sp
146 .IP \-\fBV\fR[[\fBw\fR|\fBi\fR|\fBf\fR|\fBp\fR|\fBS\fR][\fIsize\fR]?[\fI.alignment\fR]?]*
147 .br
148 Option to set the object sizes and alignments on the target machine
149 dynamically. The objects that can be manipulated are:
150 .br
151 \fBw\fR\h'\w'ifpS'u'   word
152 .br
153 \fBi\fR\h'\w'wfpS'u'   integer
154 .br
155 \fBf\fR\h'\w'wipS'u'   float
156 .br
157 \fBp\fR\h'\w'wifS'u'   pointer
158 .br
159 \fBS\fR\h'\w'wifp'u'   structure
160 .br
161 In case of a structure, \fIsize\fR is discarded and the \fIalignment\fR is
162 the initial alignment of the structure. The effective alignment is the least
163 common multiple of \fIalignment\fR and the alignment of its members. This
164 option has been implemented so that the compiler can be used as cross
165 compiler.
166 .bp