internals-5 53 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210
  1. Info file internals, produced by Makeinfo, -*- Text -*-
  2. from input file internals.texinfo.
  3. This file documents the internals of the GNU compiler.
  4. Copyright (C) 1988 Free Software Foundation, Inc.
  5. Permission is granted to make and distribute verbatim copies of
  6. this manual provided the copyright notice and this permission notice
  7. are preserved on all copies.
  8. Permission is granted to copy and distribute modified versions of this
  9. manual under the conditions for verbatim copying, provided also that the
  10. section entitled ``GNU CC General Public License'' is included exactly as
  11. in the original, and provided that the entire resulting derived work is
  12. distributed under the terms of a permission notice identical to this one.
  13. Permission is granted to copy and distribute translations of this manual
  14. into another language, under the above conditions for modified versions,
  15. except that the section entitled ``GNU CC General Public License'' and
  16. this permission notice may be included in translations approved by the
  17. Free Software Foundation instead of in the original English.
  18. 
  19. File: internals, Node: Peephole Definitions, Next: Expander Definitions, Prev: Jump Patterns, Up: Machine Desc
  20. Defining Machine-Specific Peephole Optimizers
  21. =============================================
  22. In addition to instruction patterns the `md' file may contain definitions
  23. of machine-specific peephole optimizations.
  24. The combiner does not notice certain peephole optimizations when the data
  25. flow in the program does not suggest that it should try them. For example,
  26. sometimes two consecutive insns related in purpose can be combined even
  27. though the second one does not appear to use a register computed in the
  28. first one. A machine-specific peephole optimizer can detect such
  29. opportunities.
  30. A definition looks like this:
  31. (define_peephole
  32. [INSN-PATTERN-1
  33. INSN-PATTERN-2
  34. ...]
  35. "CONDITION"
  36. "TEMPLATE")
  37. In this skeleton, INSN-PATTERN-1 and so on are patterns to match
  38. consecutive instructions. The optimization applies to a sequence of
  39. instructions when INSN-PATTERN-1 matches the first one, INSN-PATTERN-2
  40. matches the next, and so on.
  41. INSN-PATTERN-1 and so on look *almost* like the second operand of
  42. `define_insn'. There is one important difference: this pattern is an RTX,
  43. not a vector. If the `define_insn' pattern would be a vector of one
  44. element, the INSN-PATTERN should be just that element, no vector. If the
  45. `define_insn' pattern would have multiple elements then the INSN-PATTERN
  46. must place the vector inside an explicit `parallel' RTX.
  47. The operands of the instructions are matched with `match_operands' and
  48. `match_dup', as usual). What is not usual is that the operand numbers
  49. apply to all the instruction patterns in the definition. So, you can check
  50. for identical operands in two instructions by using `match_operand' in one
  51. instruction and `match_dup' in the other.
  52. The operand constraints used in `match_operand' patterns do not have any
  53. direct effect on the applicability of the optimization, but they will be
  54. validated afterward, so write constraints that are sure to fit whenever the
  55. optimization is applied. It is safe to use `"g"' for each operand.
  56. Once a sequence of instructions matches the patterns, the CONDITION is
  57. checked. This is a C expression which makes the final decision whether to
  58. perform the optimization (do so if the expression is nonzero). If
  59. CONDITION is omitted (in other words, the string is empty) then the
  60. optimization is applied to every sequence of instructions that matches the
  61. patterns.
  62. The defined peephole optimizations are applied after register allocation is
  63. complete. Therefore, the optimizer can check which operands have ended up
  64. in which kinds of registers, just by looking at the operands.
  65. The way to refer to the operands in CONDITION is to write `operands[I]' for
  66. operand number I (as matched by `(match_operand I ...)'). Use the variable
  67. `insn' to refer to the last of the insns being matched; use `PREV_INSN' to
  68. find the preceding insns (but be careful to skip over any `note' insns that
  69. intervene).
  70. When optimizing computations with intermediate results, you can use
  71. CONDITION to match only when the intermediate results are not used
  72. elsewhere. Use the C expression `dead_or_set_p (INSN, OP)', where INSN is
  73. the insn in which you expect the value to be used for the last time (from
  74. the value of `insn', together with use of `PREV_INSN'), and OP is the
  75. intermediate value (from `operands[I]').
  76. Applying the optimization means replacing the sequence of instructions with
  77. one new instruction. The TEMPLATE controls ultimate output of assembler
  78. code for this combined instruction. It works exactly like the template of
  79. a `define_insn'. Operand numbers in this template are the same ones used
  80. in matching the original sequence of instructions.
  81. The result of a defined peephole optimizer does not need to match any of
  82. the instruction patterns, and it does not have an opportunity to match
  83. them. The peephole optimizer definition itself serves as the instruction
  84. pattern to control how the instruction is output.
  85. Defined peephole optimizers are run in the last jump optimization pass, so
  86. the instructions they produce are never combined or rearranged
  87. automatically in any way.
  88. Here is an example, taken from the 68000 machine description:
  89. (define_peephole
  90. [(set (reg:SI 15) (plus:SI (reg:SI 15) (const_int 4)))
  91. (set (match_operand:DF 0 "register_operand" "f")
  92. (match_operand:DF 1 "register_operand" "ad"))]
  93. "FP_REG_P (operands[0]) && ! FP_REG_P (operands[1])"
  94. "*
  95. {
  96. rtx xoperands[2];
  97. xoperands[1] = gen_rtx (REG, SImode, REGNO (operands[1]) + 1);
  98. #ifdef MOTOROLA
  99. output_asm_insn (\"move.l %1,(sp)\", xoperands);
  100. output_asm_insn (\"move.l %1,-(sp)\", operands);
  101. return \"fmove.d (sp)+,%0\";
  102. #else
  103. output_asm_insn (\"movel %1,sp@\", xoperands);
  104. output_asm_insn (\"movel %1,sp@-\", operands);
  105. return \"fmoved sp@+,%0\";
  106. #endif
  107. }
  108. ")
  109. The effect of this optimization is to change
  110. jbsr _foobar
  111. addql #4,sp
  112. movel d1,sp@-
  113. movel d0,sp@-
  114. fmoved sp@+,fp0
  115. into
  116. jbsr _foobar
  117. movel d1,sp@
  118. movel d0,sp@-
  119. fmoved sp@+,fp0
  120. 
  121. File: internals, Node: Expander Definitions, Prev: Peephole Definitions, Up: Machine Desc
  122. Defining RTL Sequences for Code Generation
  123. ==========================================
  124. On some target machines, some standard pattern names for RTL generation
  125. cannot be handled with single insn, but a sequence of RTL insns can
  126. represent them. For these target machines, you can write a `define_expand'
  127. to specify how to generate the sequence of RTL.
  128. A `define_expand' is an RTL expression that looks almost like a
  129. `define_insn'; but, unlike the latter, a `define_expand' is used only for
  130. RTL generation and it can produce more than one RTL insn.
  131. A `define_expand' RTX has four operands:
  132. * The name. Each `define_expand' must have a name, since the only use
  133. for it is to refer to it by name.
  134. * The RTL template. This is just like the RTL template for a
  135. `define_peephole' in that it is a vector of RTL expressions each being
  136. one insn.
  137. * The condition, a string containing a C expression. This expression is
  138. used to express how the availability of this pattern depends on
  139. subclasses of target machine, selected by command-line options when
  140. GNU CC is run. This is just like the condition of a `define_insn'
  141. that has a standard name.
  142. * The preparation statements, a string containing zero or more C
  143. statements which are to be executed before RTL code is generated from
  144. the RTL template.
  145. Usually these statements prepare temporary registers for use as
  146. internal operands in the RTL template, but they can also generate RTL
  147. insns directly by calling routines such as `emit_insn', etc. Any such
  148. insns precede the ones that come from the RTL template.
  149. The RTL template, in addition to controlling generation of RTL insns, also
  150. describes the operands that need to be specified when this pattern is used.
  151. In particular, it gives a predicate for each operand.
  152. A true operand, which need to be specified in order to generate RTL from
  153. the pattern, should be described with a `match_operand' in its first
  154. occurrence in the RTL template. This enters information on the operand's
  155. predicate into the tables that record such things. GNU CC uses the
  156. information to preload the operand into a register if that is required for
  157. valid RTL code. If the operand is referred to more than once, subsequent
  158. references should use `match_dup'.
  159. The RTL template may also refer to internal ``operands'' which are
  160. temporary registers or labels used only within the sequence made by the
  161. `define_expand'. Internal operands are substituted into the RTL template
  162. with `match_dup', never with `match_operand'. The values of the internal
  163. operands are not passed in as arguments by the compiler when it requests
  164. use of this pattern. Instead, they are computed within the pattern, in the
  165. preparation statements. These statements compute the values and store them
  166. into the appropriate elements of `operands' so that `match_dup' can find
  167. them.
  168. There are two special macros defined for use in the preparation statements:
  169. `DONE' and `FAIL'. Use them with a following semicolon, as a statement.
  170. `DONE'
  171. Use the `DONE' macro to end RTL generation for the pattern. The only
  172. RTL insns resulting from the pattern on this occasion will be those
  173. already emitted by explicit calls to `emit_insn' within the
  174. preparation statements; the RTL template will not be generated.
  175. `FAIL'
  176. Make the pattern fail on this occasion. When a pattern fails, it
  177. means that the pattern was not truly available. The calling routines
  178. in the compiler will try other strategies for code generation using
  179. other patterns.
  180. Failure is currently supported only for binary operations (addition,
  181. multiplication, shifting, etc.).
  182. Do not emit any insns explicitly with `emit_insn' before failing.
  183. Here is an example, the definition of left-shift for the SPUR chip:
  184. (define_expand "ashlsi3"
  185. [(set (match_operand:SI 0 "register_operand" "")
  186. (ashift:SI
  187. (match_operand:SI 1 "register_operand" "")
  188. (match_operand:SI 2 "nonmemory_operand" "")))]
  189. ""
  190. "
  191. {
  192. if (GET_CODE (operands[2]) != CONST_INT
  193. || (unsigned) INTVAL (operands[2]) > 3)
  194. FAIL;
  195. }")
  196. This example uses `define_expand' so that it can generate an RTL insn for
  197. shifting when the shift-count is in the supported range of 0 to 3 but fail
  198. in other cases where machine insns aren't available. When it fails, the
  199. compiler tries another strategy using different patterns (such as, a
  200. library call).
  201. If the compiler were able to handle nontrivial condition-strings in
  202. patterns with names, then there would be possible to use a `define_insn' in
  203. that case. Here is another case (zero-extension on the 68000) which makes
  204. more use of the power of `define_expand':
  205. (define_expand "zero_extendhisi2"
  206. [(set (match_operand:SI 0 "general_operand" "")
  207. (const_int 0))
  208. (set (strict_low_part
  209. (subreg:HI
  210. (match_operand:SI 0 "general_operand" "")
  211. 0))
  212. (match_operand:HI 1 "general_operand" ""))]
  213. ""
  214. "operands[1] = make_safe_from (operands[1], operands[0]);")
  215. Here two RTL insns are generated, one to clear the entire output operand
  216. and the other to copy the input operand into its low half. This sequence
  217. is incorrect if the input operand refers to [the old value of] the output
  218. operand, so the preparation statement makes sure this isn't so. The
  219. function `make_safe_from' copies the `operands[1]' into a temporary
  220. register if it refers to `operands[0]'. It does this by emitting another
  221. RTL insn.
  222. Finally, a third example shows the use of an internal operand.
  223. Zero-extension on the SPUR chip is done by `and'-ing the result against a
  224. halfword mask. But this mask cannot be represented by a `const_int'
  225. because the constant value is too large to be legitimate on this machine.
  226. So it must be copied into a register with `force_reg' and then the register
  227. used in the `and'.
  228. (define_expand "zero_extendhisi2"
  229. [(set (match_operand:SI 0 "register_operand" "")
  230. (and:SI (subreg:SI
  231. (match_operand:HI 1 "register_operand" "")
  232. 0)
  233. (match_dup 2)))]
  234. ""
  235. "operands[2]
  236. = force_reg (SImode, gen_rtx (CONST_INT,
  237. VOIDmode, 65535)); ")
  238. 
  239. File: internals, Node: Machine Macros, Next: Config, Prev: Machine Desc, Up: Top
  240. Machine Description Macros
  241. **************************
  242. The other half of the machine description is a C header file conventionally
  243. given the name `tm-MACHINE.h'. The file `tm.h' should be a link to it.
  244. The header file `config.h' includes `tm.h' and most compiler source files
  245. include `config.h'.
  246. * Menu:
  247. * Run-time Target:: Defining -m options like -m68000 and -m68020.
  248. * Storage Layout:: Defining sizes and alignments of data types.
  249. * Registers:: Naming and describing the hardware registers.
  250. * Register Classes:: Defining the classes of hardware registers.
  251. * Stack Layout:: Defining which way the stack grows and by how much.
  252. * Library Names:: Specifying names of subroutines to call automatically.
  253. * Addressing Modes:: Defining addressing modes valid for memory operands.
  254. * Condition Code:: Defining how insns update the condition code.
  255. * Assembler Format:: Defining how to write insns and pseudo-ops to output.
  256. * Misc:: Everything else.
  257. 
  258. File: internals, Node: Run-time Target, Next: Storage Layout, Prev: Machine Macros, Up: Machine Macros
  259. Run-time Target Specification
  260. =============================
  261. `CPP_PREDEFINES'
  262. Define this to be a string constant containing `-D' options to define
  263. the predefined macros that identify this machine and system.
  264. For example, on the Sun, one can use the value
  265. "-Dmc68000 -Dsun -Dunix"
  266. `extern int target_flags;'
  267. This declaration should be present.
  268. `TARGET_...'
  269. This series of macros is to allow compiler command arguments to enable
  270. or disable the use of optional features of the target machine. For
  271. example, one machine description serves both the 68000 and the 68020;
  272. a command argument tells the compiler whether it should use 68020-only
  273. instructions or not. This command argument works by means of a macro
  274. `TARGET_68020' that tests a bit in `target_flags'.
  275. Define a macro `TARGET_FEATURENAME' for each such option. Its
  276. definition should test a bit in `target_flags'; for example:
  277. #define TARGET_68020 (target_flags & 1)
  278. One place where these macros are used is in the condition-expressions
  279. of instruction patterns. Note how `TARGET_68020' appears frequently
  280. in the 68000 machine description file, `m68k.md'. Another place they
  281. are used is in the definitions of the other macros in the
  282. `tm-MACHINE.h' file.
  283. `TARGET_SWITCHES'
  284. This macro defines names of command options to set and clear bits in
  285. `target_flags'. Its definition is an initializer with a subgrouping
  286. for each command option.
  287. Each subgrouping contains a string constant, that defines the option
  288. name, and a number, which contains the bits to set in `target_flags'.
  289. A negative number says to clear bits instead; the negative of the
  290. number is which bits to clear. The actual option name is made by
  291. appending `-m' to the specified name.
  292. One of the subgroupings should have a null string. The number in this
  293. grouping is the default value for `target_flags'. Any target options
  294. act starting with that value.
  295. Here is an example which defines `-m68000' and `-m68020' with opposite
  296. meanings, and picks the latter as the default:
  297. #define TARGET_SWITCHES \
  298. { { "68020", 1}, \
  299. { "68000", -1}, \
  300. { "", 1}}
  301. Sometimes certain combinations of command options do not make sense on a
  302. particular target machine. You can define a macro `OVERRIDE_OPTIONS' to
  303. take account of this. This macro, if defined, is executed once just after
  304. all the command options have been parsed.
  305. 
  306. File: internals, Node: Storage Layout, Next: Registers, Prev: Run-time Target, Up: Machine Macros
  307. Storage Layout
  308. ==============
  309. Note that the definitions of the macros in this table which are sizes or
  310. alignments measured in bits do not need to be constant. They can be C
  311. expressions that refer to static variables, such as the `target_flags'.
  312. *note Run-time Target::.
  313. `BITS_BIG_ENDIAN'
  314. Define this macro if the most significant bit in a byte has the lowest
  315. number. This means that bit-field instructions count from the most
  316. significant bit. If the machine has no bit-field instructions, this
  317. macro is irrelevant.
  318. `BYTES_BIG_ENDIAN'
  319. Define this macro if the most significant byte in a word has the
  320. lowest number.
  321. `WORDS_BIG_ENDIAN'
  322. Define this macro if, in a multiword object, the most significant word
  323. has the lowest number.
  324. `BITS_PER_UNIT'
  325. Number of bits in an addressable storage unit (byte); normally 8.
  326. `BITS_PER_WORD'
  327. Number of bits in a word; normally 32.
  328. `UNITS_PER_WORD'
  329. Number of storage units in a word; normally 4.
  330. `POINTER_SIZE'
  331. Width of a pointer, in bits.
  332. `PARM_BOUNDARY'
  333. Alignment required for function parameters on the stack, in bits.
  334. `STACK_BOUNDARY'
  335. Define this macro if you wish to preserve a certain alignment for the
  336. stack pointer at all times. The definition is a C expression for the
  337. desired alignment (measured in bits).
  338. `FUNCTION_BOUNDARY'
  339. Alignment required for a function entry point, in bits.
  340. `BIGGEST_ALIGNMENT'
  341. Biggest alignment that any data type can require on this machine, in
  342. bits.
  343. `EMPTY_FIELD_ALIGNMENT'
  344. Alignment in bits to be given to a structure bit field that follows an
  345. empty field such as `int : 0;'.
  346. `STRUCTURE_SIZE_BOUNDARY'
  347. Number of bits which any structure or union's size must be a multiple
  348. of. Each structure or union's size is rounded up to a multiple of this.
  349. If you do not define this macro, the default is the same as
  350. `BITS_PER_UNIT'.
  351. `STRICT_ALIGNMENT'
  352. Define this if instructions will fail to work if given data not on the
  353. nominal alignment. If instructions will merely go slower in that
  354. case, do not define this macro.
  355. 
  356. File: internals, Node: Registers, Next: Register Classes, Prev: Storage Layout, Up: Machine Macros
  357. Register Usage
  358. ==============
  359. `FIRST_PSEUDO_REGISTER'
  360. Number of hardware registers known to the compiler. They receive
  361. numbers 0 through `FIRST_PSEUDO_REGISTER-1'; thus, the first pseudo
  362. register's number really is assigned the number `FIRST_PSEUDO_REGISTER'.
  363. `FIXED_REGISTERS'
  364. An initializer that says which registers are used for fixed purposes
  365. all throughout the compiled code and are therefore not available for
  366. general allocation. These would include the stack pointer, the frame
  367. pointer, the program counter on machines where that is considered one
  368. of the addressable registers, and any other numbered register with a
  369. standard use.
  370. This information is expressed as a sequence of numbers, separated by
  371. commas and surrounded by braces. The Nth number is 1 if register N is
  372. fixed, 0 otherwise.
  373. The table initialized from this macro, and the table initialized by
  374. the following one, may be overridden at run time either automatically,
  375. by the actions of the macro `CONDITIONAL_REGISTER_USAGE', or by the
  376. user with the command options `-ffixed-REG', `-fcall-used-REG' and
  377. `-fcall-saved-REG'.
  378. `CALL_USED_REGISTERS'
  379. Like `FIXED_REGISTERS' but has 1 for each register that is clobbered
  380. (in general) by function calls as well as for fixed registers. This
  381. macro therefore identifies the registers that are not available for
  382. general allocation of values that must live across function calls.
  383. If a register has 0 in `CALL_USED_REGISTERS', the compiler
  384. automatically saves it on function entry and restores it on function
  385. exit, if the register is used within the function.
  386. `CONDITIONAL_REGISTER_USAGE'
  387. Zero or more C statements that may conditionally modify two variables
  388. `fixed_regs' and `call_used_regs' (both of type `char []') after they
  389. have been initialized from the two preceding macros.
  390. This is necessary in case the fixed or call-clobbered registers depend
  391. on target flags.
  392. You need not define this macro if it has no work to do.
  393. `HARD_REGNO_REGS (REGNO, MODE)'
  394. A C expression for the number of consecutive hard registers, starting
  395. at register number REGNO, required to hold a value of mode MODE.
  396. On a machine where all registers are exactly one word, a suitable
  397. definition of this macro is
  398. #define HARD_REGNO_NREGS(REGNO, MODE) \
  399. ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \
  400. / UNITS_PER_WORD))
  401. `HARD_REGNO_MODE_OK (REGNO, MODE)'
  402. A C expression that is nonzero if it is permissible to store a value
  403. of mode MODE in hard register number REGNO (or in several registers
  404. starting with that one). For a machine where all registers are
  405. equivalent, a suitable definition is
  406. #define HARD_REGNO_MODE_OK(REGNO, MODE) 1
  407. It is not necessary for this macro to check for fixed register numbers
  408. because the allocation mechanism considers them to be always occupied.
  409. Many machines have special registers for floating point arithmetic.
  410. Often people assume that floating point machine modes are allowed only
  411. in floating point registers. This is not true. Any registers that
  412. can hold integers can safely *hold* a floating point machine mode,
  413. whether or not floating arithmetic can be done on it in those registers.
  414. The true significance of special floating registers is rather than
  415. non-floating-point machine modes *may not* go in those registers.
  416. This is true if the floating registers normalize any value stored in
  417. them, because storing a non-floating value there would garble it. If
  418. the floating registers do not automatically normalize, if you can
  419. store any bit pattern in one and retrieve it unchanged without a trap,
  420. then any machine mode may go in a floating register and this macro
  421. should say so.
  422. Sometimes there are floating registers that are especially slow to
  423. access, so that it is better to store a value in a stack frame than in
  424. such a register if floating point arithmetic is not being done. As
  425. long as the floating registers are not in class `GENERAL_REGS', they
  426. will not be used unless some insn's constraint asks for one.
  427. It is obligatory to support floating point `move' instructions into
  428. and out of general registers, because unions and structures (which
  429. have modes `SImode' or `DImode') can be in those registers and they
  430. may have floating point members.
  431. `MODES_TIEABLE_P (MODE1, MODE2)'
  432. A C expression that is nonzero if it is desirable to choose register
  433. allocation so as to avoid move instructions between a value of mode
  434. MODE1 and a value of mode MODE2.
  435. If `HARD_REGNO_MODE_OK (R, MODE1)' and `HARD_REGNO_MODE_OK (R, MODE2)'
  436. are ever different for any R, then `MODES_TIEABLE_P (MODE1, MODE2)'
  437. must be zero.
  438. `PC_REGNUM'
  439. If the program counter has a register number, define this as that
  440. register number. Otherwise, do not define it.
  441. `STACK_POINTER_REGNUM'
  442. The register number of the stack pointer register, which must also be
  443. a fixed register according to `FIXED_REGISTERS'. On many machines,
  444. the hardware determines which register this is.
  445. `FRAME_POINTER_REGNUM'
  446. The register number of the frame pointer register, which is used to
  447. access automatic variables in the stack frame. On some machines, the
  448. hardware determines which register this is. On other machines, you
  449. can choose any register you wish for this purpose.
  450. `FRAME_POINTER_REQUIRED'
  451. A C expression which is nonzero if a function must have and use a
  452. frame pointer. This expression is evaluated in the reload pass, in
  453. the function `reload', and it can in principle examine the current
  454. function and decide according to the facts, but on most machines the
  455. constant 0 or the constant 1 suffices. Use 0 when the machine allows
  456. code to be generated with no frame pointer, and doing so saves some
  457. time or space. Use 1 when there is no possible advantage to avoiding
  458. a frame pointer.
  459. In certain cases, the compiler does not know how to do without a frame
  460. pointer. The compiler recognizes those cases and automatically gives
  461. the function a frame pointer regardless of what
  462. `FRAME_POINTER_REQUIRED' says. You don't need to worry about them.
  463. In a function that does not require a frame pointer, the frame pointer
  464. register can be allocated for ordinary usage, provided it is not
  465. marked as a fixed register. See `FIXED_REGISTERS' for more information.
  466. `ARG_POINTER_REGNUM'
  467. The register number of the arg pointer register, which is used to
  468. access the function's argument list. On some machines, this is the
  469. same as the frame pointer register. On some machines, the hardware
  470. determines which register this is. On other machines, you can choose
  471. any register you wish for this purpose. It must in any case be a
  472. fixed register according to `FIXED_REGISTERS'.
  473. `STATIC_CHAIN_REGNUM'
  474. The register number used for passing a function's static chain
  475. pointer. This is needed for languages such as Pascal and Algol where
  476. functions defined within other functions can access the local
  477. variables of the outer functions; it is not currently used because C
  478. does not provide this feature.
  479. The static chain register need not be a fixed register.
  480. `STRUCT_VALUE_REGNUM'
  481. When a function's value's mode is `BLKmode', the value is not returned
  482. according to `FUNCTION_VALUE'. Instead, the caller passes the address
  483. of a block of memory in which the value should be stored.
  484. `STRUCT_VALUE_REGNUM' is the register in which this address is passed.
  485. 
  486. File: internals, Node: Register Classes, Next: Stack Layout, Prev: Registers, Up: Machine Macros
  487. Register Classes
  488. ================
  489. On many machines, the numbered registers are not all equivalent. For
  490. example, certain registers may not be allowed for indexed addressing;
  491. certain registers may not be allowed in some instructions. These machine
  492. restrictions are described to the compiler using "register classes".
  493. You define a number of register classes, giving each one a name and saying
  494. which of the registers belong to it. Then you can specify register classes
  495. that are allowed as operands to particular instruction patterns.
  496. In general, each register will belong to several classes. In fact, one
  497. class must be named `ALL_REGS' and contain all the registers. Another
  498. class must be named `NO_REGS' and contain no registers. Often the union of
  499. two classes will be another class; however, this is not required.
  500. One of the classes must be named `GENERAL_REGS'. There is nothing terribly
  501. special about the name, but the operand constraint letters `r' and `g'
  502. specify this class. If `GENERAL_REGS' is the same as `ALL_REGS', just
  503. define it as a macro which expands to `ALL_REGS'.
  504. The way classes other than `GENERAL_REGS' are specified in operand
  505. constraints is through machine-dependent operand constraint letters. You
  506. can define such letters to correspond to various classes, then use them in
  507. operand constraints.
  508. You should define a class for the union of two classes whenever some
  509. instruction allows both classes. For example, if an instruction allows
  510. either a floating-point (coprocessor) register or a general register for a
  511. certain operand, you should define a class `FLOAT_OR_GENERAL_REGS' which
  512. includes both of them. Otherwise you will get suboptimal code.
  513. You must also specify certain redundant information about the register
  514. classes: for each class, which classes contain it and which ones are
  515. contained in it; for each pair of classes, the largest class contained in
  516. their union.
  517. `enum reg_class'
  518. An enumeral type that must be defined with all the register class
  519. names as enumeral values. `NO_REGS' must be first. `ALL_REGS' must
  520. be the last register class, followed by one more enumeral value,
  521. `LIM_REG_CLASSES', which is not a register class but rather tells how
  522. many classes there are.
  523. Each register class has a number, which is the value of casting the
  524. class name to type `int'. The number serves as an index in many of
  525. the tables described below.
  526. `REG_CLASS_NAMES'
  527. An initializer containing the names of the register classes as C
  528. string constants. These names are used in writing some of the
  529. debugging dumps.
  530. `REG_CLASS_CONTENTS'
  531. An initializer containing the contents of the register classes, as
  532. integers which are bit masks. The Nth integer specifies the contents
  533. of class N. The way the integer MASK is interpreted is that register
  534. R is in the class if `MASK & (1 << R)' is 1.
  535. When the machine has more than 32 registers, an integer does not
  536. suffice. Then the integers are replaced by sub-initializers, braced
  537. groupings containing several integers. Each sub-initializer must be
  538. suitable as an initializer for the type `HARD_REG_SET' which is
  539. defined in `hard-reg-set.h'.
  540. `REGNO_REG_CLASS (REGNO)'
  541. A C expression whose value is a register class containing hard
  542. regiSTER REGNO. In general there is more that one such class; choose
  543. a class which is "minimal", meaning that no smaller class also
  544. contains the register.
  545. `INDEX_REG_CLASS'
  546. A macro whose definition is the name of the class to which a valid
  547. index register must belong.
  548. `REG_CLASS_FROM_LETTER (CHAR)'
  549. A C expression which defines the machine-dependent operand constraint
  550. letters for register classes. If CHAR is such a letter, the value
  551. should be the register class corresponding to it. Otherwise, the
  552. value should be `NO_REGS'.
  553. `REGNO_OK_FOR_BASE_P (NUM)'
  554. A C expression which is nonzero if register number NUM is suitable for
  555. use as a base register in operand addresses. It may be either a
  556. suitable hard register or a pseudo register that has been allocated
  557. such a hard register.
  558. `REGNO_OK_FOR_INDEX_P (NUM)'
  559. A C expression which is nonzero if register number NUM is suitable for
  560. use as an index register in operand addresses. It may be either a
  561. suitable hard register or a pseudo register that has been allocated
  562. such a hard register.
  563. The difference between an index register and a base register is that
  564. the index register may be scaled. If an address involves the sum of
  565. two registers, neither one of them scaled, then either one may be
  566. labeled the ``base'' and the other the ``index''; but whichever
  567. labeling is used must fit the machine's constraints of which registers
  568. may serve in each capacity. The compiler will try both labelings,
  569. looking for one that is valid, and reload one or both registers only
  570. if neither labeling works.
  571. `PREFERRED_RELOAD_CLASS (X, CLASS)'
  572. A C expression that places additional restrictions on the register
  573. class to use when it is necessary to copy value X into a register in
  574. class CLASS. The value is a register class; perhaps CLASS, or perhaps
  575. another, smaller class. CLASS is always safe as a value. In fact,
  576. the definition
  577. #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
  578. is always safe. However, sometimes returning a more restrictive class
  579. makes better code. For example, on the 68000, when X is an integer
  580. constant that is in range for a `moveq' instruction, the value of this
  581. macro is always `DATA_REGS' as long as CLASS includes the data
  582. registers. Requiring a data register guarantees that a `moveq' will
  583. be used.
  584. `CLASS_MAX_NREGS (CLASS, MODE)'
  585. A C expression for the maximum number of consecutive registers of
  586. cLASS CLASS needed to hold a value of mode MODE.
  587. This is closely related to the macro `HARD_REGNO_NREGS'. In fact, the
  588. value of the macro `CLASS_MAX_NREGS (CLASS, MODE)' should be the
  589. maximum value of `HARD_REGNO_NREGS (REGNO, MODE)' for all REGNO values
  590. in the class CLASS.
  591. This macro helps control the handling of multiple-word values in the
  592. reload pass.
  593. Two other special macros describe which constants fit which constraint
  594. letters.
  595. `CONST_OK_FOR_LETTER_P (VALUE, C)'
  596. A C expression that defines the machine-dependent operand constraint
  597. letters that specify particular ranges of integer values. If C is one
  598. of those letters, the expression should check that VALUE, an integer,
  599. is in the appropriate range and return 1 if so, 0 otherwise. If C is
  600. not one of those letters, the value should be 0 regardless of VALUE.
  601. `CONST_DOUBLE_OK_FOR_LETTER_P (VALUE, C)'
  602. A C expression that defines the machine-dependent operand constraint
  603. letters that specify particular ranges of floating values. If C is
  604. one of those letters, the expression should check that VALUE, an RTX
  605. of code `const_double', is in the appropriate range and return 1 if
  606. so, 0 otherwise. If C is not one of those letters, the value should
  607. be 0 regardless of VALUE.
  608. 
  609. File: internals, Node: Stack Layout, Next: Library Names, Prev: Register Classes, Up: Machine Macros
  610. Describing Stack Layout
  611. =======================
  612. `STACK_GROWS_DOWNWARD'
  613. Define this macro if pushing a word onto the stack moves the stack
  614. pointer to a smaller address.
  615. When we say, ``define this macro if ...,'' it means that the compiler
  616. checks this macro only with `#ifdef' so the precise definition used
  617. does not matter.
  618. `FRAME_GROWS_DOWNWARD'
  619. Define this macro if the addresses of local variable slots are at
  620. negative offsets from the frame pointer.
  621. `STARTING_FRAME_OFFSET'
  622. Offset from the frame pointer to the first local variable slot to be
  623. allocated.
  624. If `FRAME_GROWS_DOWNWARD', the next slot's offset is found by
  625. subtracting the length of the first slot from `STARTING_FRAME_OFFSET'.
  626. Otherwise, it is found by adding the length of the first slot to the
  627. value `STARTING_FRAME_OFFSET'.
  628. `PUSH_ROUNDING (NPUSHED)'
  629. A C expression that is the number of bytes actually pushed onto the
  630. stack when an instruction attempts to push NPUSHED bytes.
  631. If the target machine does not have a push instruction, do not define
  632. this macro. That directs GNU CC to use an alternate strategy: to
  633. allocate the entire argument block and then store the arguments into it.
  634. On some machines, the definition
  635. #define PUSH_ROUNDING(BYTES) (BYTES)
  636. will suffice. But on other machines, instructions that appear to push
  637. one byte actually push two bytes in an attempt to maintain alignment.
  638. Then the definition should be
  639. #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
  640. `FIRST_PARM_OFFSET'
  641. Offset from the argument pointer register to the first argument's
  642. address.
  643. `RETURN_POPS_ARGS (FUNTYPE)'
  644. A C expression that should be 1 if a function pops its own arguments
  645. on returning, or 0 if the function pops no arguments and the caller
  646. must therefore pop them all after the function returns.
  647. FUNTYPE is a C variable whose value is a tree node that describes the
  648. function in question. Normally it is a node of type `FUNCTION_TYPE'
  649. that describes the data type of the function. From this it is
  650. possible to obtain the data types of the value and arguments (if known).
  651. When a call to a library function is being considered, FUNTYPE will
  652. contain an identifier node for the library function. Thus, if you
  653. need to distinguish among various library functions, you can do so by
  654. their names. Note that ``library function'' in this context means a
  655. function used to perform arithmetic, whose name is known specially in
  656. the compiler and was not mentioned in the C code being compiled.
  657. On the Vax, all functions always pop their arguments, so the
  658. definition of this macro is 1. On the 68000, using the standard
  659. calling convention, no functions pop their arguments, so the value of
  660. the macro is always 0 in this case. But an alternative calling
  661. convention is available in which functions that take a fixed number of
  662. arguments pop them but other functions (such as `printf') pop nothing
  663. (the caller pops all). When this convention is in use, FUNTYPE is
  664. examined to determine whether a function takes a fixed number of
  665. arguments.
  666. `FUNCTION_VALUE (VALTYPE, FUNC)'
  667. A C expression to create an RTX representing the place where a
  668. function returns a value of data type VALTYPE. VALTYPE is a tree node
  669. representing a data type. Write `TYPE_MODE (VALTYPE)' to get the
  670. machine mode used to represent that type. On many machines, only the
  671. mode is relevant. (Actually, on most machines, scalar values are
  672. returned in the same place regardless of mode).
  673. If the precise function being called is known, FUNC is a tree node
  674. (`FUNCTION_DECL') for it; otherwise, FUNC is a null pointer. This
  675. makes it possible to use a different value-returning convention for
  676. specific functions when all their calls are known.
  677. `FUNCTION_OUTGOING_VALUE (VALTYPE, FUNC)'
  678. Define this macro if the target machine has ``register windows'' so
  679. that the register in which a function returns its value is not the
  680. same as the one in which the caller sees the value.
  681. For such machines, `FUNCTION_VALUE' computes the register in which the
  682. caller will see the value, and `FUNCTION_OUTGOING_VALUE' should be
  683. defined in a similar fashion to tell the function where to put the
  684. value.
  685. If `FUNCTION_OUTGOING_VALUE' is not defined, `FUNCTION_VALUE' serves
  686. both purposes.
  687. `LIBCALL_VALUE (MODE)'
  688. A C expression to create an RTX representing the place where a library
  689. function returns a value of mode MODE. If the precise function being
  690. called is known, FUNC is a tree node (`FUNCTION_DECL') for it;
  691. otherwise, FUNC is a null pointer. This makes it possible to use a
  692. different value-returning convention for specific functions when all
  693. their calls are known.
  694. Note that ``library function'' in this context means a compiler
  695. support routine, used to perform arithmetic, whose name is known
  696. specially by the compiler and was not mentioned in the C code being
  697. compiled.
  698. `FUNCTION_VALUE_REGNO_P (REGNO)'
  699. A C expression that is nonzero if REGNO is the number of a hard
  700. register in which function values are sometimes returned.
  701. A register whose use for returning values is limited to serving as the
  702. second of a pair (for a value of type `double', say) need not be
  703. recognized by this macro. So for most machines, this definition
  704. suffices:
  705. #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
  706. `FUNCTION_ARG (CUM, MODE, TYPE, NAMED)'
  707. A C expression that controls whether a function argument is passed in
  708. a register, and which register.
  709. The arguments are CUM, which summarizes all the previous arguments;
  710. MODE, the machine mode of the argument; TYPE, the data type of the
  711. argument as a tree node or 0 if that is not known (which happens for C
  712. support library functions); and NAMED, which is 1 for an ordinary
  713. argument and 0 for nameless arguments that correspond to `...' in the
  714. called function's prototype.
  715. The value of the expression should either be a `reg' RTX for the hard
  716. register in which to pass the argument, or zero to pass the argument
  717. on the stack.
  718. For the Vax and 68000, where normally all arguments are pushed, zero
  719. suffices as a definition.
  720. `FUNCTION_INCOMING_ARG (CUM, MODE, TYPE, NAMED)'
  721. Define this macro if the target machine has ``register windows'', so
  722. that the register in which a function sees an arguments is not
  723. necessarily the same as the one in which the caller passed the argument.
  724. For such machines, `FUNCTION_ARG' computes the register in which the
  725. caller passes the value, and `FUNCTION_INCOMING_ARG' should be defined
  726. in a similar fashion to tell the function being called where the
  727. arguments will arrive.
  728. If `FUNCTION_INCOMING_ARG' is not defined, `FUNCTION_ARG' serves both
  729. purposes.
  730. `FUNCTION_ARG_PARTIAL_NREGS (CUM, MODE, TYPE, NAMED)'
  731. A C expression for the number of words, at the beginning of an
  732. argument, must be put in registers. The value must be zero for
  733. arguments that are passed entirely in registers or that are entirely
  734. pushed on the stack.
  735. On some machines, certain arguments must be passed partially in
  736. registers and partially in memory. On these machines, typically the
  737. first N words of arguments are passed in registers, and the rest on
  738. the stack. If a multi-word argument (a `double' or a structure)
  739. crosses that boundary, its first few words must be passed in registers
  740. and the rest must be pushed. This macro tells the compiler when this
  741. occurs, and how many of the words should go in registers.
  742. `FUNCTION_ARG' for these arguments should return the first register to
  743. be used by the caller for this argument; likewise
  744. `FUNCTION_INCOMING_ARG', for the called function.
  745. `CUMULATIVE_ARGS'
  746. A C type for declaring a variable that is used as the first argument
  747. of `FUNCTION_ARG' and other related values. For some target machines,
  748. the type `int' suffices and can hold the number of bytes of argument
  749. so far.
  750. `INIT_CUMULATIVE_ARGS (CUM)'
  751. A C statement (sans semicolon) for initializing the variable CUM for
  752. the state at the beginning of the argument list. The variable has
  753. type `CUMULATIVE_ARGS'.
  754. `FUNCTION_ARG_ADVANCE (CUM, MODE, TYPE, NAMED)'
  755. Update the summarizer variable CUM to advance past an argument in the
  756. argument list. The values MODE, TYPE and NAMED describe that
  757. argument. Once this is done, the variable CUM is suitable for
  758. analyzing the *following* argument with `FUNCTION_ARG', etc.
  759. `FUNCTION_ARG_REGNO_P (REGNO)'
  760. A C expression that is nonzero if REGNO is the number of a hard
  761. register in which function arguments are sometimes passed. This does
  762. *not* include implicit arguments such as the static chain and the
  763. structure-value address. On many machines, no registers can be used
  764. for this purpose since all function arguments are pushed on the stack.
  765. `FUNCTION_PROLOGUE (FILE, SIZE)'
  766. A C compound statement that outputs the assembler code for entry to a
  767. function. The prologue is responsible for setting up the stack frame,
  768. initializing the frame pointer register, saving registers that must be
  769. saved, and allocating SIZE additional bytes of storage for the local
  770. variables. SIZE is an integer. FILE is a stdio stream to which the
  771. assembler code should be output.
  772. The label for the beginning of the function need not be output by this
  773. macro. That has already been done when the macro is run.
  774. To determine which registers to save, the macro can refer to the array
  775. `regs_ever_live': element R is nonzero if hard register R is used
  776. anywhere within the function. This implies the function prologue
  777. should save register R, but not if it is one of the call-used registers.
  778. On machines where functions may or may not have frame-pointers, the
  779. function entry code must vary accordingly; it must set up the frame
  780. pointer if one is wanted, and not otherwise. To determine whether a
  781. frame pointer is in wanted, the macro can refer to the variable
  782. `frame_pointer_needed'. The variable's value will be 1 at run time in
  783. a function that needs a frame pointer.
  784. `FUNCTION_PROFILER (FILE, LABELNO)'
  785. A C statement or compound statement to output to FILE some assembler
  786. code to call the profiling subroutine `mcount'. Before calling, the
  787. assembler code must load the address of a counter variable into a
  788. register where `mcount' expects to find the address. The name of this
  789. variable is `LP' followed by the number LABELNO, so you would generate
  790. the name using `LP%d' in a `fprintf'.
  791. The details of how the address should be passed to `mcount' are
  792. determined by your operating system environment, not by GNU CC. To
  793. figure them out, compile a small program for profiling using the
  794. system's installed C compiler and look at the assembler code that
  795. results.
  796. `EXIT_IGNORES_STACK'
  797. Define this macro as a C expression that is nonzero if the return
  798. instruction or the function epilogue ignores the value of the stack
  799. pointer; in other words, if it is safe to delete an instruction to
  800. adjust the stack pointer before a return from the function.
  801. Note that this macro's value is relevant only for for which frame
  802. pointers are maintained. It is never possible to delete a final stack
  803. adjustment in a function that has no frame pointer, and the compiler
  804. knows this regardless of `EXIT_IGNORES_STACK'.
  805. `FUNCTION_EPILOGUE (FILE, SIZE)'
  806. A C compound statement that outputs the assembler code for exit from a
  807. function. The epilogue is responsible for restoring the saved
  808. registers and stack pointer to their values when the function was
  809. called, and returning control to the caller. This macro takes the
  810. same arguments as the macro `FUNCTION_PROLOGUE', and the registers to
  811. restore are determined from `regs_ever_live' and `CALL_USED_REGISTERS'
  812. in the same way.
  813. On some machines, there is a single instruction that does all the work
  814. of returning from the function. On these machines, give that
  815. instruction the name `return' and do not define the macro
  816. `FUNCTION_EPILOGUE' at all.
  817. On machines where functions may or may not have frame-pointers, the
  818. function exit code must vary accordingly. Sometimes the code for
  819. these two cases is completely different. To determine whether a frame
  820. pointer is in wanted, the macro can refer to the variable
  821. `frame_pointer_needed'. The variable's value will be 1 at run time in
  822. a function that needs a frame pointer.
  823. On some machines, some functions pop their arguments on exit while
  824. others leave that for the caller to do. For example, the 68020 when
  825. given `-mrtd' pops arguments in functions that take a fixed number of
  826. arguments.
  827. Your definition of the macro `RETURN_POPS_ARGS' decides which
  828. functions pop their own arguments. `FUNCTION_EPILOGUE' needs to know
  829. what was decided. The variable `current_function_pops_args' is
  830. nonzero if the function should pop its own arguments. If so, use the
  831. variable `current_function_args_size' as the number of bytes to pop.
  832. `FIX_FRAME_POINTER_ADDRESS (ADDR, DEPTH)'
  833. A C compound statement to alter a memory address that uses the frame
  834. pointer register so that it uses the stack pointer register instead.
  835. This must be done in the instructions that load parameter values into
  836. registers, when the reload pass determines that a frame pointer is not
  837. necessary for the function. ADDR will be a C variable name, and the
  838. updated address should be stored in that variable. DEPTH will be the
  839. current depth of stack temporaries (number of bytes of arguments
  840. currently pushed). The change in offset between a
  841. frame-pointer-relative address and a stack-pointer-relative address
  842. must include DEPTH.
  843. Even if your machine description specifies there will always be a
  844. frame pointer in the frame pointer register, you must still define
  845. `FIX_FRAME_POINTER_ADDRESS', but the definition will never be executed
  846. at run time, so it may be empty.
  847. 
  848. File: internals, Node: Library Names, Next: Addressing Modes, Prev: Stack Layout, Up: Machine Macros
  849. Library Subroutine Names
  850. ========================
  851. `UDIVSI3_LIBCALL'
  852. A C string constant giving the name of the function to call for
  853. division of a full-word by a full-word. If you do not define this
  854. macro, the default name is used, which is `_udivsi3', a function
  855. defined in `gnulib'.
  856. `UMODSI3_LIBCALL'
  857. A C string constant giving the name of the function to call for the
  858. remainder in division of a full-word by a full-word. If you do not
  859. define this macro, the default name is used, which is `_umodsi3', a
  860. function defined in `gnulib'.
  861. `TARGET_MEM_FUNCTIONS'
  862. Define this macro if GNU CC should generate calls to the System V (and
  863. ANSI C) library functions `memcpy' and `memset' rather than the BSD
  864. functions `bcopy' and `bzero'.
  865. 
  866. File: internals, Node: Addressing Modes, Next: Misc, Prev: Library Names, Up: Machine Macros
  867. Addressing Modes
  868. ================
  869. `HAVE_POST_INCREMENT'
  870. Define this macro if the machine supports post-increment addressing.
  871. `HAVE_PRE_INCREMENT'
  872. `HAVE_POST_DECREMENT'
  873. `HAVE_PRE_DECREMENT'
  874. Similar for other kinds of addressing.
  875. `CONSTANT_ADDRESS_P (X)'
  876. A C expression that is 1 if the RTX X is a constant whose value is an
  877. integer. This includes integers whose values are not explicitly
  878. known, such as `symbol_ref' and `label_ref' expressions and `const'
  879. arithmetic expressions.
  880. On most machines, this can be defined as `CONSTANT_P (X)', but a few
  881. machines are more restrictive in which constant addresses are supported.
  882. `MAX_REGS_PER_ADDRESS'
  883. A number, the maximum number of registers that can appear in a valid
  884. memory address.
  885. `GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)'
  886. A C compound statement with a conditional `goto LABEL;' executed if X
  887. (an RTX) is a legitimate memory address on the target machine for a
  888. memory operand of mode MODE.
  889. It usually pays to define several simpler macros to serve as
  890. subroutines for this one. Otherwise it may be too complicated to
  891. understand.
  892. This macro must exist in two variants: a strict variant and a
  893. non-strict one. The strict variant is used in the reload pass. It
  894. must be defined so that any pseudo-register that has not been
  895. allocated a hard register is considered a memory reference. In
  896. contexts where some kind of register is required, a pseudo-register
  897. with no hard register must be rejected.
  898. The non-strict variant is used in other passes. It must be defined to
  899. accept all pseudo-registers in every context where some kind of
  900. register is required.
  901. Compiler source files that want to use the strict variant of this
  902. macro define the macro `REG_OK_STRICT'. You should use an `#ifdef
  903. REG_OK_STRICT' conditional to define the strict variant in that case
  904. and the non-strict variant otherwise.
  905. Typically among the subroutines used to define
  906. `GO_IF_LEGITIMATE_ADDRESS' are subroutines to check for acceptable
  907. registers for various purposes (one for base registers, one for index
  908. registers, and so on). Then only these subroutine macros need have
  909. two variants; the higher levels of macros may be the same whether
  910. strict or not.
  911. `LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN)'
  912. A C compound statement that attempts to replace X with a valid memory
  913. address for an operand of mode MODE. WIN will be a C statement label
  914. elsewhere in the code; the macro definition may use
  915. GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN);
  916. to avoid further processing if the address has become legitimate.
  917. X will always be the result of a call to `break_out_memory_refs', and
  918. OLDX will be the operand that was given to that function to produce X.
  919. The code generated by this macro should not alter the substructure of
  920. X. If it transforms X into a more legitimate form, it should assign X
  921. (which will always be a C variable) a new value.
  922. It is not necessary for this macro to come up with a legitimate
  923. address. The compiler has standard ways of doing so in all cases. In
  924. fact, it is safe for this macro to do nothing. But often a
  925. machine-dependent strategy can generate better code.
  926. `GO_IF_MODE_DEPENDENT_ADDRESS (ADDR, LABEL)'
  927. A C statement or compound statement with a conditional `goto LABEL;'
  928. executed if memory address X (an RTX) can have different meanings
  929. depending on the machine mode of the memory reference it is used for.
  930. Autoincrement and autodecrement addresses typically have
  931. mode-dependent effects because the amount of the increment or
  932. decrement is the size of the operand being addressed. Some machines
  933. have other mode-dependent addresses. Many RISC machines have no
  934. mode-dependent addresses.
  935. You may assume that ADDR is a valid address for the machine.
  936. `LEGITIMATE_CONSTANT_P (X)'
  937. A C expression that is nonzero if X is a legitimate constant for an
  938. immediate operand on the target machine. You can assume that either X
  939. is a `const_double' or it satisfies `CONSTANT_P', so you need not
  940. check these things. In fact, `1' is a suitable definition for this
  941. macro on machines where any `const_double' is valid and anything
  942. `CONSTANT_P' is valid.
  943.