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