|
|
1.1 root 1: This is Info file gcc.info, produced by Makeinfo-1.54 from the input
2: file gcc.texi.
3:
4: This file documents the use and the internals of the GNU compiler.
5:
6: Published by the Free Software Foundation 675 Massachusetts Avenue
7: Cambridge, MA 02139 USA
8:
9: Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
10:
11: Permission is granted to make and distribute verbatim copies of this
12: manual provided the copyright notice and this permission notice are
13: preserved on all copies.
14:
15: Permission is granted to copy and distribute modified versions of
16: this manual under the conditions for verbatim copying, provided also
17: that the sections entitled "GNU General Public License" and "Protect
18: Your Freedom--Fight `Look And Feel'" are included exactly as in the
19: original, and provided that the entire resulting derived work is
20: distributed under the terms of a permission notice identical to this
21: one.
22:
23: Permission is granted to copy and distribute translations of this
24: manual into another language, under the above conditions for modified
25: versions, except that the sections entitled "GNU General Public
26: License" and "Protect Your Freedom--Fight `Look And Feel'", and this
27: permission notice, may be included in translations approved by the Free
28: Software Foundation instead of in the original English.
29:
30:
31: File: gcc.info, Node: Obsolete Register Macros, Prev: Stack Registers, Up: Registers
32:
33: Obsolete Macros for Controlling Register Usage
34: ----------------------------------------------
35:
36: These features do not work very well. They exist because they used
37: to be required to generate correct code for the 80387 coprocessor of the
38: 80386. They are no longer used by that machine description and may be
39: removed in a later version of the compiler. Don't use them!
40:
41: `OVERLAPPING_REGNO_P (REGNO)'
42: If defined, this is a C expression whose value is nonzero if hard
43: register number REGNO is an overlapping register. This means a
44: hard register which overlaps a hard register with a different
45: number. (Such overlap is undesirable, but occasionally it allows
46: a machine to be supported which otherwise could not be.) This
47: macro must return nonzero for *all* the registers which overlap
48: each other. GNU CC can use an overlapping register only in
49: certain limited ways. It can be used for allocation within a
50: basic block, and may be spilled for reloading; that is all.
51:
52: If this macro is not defined, it means that none of the hard
53: registers overlap each other. This is the usual situation.
54:
55: `INSN_CLOBBERS_REGNO_P (INSN, REGNO)'
56: If defined, this is a C expression whose value should be nonzero if
57: the insn INSN has the effect of mysteriously clobbering the
58: contents of hard register number REGNO. By "mysterious" we mean
59: that the insn's RTL expression doesn't describe such an effect.
60:
61: If this macro is not defined, it means that no insn clobbers
62: registers mysteriously. This is the usual situation; all else
63: being equal, it is best for the RTL expression to show all the
64: activity.
65:
66: `PRESERVE_DEATH_INFO_REGNO_P (REGNO)'
67: If defined, this is a C expression whose value is nonzero if
68: accurate `REG_DEAD' notes are needed for hard register number REGNO
69: at the time of outputting the assembler code. When this is so, a
70: few optimizations that take place after register allocation and
71: could invalidate the death notes are not done when this register is
72: involved.
73:
74: You would arrange to preserve death info for a register when some
75: of the code in the machine description which is executed to write
76: the assembler code looks at the death notes. This is necessary
77: only when the actual hardware feature which GNU CC thinks of as a
78: register is not actually a register of the usual sort. (It might,
79: for example, be a hardware stack.)
80:
81: If this macro is not defined, it means that no death notes need to
82: be preserved. This is the usual situation.
83:
84:
85: File: gcc.info, Node: Register Classes, Next: Stack and Calling, Prev: Registers, Up: Target Macros
86:
87: Register Classes
88: ================
89:
90: On many machines, the numbered registers are not all equivalent.
91: For example, certain registers may not be allowed for indexed
92: addressing; certain registers may not be allowed in some instructions.
93: These machine restrictions are described to the compiler using
94: "register classes".
95:
96: You define a number of register classes, giving each one a name and
97: saying which of the registers belong to it. Then you can specify
98: register classes that are allowed as operands to particular instruction
99: patterns.
100:
101: In general, each register will belong to several classes. In fact,
102: one class must be named `ALL_REGS' and contain all the registers.
103: Another class must be named `NO_REGS' and contain no registers. Often
104: the union of two classes will be another class; however, this is not
105: required.
106:
107: One of the classes must be named `GENERAL_REGS'. There is nothing
108: terribly special about the name, but the operand constraint letters `r'
109: and `g' specify this class. If `GENERAL_REGS' is the same as
110: `ALL_REGS', just define it as a macro which expands to `ALL_REGS'.
111:
112: Order the classes so that if class X is contained in class Y then X
113: has a lower class number than Y.
114:
115: The way classes other than `GENERAL_REGS' are specified in operand
116: constraints is through machine-dependent operand constraint letters.
117: You can define such letters to correspond to various classes, then use
118: them in operand constraints.
119:
120: You should define a class for the union of two classes whenever some
121: instruction allows both classes. For example, if an instruction allows
122: either a floating point (coprocessor) register or a general register
123: for a certain operand, you should define a class `FLOAT_OR_GENERAL_REGS'
124: which includes both of them. Otherwise you will get suboptimal code.
125:
126: You must also specify certain redundant information about the
127: register classes: for each class, which classes contain it and which
128: ones are contained in it; for each pair of classes, the largest class
129: contained in their union.
130:
131: When a value occupying several consecutive registers is expected in a
132: certain class, all the registers used must belong to that class.
133: Therefore, register classes cannot be used to enforce a requirement for
134: a register pair to start with an even-numbered register. The way to
135: specify this requirement is with `HARD_REGNO_MODE_OK'.
136:
137: Register classes used for input-operands of bitwise-and or shift
138: instructions have a special requirement: each such class must have, for
139: each fixed-point machine mode, a subclass whose registers can transfer
140: that mode to or from memory. For example, on some machines, the
141: operations for single-byte values (`QImode') are limited to certain
142: registers. When this is so, each register class that is used in a
143: bitwise-and or shift instruction must have a subclass consisting of
144: registers from which single-byte values can be loaded or stored. This
145: is so that `PREFERRED_RELOAD_CLASS' can always have a possible value to
146: return.
147:
148: `enum reg_class'
149: An enumeral type that must be defined with all the register class
150: names as enumeral values. `NO_REGS' must be first. `ALL_REGS'
151: must be the last register class, followed by one more enumeral
152: value, `LIM_REG_CLASSES', which is not a register class but rather
153: tells how many classes there are.
154:
155: Each register class has a number, which is the value of casting
156: the class name to type `int'. The number serves as an index in
157: many of the tables described below.
158:
159: `N_REG_CLASSES'
160: The number of distinct register classes, defined as follows:
161:
162: #define N_REG_CLASSES (int) LIM_REG_CLASSES
163:
164: `REG_CLASS_NAMES'
165: An initializer containing the names of the register classes as C
166: string constants. These names are used in writing some of the
167: debugging dumps.
168:
169: `REG_CLASS_CONTENTS'
170: An initializer containing the contents of the register classes, as
171: integers which are bit masks. The Nth integer specifies the
172: contents of class N. The way the integer MASK is interpreted is
173: that register R is in the class if `MASK & (1 << R)' is 1.
174:
175: When the machine has more than 32 registers, an integer does not
176: suffice. Then the integers are replaced by sub-initializers,
177: braced groupings containing several integers. Each
178: sub-initializer must be suitable as an initializer for the type
179: `HARD_REG_SET' which is defined in `hard-reg-set.h'.
180:
181: `REGNO_REG_CLASS (REGNO)'
182: A C expression whose value is a register class containing hard
183: register REGNO. In general there is more than one such class;
184: choose a class which is "minimal", meaning that no smaller class
185: also contains the register.
186:
187: `BASE_REG_CLASS'
188: A macro whose definition is the name of the class to which a valid
189: base register must belong. A base register is one used in an
190: address which is the register value plus a displacement.
191:
192: `INDEX_REG_CLASS'
193: A macro whose definition is the name of the class to which a valid
194: index register must belong. An index register is one used in an
195: address where its value is either multiplied by a scale factor or
196: added to another register (as well as added to a displacement).
197:
198: `REG_CLASS_FROM_LETTER (CHAR)'
199: A C expression which defines the machine-dependent operand
200: constraint letters for register classes. If CHAR is such a
201: letter, the value should be the register class corresponding to
202: it. Otherwise, the value should be `NO_REGS'. The register
203: letter `r', corresponding to class `GENERAL_REGS', will not be
204: passed to this macro; you do not need to handle it.
205:
206: `REGNO_OK_FOR_BASE_P (NUM)'
207: A C expression which is nonzero if register number NUM is suitable
208: for use as a base register in operand addresses. It may be either
209: a suitable hard register or a pseudo register that has been
210: allocated such a hard register.
211:
212: `REGNO_OK_FOR_INDEX_P (NUM)'
213: A C expression which is nonzero if register number NUM is suitable
214: for use as an index register in operand addresses. It may be
215: either a suitable hard register or a pseudo register that has been
216: allocated such a hard register.
217:
218: The difference between an index register and a base register is
219: that the index register may be scaled. If an address involves the
220: sum of two registers, neither one of them scaled, then either one
221: may be labeled the "base" and the other the "index"; but whichever
222: labeling is used must fit the machine's constraints of which
223: registers may serve in each capacity. The compiler will try both
224: labelings, looking for one that is valid, and will reload one or
225: both registers only if neither labeling works.
226:
227: `PREFERRED_RELOAD_CLASS (X, CLASS)'
228: A C expression that places additional restrictions on the register
229: class to use when it is necessary to copy value X into a register
230: in class CLASS. The value is a register class; perhaps CLASS, or
231: perhaps another, smaller class. On many machines, the following
232: definition is safe:
233:
234: #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
235:
236: Sometimes returning a more restrictive class makes better code.
237: For example, on the 68000, when X is an integer constant that is
238: in range for a `moveq' instruction, the value of this macro is
239: always `DATA_REGS' as long as CLASS includes the data registers.
240: Requiring a data register guarantees that a `moveq' will be used.
241:
242: If X is a `const_double', by returning `NO_REGS' you can force X
243: into a memory constant. This is useful on certain machines where
244: immediate floating values cannot be loaded into certain kinds of
245: registers.
246:
247: `PREFERRED_OUTPUT_RELOAD_CLASS (X, CLASS)'
248: Like `PREFERRED_RELOAD_CLASS', but for output reloads instead of
249: input reloads. If you don't define this macro, the default is to
250: use CLASS, unchanged.
251:
252: `LIMIT_RELOAD_CLASS (MODE, CLASS)'
253: A C expression that places additional restrictions on the register
254: class to use when it is necessary to be able to hold a value of
255: mode MODE in a reload register for which class CLASS would
256: ordinarily be used.
257:
258: Unlike `PREFERRED_RELOAD_CLASS', this macro should be used when
259: there are certain modes that simply can't go in certain reload
260: classes.
261:
262: The value is a register class; perhaps CLASS, or perhaps another,
263: smaller class.
264:
265: Don't define this macro unless the target machine has limitations
266: which require the macro to do something nontrivial.
267:
268: `SECONDARY_RELOAD_CLASS (CLASS, MODE, X)'
269: `SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)'
270: `SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)'
271: Many machines have some registers that cannot be copied directly
272: to or from memory or even from other types of registers. An
273: example is the `MQ' register, which on most machines, can only be
274: copied to or from general registers, but not memory. Some
275: machines allow copying all registers to and from memory, but
276: require a scratch register for stores to some memory locations
277: (e.g., those with symbolic address on the RT, and those with
278: certain symbolic address on the Sparc when compiling PIC). In
279: some cases, both an intermediate and a scratch register are
280: required.
281:
282: You should define these macros to indicate to the reload phase
283: that it may need to allocate at least one register for a reload in
284: addition to the register to contain the data. Specifically, if
285: copying X to a register CLASS in MODE requires an intermediate
286: register, you should define `SECONDARY_INPUT_RELOAD_CLASS' to
287: return the largest register class all of whose registers can be
288: used as intermediate registers or scratch registers.
289:
290: If copying a register CLASS in MODE to X requires an intermediate
291: or scratch register, `SECONDARY_OUTPUT_RELOAD_CLASS' should be
292: defined to return the largest register class required. If the
293: requirements for input and output reloads are the same, the macro
294: `SECONDARY_RELOAD_CLASS' should be used instead of defining both
295: macros identically.
296:
297: The values returned by these macros are often `GENERAL_REGS'.
298: Return `NO_REGS' if no spare register is needed; i.e., if X can be
299: directly copied to or from a register of CLASS in MODE without
300: requiring a scratch register. Do not define this macro if it
301: would always return `NO_REGS'.
302:
303: If a scratch register is required (either with or without an
304: intermediate register), you should define patterns for
305: `reload_inM' or `reload_outM', as required (*note Standard
306: Names::.. These patterns, which will normally be implemented with
307: a `define_expand', should be similar to the `movM' patterns,
308: except that operand 2 is the scratch register.
309:
310: Define constraints for the reload register and scratch register
311: that contain a single register class. If the original reload
312: register (whose class is CLASS) can meet the constraint given in
313: the pattern, the value returned by these macros is used for the
314: class of the scratch register. Otherwise, two additional reload
315: registers are required. Their classes are obtained from the
316: constraints in the insn pattern.
317:
318: X might be a pseudo-register or a `subreg' of a pseudo-register,
319: which could either be in a hard register or in memory. Use
320: `true_regnum' to find out; it will return -1 if the pseudo is in
321: memory and the hard register number if it is in a register.
322:
323: These macros should not be used in the case where a particular
324: class of registers can only be copied to memory and not to another
325: class of registers. In that case, secondary reload registers are
326: not needed and would not be helpful. Instead, a stack location
327: must be used to perform the copy and the `movM' pattern should use
328: memory as a intermediate storage. This case often occurs between
329: floating-point and general registers.
330:
331: `SECONDARY_MEMORY_NEEDED (CLASS1, CLASS2, M)'
332: Certain machines have the property that some registers cannot be
333: copied to some other registers without using memory. Define this
334: macro on those machines to be a C expression that is non-zero if
335: objects of mode M in registers of CLASS1 can only be copied to
336: registers of class CLASS2 by storing a register of CLASS1 into
337: memory and loading that memory location into a register of CLASS2.
338:
339: Do not define this macro if its value would always be zero.
340:
341: `SECONDARY_MEMORY_NEEDED_RTX (MODE)'
342: Normally, when `SECONDARY_MEMORY_NEEDED' is defined, the compiler
343: will allocate a stack slot when a memory location for a register
344: copy is needed. If this macro is defined, the compiler instead
345: uses the memory location defined by this macro.
346:
347: `SMALL_REGISTER_CLASSES'
348: Normally the compiler will avoid choosing spill registers from
349: registers that have been explicitly mentioned in the rtl (these
350: registers are normally those used to pass parameters and return
351: values). However, some machines have so few registers of certain
352: classes that there would not be enough registers to use as spill
353: registers if this were done.
354:
355: You should define `SMALL_REGISTER_CLASSES' on those machines. When
356: it is defined, the compiler allows registers explicitly used in
357: the rtl to be used as spill registers but prevents the compiler
358: from extending the lifetime of these registers.
359:
360: Defining this macro is always safe, but unnecessarily defining
361: this macro will reduce the amount of optimizations that can be
362: performed in some cases. If this macro is not defined but needs
363: to be, the compiler will run out of reload registers and print a
364: fatal error message.
365:
366: For most machines, this macro should not be defined.
367:
368: `CLASS_LIKELY_SPILLED_P (CLASS)'
369: A C expression whose value is nonzero if pseudos that have been
370: assigned to registers of class CLASS would likely be spilled
371: because registers of CLASS are needed for spill registers.
372:
373: The default value of this macro returns 1 if CLASS has exactly one
374: register and zero otherwise. On most machines, this default
375: should be used. Only define this macro to some other expression
376: if pseudo allocated by `local-alloc.c' end up in memory because
377: their hard registers were needed for spill regisers. If this
378: macro returns nonzero for those classes, those pseudos will only
379: be allocated by `global.c', which knows how to reallocate the
380: pseudo to another register. If there would not be another
381: register available for reallocation, you should not change the
382: definition of this macro since the only effect of such a
383: definition would be to slow down register allocation.
384:
385: `CLASS_MAX_NREGS (CLASS, MODE)'
386: A C expression for the maximum number of consecutive registers of
387: class CLASS needed to hold a value of mode MODE.
388:
389: This is closely related to the macro `HARD_REGNO_NREGS'. In fact,
390: the value of the macro `CLASS_MAX_NREGS (CLASS, MODE)' should be
391: the maximum value of `HARD_REGNO_NREGS (REGNO, MODE)' for all
392: REGNO values in the class CLASS.
393:
394: This macro helps control the handling of multiple-word values in
395: the reload pass.
396:
397: Three other special macros describe which operands fit which
398: constraint letters.
399:
400: `CONST_OK_FOR_LETTER_P (VALUE, C)'
401: A C expression that defines the machine-dependent operand
402: constraint letters that specify particular ranges of integer
403: values. If C is one of those letters, the expression should check
404: that VALUE, an integer, is in the appropriate range and return 1
405: if so, 0 otherwise. If C is not one of those letters, the value
406: should be 0 regardless of VALUE.
407:
408: `CONST_DOUBLE_OK_FOR_LETTER_P (VALUE, C)'
409: A C expression that defines the machine-dependent operand
410: constraint letters that specify particular ranges of
411: `const_double' values.
412:
413: If C is one of those letters, the expression should check that
414: VALUE, an RTX of code `const_double', is in the appropriate range
415: and return 1 if so, 0 otherwise. If C is not one of those
416: letters, the value should be 0 regardless of VALUE.
417:
418: `const_double' is used for all floating-point constants and for
419: `DImode' fixed-point constants. A given letter can accept either
420: or both kinds of values. It can use `GET_MODE' to distinguish
421: between these kinds.
422:
423: `EXTRA_CONSTRAINT (VALUE, C)'
424: A C expression that defines the optional machine-dependent
425: constraint letters that can be used to segregate specific types of
426: operands, usually memory references, for the target machine.
427: Normally this macro will not be defined. If it is required for a
428: particular target machine, it should return 1 if VALUE corresponds
429: to the operand type represented by the constraint letter C. If C
430: is not defined as an extra constraint, the value returned should
431: be 0 regardless of VALUE.
432:
433: For example, on the ROMP, load instructions cannot have their
434: output in r0 if the memory reference contains a symbolic address.
435: Constraint letter `Q' is defined as representing a memory address
436: that does *not* contain a symbolic address. An alternative is
437: specified with a `Q' constraint on the input and `r' on the
438: output. The next alternative specifies `m' on the input and a
439: register class that does not include r0 on the output.
440:
441:
442: File: gcc.info, Node: Stack and Calling, Next: Varargs, Prev: Register Classes, Up: Target Macros
443:
444: Stack Layout and Calling Conventions
445: ====================================
446:
447: * Menu:
448:
449: * Frame Layout::
450: * Frame Registers::
451: * Elimination::
452: * Stack Arguments::
453: * Register Arguments::
454: * Scalar Return::
455: * Aggregate Return::
456: * Caller Saves::
457: * Function Entry::
458: * Profiling::
459:
460:
461: File: gcc.info, Node: Frame Layout, Next: Frame Registers, Up: Stack and Calling
462:
463: Basic Stack Layout
464: ------------------
465:
466: `STACK_GROWS_DOWNWARD'
467: Define this macro if pushing a word onto the stack moves the stack
468: pointer to a smaller address.
469:
470: When we say, "define this macro if ...," it means that the
471: compiler checks this macro only with `#ifdef' so the precise
472: definition used does not matter.
473:
474: `FRAME_GROWS_DOWNWARD'
475: Define this macro if the addresses of local variable slots are at
476: negative offsets from the frame pointer.
477:
478: `ARGS_GROW_DOWNWARD'
479: Define this macro if successive arguments to a function occupy
480: decreasing addresses on the stack.
481:
482: `STARTING_FRAME_OFFSET'
483: Offset from the frame pointer to the first local variable slot to
484: be allocated.
485:
486: If `FRAME_GROWS_DOWNWARD', find the next slot's offset by
487: subtracting the first slot's length from `STARTING_FRAME_OFFSET'.
488: Otherwise, it is found by adding the length of the first slot to
489: the value `STARTING_FRAME_OFFSET'.
490:
491: `STACK_POINTER_OFFSET'
492: Offset from the stack pointer register to the first location at
493: which outgoing arguments are placed. If not specified, the
494: default value of zero is used. This is the proper value for most
495: machines.
496:
497: If `ARGS_GROW_DOWNWARD', this is the offset to the location above
498: the first location at which outgoing arguments are placed.
499:
500: `FIRST_PARM_OFFSET (FUNDECL)'
501: Offset from the argument pointer register to the first argument's
502: address. On some machines it may depend on the data type of the
503: function.
504:
505: If `ARGS_GROW_DOWNWARD', this is the offset to the location above
506: the first argument's address.
507:
508: `STACK_DYNAMIC_OFFSET (FUNDECL)'
509: Offset from the stack pointer register to an item dynamically
510: allocated on the stack, e.g., by `alloca'.
511:
512: The default value for this macro is `STACK_POINTER_OFFSET' plus the
513: length of the outgoing arguments. The default is correct for most
514: machines. See `function.c' for details.
515:
516: `DYNAMIC_CHAIN_ADDRESS (FRAMEADDR)'
517: A C expression whose value is RTL representing the address in a
518: stack frame where the pointer to the caller's frame is stored.
519: Assume that FRAMEADDR is an RTL expression for the address of the
520: stack frame itself.
521:
522: If you don't define this macro, the default is to return the value
523: of FRAMEADDR--that is, the stack frame address is also the address
524: of the stack word that points to the previous frame.
525:
526: `SERTUP_FRAME_ADDRESSES ()'
527: If defined, a C expression that produces the machine-specific code
528: to setup the stack so that arbitrary frames can be accessed. For
529: example, on the Sparc, we must flush all of the register windows
530: to the stack before we can access arbitrary stack frames. This
531: macro will seldom need to be defined.
532:
533: `RETURN_ADDR_RTX (COUNT, FRAMEADDR)'
534: A C expression whose value is RTL representing the value of the
535: return address for the frame COUNT steps up from the current frame.
536: fRAMEADDR is the frame pointer of the COUNT frame, or the frame
537: pointer of the COUNT - 1 frame if `RETURN_ADDR_IN_PREVIOUS_FRAME'
538: is defined.
539:
540: `RETURN_ADDR_IN_PREVIOUS_FRAME'
541: Define this if the return address of a particular stack frame is
542: accessed from the frame pointer of the previous stack frame.
543:
544:
545: File: gcc.info, Node: Frame Registers, Next: Elimination, Prev: Frame Layout, Up: Stack and Calling
546:
547: Registers That Address the Stack Frame
548: --------------------------------------
549:
550: `STACK_POINTER_REGNUM'
551: The register number of the stack pointer register, which must also
552: be a fixed register according to `FIXED_REGISTERS'. On most
553: machines, the hardware determines which register this is.
554:
555: `FRAME_POINTER_REGNUM'
556: The register number of the frame pointer register, which is used to
557: access automatic variables in the stack frame. On some machines,
558: the hardware determines which register this is. On other
559: machines, you can choose any register you wish for this purpose.
560:
561: `HARD_FRAME_POINTER_REGNUM'
562: On some machines the offset between the frame pointer and starting
563: offset of the automatic variables is not known until after register
564: allocation has been done (for example, because the saved registers
565: are between these two locations). On those machines,
566: `FRAME_POINTER_REGNUM' as a special, fixed register to be used
567: internally until the offset is known, and define
568: `HARD_FRAME_POINTER_REGNUM' to be the hard register used for the
569: frame pointer.
570:
571: You should define this macro only in the very rare circumstances
572: when it is not possible to calculate the offset between the frame
573: pointer and the automatic variables until after register
574: allocation has been completed. When this macro is defined, you
575: must also indicate in your definition of `ELIMINABLE_REGS' how to
576: eliminate `FRAME_POINTER_REGNUM' into either
577: `HARD_FRAME_POINTER_REGNUM' or `STACK_POINTER_REGNUM'.
578:
579: Do not define this macro if it would be the same as
580: `FRAME_POINTER_REGNUM'.
581:
582: `ARG_POINTER_REGNUM'
583: The register number of the arg pointer register, which is used to
584: access the function's argument list. On some machines, this is
585: the same as the frame pointer register. On some machines, the
586: hardware determines which register this is. On other machines,
587: you can choose any register you wish for this purpose. If this is
588: not the same register as the frame pointer register, then you must
589: mark it as a fixed register according to `FIXED_REGISTERS', or
590: arrange to be able to eliminate it (*note Elimination::.).
591:
592: `STATIC_CHAIN_REGNUM'
593: `STATIC_CHAIN_INCOMING_REGNUM'
594: Register numbers used for passing a function's static chain
595: pointer. If register windows are used, the register number as
596: seen by the called function is `STATIC_CHAIN_INCOMING_REGNUM',
597: while the register number as seen by the calling function is
598: `STATIC_CHAIN_REGNUM'. If these registers are the same,
599: `STATIC_CHAIN_INCOMING_REGNUM' need not be defined.
600:
601: The static chain register need not be a fixed register.
602:
603: If the static chain is passed in memory, these macros should not be
604: defined; instead, the next two macros should be defined.
605:
606: `STATIC_CHAIN'
607: `STATIC_CHAIN_INCOMING'
608: If the static chain is passed in memory, these macros provide rtx
609: giving `mem' expressions that denote where they are stored.
610: `STATIC_CHAIN' and `STATIC_CHAIN_INCOMING' give the locations as
611: seen by the calling and called functions, respectively. Often the
612: former will be at an offset from the stack pointer and the latter
613: at an offset from the frame pointer.
614:
615: The variables `stack_pointer_rtx', `frame_pointer_rtx', and
616: `arg_pointer_rtx' will have been initialized prior to the use of
617: these macros and should be used to refer to those items.
618:
619: If the static chain is passed in a register, the two previous
620: macros should be defined instead.
621:
622:
623: File: gcc.info, Node: Elimination, Next: Stack Arguments, Prev: Frame Registers, Up: Stack and Calling
624:
625: Eliminating Frame Pointer and Arg Pointer
626: -----------------------------------------
627:
628: `FRAME_POINTER_REQUIRED'
629: A C expression which is nonzero if a function must have and use a
630: frame pointer. This expression is evaluated in the reload pass.
631: If its value is nonzero the function will have a frame pointer.
632:
633: The expression can in principle examine the current function and
634: decide according to the facts, but on most machines the constant 0
635: or the constant 1 suffices. Use 0 when the machine allows code to
636: be generated with no frame pointer, and doing so saves some time
637: or space. Use 1 when there is no possible advantage to avoiding a
638: frame pointer.
639:
640: In certain cases, the compiler does not know how to produce valid
641: code without a frame pointer. The compiler recognizes those cases
642: and automatically gives the function a frame pointer regardless of
643: what `FRAME_POINTER_REQUIRED' says. You don't need to worry about
644: them.
645:
646: In a function that does not require a frame pointer, the frame
647: pointer register can be allocated for ordinary usage, unless you
648: mark it as a fixed register. See `FIXED_REGISTERS' for more
649: information.
650:
651: This macro is ignored and you do not need to define it if the
652: function `ELIMINABLE_REGS' is defined.
653:
654: `INITIAL_FRAME_POINTER_OFFSET (DEPTH-VAR)'
655: A C statement to store in the variable DEPTH-VAR the difference
656: between the frame pointer and the stack pointer values immediately
657: after the function prologue. The value would be computed from
658: information such as the result of `get_frame_size ()' and the
659: tables of registers `regs_ever_live' and `call_used_regs'.
660:
661: If `ELIMINABLE_REGS' is defined, this macro will be not be used and
662: need not be defined. Otherwise, it must be defined even if
663: `FRAME_POINTER_REQUIRED' is defined to always be true; in that
664: case, you may set DEPTH-VAR to anything.
665:
666: `ELIMINABLE_REGS'
667: If defined, this macro specifies a table of register pairs used to
668: eliminate unneeded registers that point into the stack frame. If
669: it is not defined, the only elimination attempted by the compiler
670: is to replace references to the frame pointer with references to
671: the stack pointer.
672:
673: The definition of this macro is a list of structure
674: initializations, each of which specifies an original and
675: replacement register.
676:
677: On some machines, the position of the argument pointer is not
678: known until the compilation is completed. In such a case, a
679: separate hard register must be used for the argument pointer.
680: This register can be eliminated by replacing it with either the
681: frame pointer or the argument pointer, depending on whether or not
682: the frame pointer has been eliminated.
683:
684: In this case, you might specify:
685: #define ELIMINABLE_REGS \
686: {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
687: {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, \
688: {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
689:
690: Note that the elimination of the argument pointer with the stack
691: pointer is specified first since that is the preferred elimination.
692:
693: `CAN_ELIMINATE (FROM-REG, TO-REG)'
694: A C expression that returns non-zero if the compiler is allowed to
695: try to replace register number FROM-REG with register number
696: TO-REG. This macro need only be defined if `ELIMINABLE_REGS' is
697: defined, and will usually be the constant 1, since most of the
698: cases preventing register elimination are things that the compiler
699: already knows about.
700:
701: `INITIAL_ELIMINATION_OFFSET (FROM-REG, TO-REG, OFFSET-VAR)'
702: This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'. It
703: specifies the initial difference between the specified pair of
704: registers. This macro must be defined if `ELIMINABLE_REGS' is
705: defined.
706:
707: `LONGJMP_RESTORE_FROM_STACK'
708: Define this macro if the `longjmp' function restores registers from
709: the stack frames, rather than from those saved specifically by
710: `setjmp'. Certain quantities must not be kept in registers across
711: a call to `setjmp' on such machines.
712:
713:
714: File: gcc.info, Node: Stack Arguments, Next: Register Arguments, Prev: Elimination, Up: Stack and Calling
715:
716: Passing Function Arguments on the Stack
717: ---------------------------------------
718:
719: The macros in this section control how arguments are passed on the
720: stack. See the following section for other macros that control passing
721: certain arguments in registers.
722:
723: `PROMOTE_PROTOTYPES'
724: Define this macro if an argument declared in a prototype as an
725: integral type smaller than `int' should actually be passed as an
726: `int'. In addition to avoiding errors in certain cases of
727: mismatch, it also makes for better code on certain machines.
728:
729: `PUSH_ROUNDING (NPUSHED)'
730: A C expression that is the number of bytes actually pushed onto the
731: stack when an instruction attempts to push NPUSHED bytes.
732:
733: If the target machine does not have a push instruction, do not
734: define this macro. That directs GNU CC to use an alternate
735: strategy: to allocate the entire argument block and then store the
736: arguments into it.
737:
738: On some machines, the definition
739:
740: #define PUSH_ROUNDING(BYTES) (BYTES)
741:
742: will suffice. But on other machines, instructions that appear to
743: push one byte actually push two bytes in an attempt to maintain
744: alignment. Then the definition should be
745:
746: #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
747:
748: `ACCUMULATE_OUTGOING_ARGS'
749: If defined, the maximum amount of space required for outgoing
750: arguments will be computed and placed into the variable
751: `current_function_outgoing_args_size'. No space will be pushed
752: onto the stack for each call; instead, the function prologue should
753: increase the stack frame size by this amount.
754:
755: Defining both `PUSH_ROUNDING' and `ACCUMULATE_OUTGOING_ARGS' is
756: not proper.
757:
758: `REG_PARM_STACK_SPACE (FNDECL)'
759: Define this macro if functions should assume that stack space has
760: been allocated for arguments even when their values are passed in
761: registers.
762:
763: The value of this macro is the size, in bytes, of the area
764: reserved for arguments passed in registers for the function
765: represented by FNDECL.
766:
767: This space can be allocated by the caller, or be a part of the
768: machine-dependent stack frame: `OUTGOING_REG_PARM_STACK_SPACE' says
769: which.
770:
771: `MAYBE_REG_PARM_STACK_SPACE'
772: `FINAL_REG_PARM_STACK_SPACE (CONST_SIZE, VAR_SIZE)'
773: Define these macros in addition to the one above if functions might
774: allocate stack space for arguments even when their values are
775: passed in registers. These should be used when the stack space
776: allocated for arguments in registers is not a simple constant
777: independent of the function declaration.
778:
779: The value of the first macro is the size, in bytes, of the area
780: that we should initially assume would be reserved for arguments
781: passed in registers.
782:
783: The value of the second macro is the actual size, in bytes, of the
784: area that will be reserved for arguments passed in registers.
785: This takes two arguments: an integer representing the number of
786: bytes of fixed sized arguments on the stack, and a tree
787: representing the number of bytes of variable sized arguments on
788: the stack.
789:
790: When these macros are defined, `REG_PARM_STACK_SPACE' will only be
791: called for libcall functions, the current function, or for a
792: function being called when it is known that such stack space must
793: be allocated. In each case this value can be easily computed.
794:
795: When deciding whether a called function needs such stack space,
796: and how much space to reserve, GNU CC uses these two macros
797: instead of `REG_PARM_STACK_SPACE'.
798:
799: `OUTGOING_REG_PARM_STACK_SPACE'
800: Define this if it is the responsibility of the caller to allocate
801: the area reserved for arguments passed in registers.
802:
803: If `ACCUMULATE_OUTGOING_ARGS' is defined, this macro controls
804: whether the space for these arguments counts in the value of
805: `current_function_outgoing_args_size'.
806:
807: `STACK_PARMS_IN_REG_PARM_AREA'
808: Define this macro if `REG_PARM_STACK_SPACE' is defined, but the
809: stack parameters don't skip the area specified by it.
810:
811: Normally, when a parameter is not passed in registers, it is
812: placed on the stack beyond the `REG_PARM_STACK_SPACE' area.
813: Defining this macro suppresses this behavior and causes the
814: parameter to be passed on the stack in its natural location.
815:
816: `RETURN_POPS_ARGS (FUNTYPE, STACK-SIZE)'
817: A C expression that should indicate the number of bytes of its own
818: arguments that a function pops on returning, or 0 if the function
819: pops no arguments and the caller must therefore pop them all after
820: the function returns.
821:
822: FUNTYPE is a C variable whose value is a tree node that describes
823: the function in question. Normally it is a node of type
824: `FUNCTION_TYPE' that describes the data type of the function.
825: From this it is possible to obtain the data types of the value and
826: arguments (if known).
827:
828: When a call to a library function is being considered, FUNTYPE
829: will contain an identifier node for the library function. Thus, if
830: you need to distinguish among various library functions, you can
831: do so by their names. Note that "library function" in this
832: context means a function used to perform arithmetic, whose name is
833: known specially in the compiler and was not mentioned in the C
834: code being compiled.
835:
836: STACK-SIZE is the number of bytes of arguments passed on the
837: stack. If a variable number of bytes is passed, it is zero, and
838: argument popping will always be the responsibility of the calling
839: function.
840:
841: On the Vax, all functions always pop their arguments, so the
842: definition of this macro is STACK-SIZE. On the 68000, using the
843: standard calling convention, no functions pop their arguments, so
844: the value of the macro is always 0 in this case. But an
845: alternative calling convention is available in which functions
846: that take a fixed number of arguments pop them but other functions
847: (such as `printf') pop nothing (the caller pops all). When this
848: convention is in use, FUNTYPE is examined to determine whether a
849: function takes a fixed number of arguments.
850:
851:
852: File: gcc.info, Node: Register Arguments, Next: Scalar Return, Prev: Stack Arguments, Up: Stack and Calling
853:
854: Passing Arguments in Registers
855: ------------------------------
856:
857: This section describes the macros which let you control how various
858: types of arguments are passed in registers or how they are arranged in
859: the stack.
860:
861: `FUNCTION_ARG (CUM, MODE, TYPE, NAMED)'
862: A C expression that controls whether a function argument is passed
863: in a register, and which register.
864:
865: The arguments are CUM, which summarizes all the previous
866: arguments; MODE, the machine mode of the argument; TYPE, the data
867: type of the argument as a tree node or 0 if that is not known
868: (which happens for C support library functions); and NAMED, which
869: is 1 for an ordinary argument and 0 for nameless arguments that
870: correspond to `...' in the called function's prototype.
871:
872: The value of the expression should either be a `reg' RTX for the
873: hard register in which to pass the argument, or zero to pass the
874: argument on the stack.
875:
876: For machines like the Vax and 68000, where normally all arguments
877: are pushed, zero suffices as a definition.
878:
879: The usual way to make the ANSI library `stdarg.h' work on a machine
880: where some arguments are usually passed in registers, is to cause
881: nameless arguments to be passed on the stack instead. This is done
882: by making `FUNCTION_ARG' return 0 whenever NAMED is 0.
883:
884: You may use the macro `MUST_PASS_IN_STACK (MODE, TYPE)' in the
885: definition of this macro to determine if this argument is of a
886: type that must be passed in the stack. If `REG_PARM_STACK_SPACE'
887: is not defined and `FUNCTION_ARG' returns non-zero for such an
888: argument, the compiler will abort. If `REG_PARM_STACK_SPACE' is
889: defined, the argument will be computed in the stack and then
890: loaded into a register.
891:
892: `FUNCTION_INCOMING_ARG (CUM, MODE, TYPE, NAMED)'
893: Define this macro if the target machine has "register windows", so
894: that the register in which a function sees an arguments is not
895: necessarily the same as the one in which the caller passed the
896: argument.
897:
898: For such machines, `FUNCTION_ARG' computes the register in which
899: the caller passes the value, and `FUNCTION_INCOMING_ARG' should be
900: defined in a similar fashion to tell the function being called
901: where the arguments will arrive.
902:
903: If `FUNCTION_INCOMING_ARG' is not defined, `FUNCTION_ARG' serves
904: both purposes.
905:
906: `FUNCTION_ARG_PARTIAL_NREGS (CUM, MODE, TYPE, NAMED)'
907: A C expression for the number of words, at the beginning of an
908: argument, must be put in registers. The value must be zero for
909: arguments that are passed entirely in registers or that are
910: entirely pushed on the stack.
911:
912: On some machines, certain arguments must be passed partially in
913: registers and partially in memory. On these machines, typically
914: the first N words of arguments are passed in registers, and the
915: rest on the stack. If a multi-word argument (a `double' or a
916: structure) crosses that boundary, its first few words must be
917: passed in registers and the rest must be pushed. This macro tells
918: the compiler when this occurs, and how many of the words should go
919: in registers.
920:
921: `FUNCTION_ARG' for these arguments should return the first
922: register to be used by the caller for this argument; likewise
923: `FUNCTION_INCOMING_ARG', for the called function.
924:
925: `FUNCTION_ARG_PASS_BY_REFERENCE (CUM, MODE, TYPE, NAMED)'
926: A C expression that indicates when an argument must be passed by
927: reference. If nonzero for an argument, a copy of that argument is
928: made in memory and a pointer to the argument is passed instead of
929: the argument itself. The pointer is passed in whatever way is
930: appropriate for passing a pointer to that type.
931:
932: On machines where `REG_PARM_STACK_SPACE' is not defined, a suitable
933: definition of this macro might be
934: #define FUNCTION_ARG_PASS_BY_REFERENCE\
935: (CUM, MODE, TYPE, NAMED) \
936: MUST_PASS_IN_STACK (MODE, TYPE)
937:
938: `FUNCTION_ARG_CALLEE_COPIES (CUM, MODE, TYPE, NAMED)'
939: If defined, a C expression that indicates when it is the called
940: function's responsibility to make a copy of arguments passed by
941: invisible reference. Normally, the caller makes a copy and passes
942: the address of the copy to the routine being called. When
943: FUNCTION_ARG_CALLEE_COPIES is defined and is nonzero, the caller
944: does not make a copy. Instead, it passes a pointer to the "live"
945: value. The called function must not modify this value. If it can
946: be determined that the value won't be modified, it need not make a
947: copy; otherwise a copy must be made.
948:
949: `CUMULATIVE_ARGS'
950: A C type for declaring a variable that is used as the first
951: argument of `FUNCTION_ARG' and other related values. For some
952: target machines, the type `int' suffices and can hold the number
953: of bytes of argument so far.
954:
955: There is no need to record in `CUMULATIVE_ARGS' anything about the
956: arguments that have been passed on the stack. The compiler has
957: other variables to keep track of that. For target machines on
958: which all arguments are passed on the stack, there is no need to
959: store anything in `CUMULATIVE_ARGS'; however, the data structure
960: must exist and should not be empty, so use `int'.
961:
962: `INIT_CUMULATIVE_ARGS (CUM, FNTYPE, LIBNAME)'
963: A C statement (sans semicolon) for initializing the variable CUM
964: for the state at the beginning of the argument list. The variable
965: has type `CUMULATIVE_ARGS'. The value of FNTYPE is the tree node
966: for the data type of the function which will receive the args, or 0
967: if the args are to a compiler support library function.
968:
969: When processing a call to a compiler support library function,
970: LIBNAME identifies which one. It is a `symbol_ref' rtx which
971: contains the name of the function, as a string. LIBNAME is 0 when
972: an ordinary C function call is being processed. Thus, each time
973: this macro is called, either LIBNAME or FNTYPE is nonzero, but
974: never both of them at once.
975:
976: `INIT_CUMULATIVE_INCOMING_ARGS (CUM, FNTYPE, LIBNAME)'
977: Like `INIT_CUMULATIVE_ARGS' but overrides it for the purposes of
978: finding the arguments for the function being compiled. If this
979: macro is undefined, `INIT_CUMULATIVE_ARGS' is used instead.
980:
981: The value passed for LIBNAME is always 0, since library routines
982: with special calling conventions are never compiled with GNU CC.
983: The argument LIBNAME exists for symmetry with
984: `INIT_CUMULATIVE_ARGS'.
985:
986: `FUNCTION_ARG_ADVANCE (CUM, MODE, TYPE, NAMED)'
987: A C statement (sans semicolon) to update the summarizer variable
988: CUM to advance past an argument in the argument list. The values
989: MODE, TYPE and NAMED describe that argument. Once this is done,
990: the variable CUM is suitable for analyzing the *following*
991: argument with `FUNCTION_ARG', etc.
992:
993: This macro need not do anything if the argument in question was
994: passed on the stack. The compiler knows how to track the amount
995: of stack space used for arguments without any special help.
996:
997: `FUNCTION_ARG_PADDING (MODE, TYPE)'
998: If defined, a C expression which determines whether, and in which
999: direction, to pad out an argument with extra space. The value
1000: should be of type `enum direction': either `upward' to pad above
1001: the argument, `downward' to pad below, or `none' to inhibit
1002: padding.
1003:
1004: The *amount* of padding is always just enough to reach the next
1005: multiple of `FUNCTION_ARG_BOUNDARY'; this macro does not control
1006: it.
1007:
1008: This macro has a default definition which is right for most
1009: systems. For little-endian machines, the default is to pad
1010: upward. For big-endian machines, the default is to pad downward
1011: for an argument of constant size shorter than an `int', and upward
1012: otherwise.
1013:
1014: `FUNCTION_ARG_BOUNDARY (MODE, TYPE)'
1015: If defined, a C expression that gives the alignment boundary, in
1016: bits, of an argument with the specified mode and type. If it is
1017: not defined, `PARM_BOUNDARY' is used for all arguments.
1018:
1019: `FUNCTION_ARG_REGNO_P (REGNO)'
1020: A C expression that is nonzero if REGNO is the number of a hard
1021: register in which function arguments are sometimes passed. This
1022: does *not* include implicit arguments such as the static chain and
1023: the structure-value address. On many machines, no registers can be
1024: used for this purpose since all function arguments are pushed on
1025: the stack.
1026:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.