options.doc 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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