source: trunk/third/gcc/gcc.info-21 @ 8834

Revision 8834, 43.5 KB checked in by ghudson, 28 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r8833, which included commits to RCS files with non-trunk default branches.
Line 
1This is Info file gcc.info, produced by Makeinfo-1.55 from the input
2file gcc.texi.
3
4   This file documents the use and the internals of the GNU compiler.
5
6   Published by the Free Software Foundation 59 Temple Place - Suite 330
7Boston, MA 02111-1307 USA
8
9   Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 Free Software
10Foundation, Inc.
11
12   Permission is granted to make and distribute verbatim copies of this
13manual provided the copyright notice and this permission notice are
14preserved on all copies.
15
16   Permission is granted to copy and distribute modified versions of
17this manual under the conditions for verbatim copying, provided also
18that the sections entitled "GNU General Public License," "Funding for
19Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are
20included exactly as in the original, and provided that the entire
21resulting derived work is distributed under the terms of a permission
22notice identical to this one.
23
24   Permission is granted to copy and distribute translations of this
25manual into another language, under the above conditions for modified
26versions, except that the sections entitled "GNU General Public
27License," "Funding for Free Software," and "Protect Your Freedom--Fight
28`Look And Feel'", and this permission notice, may be included in
29translations approved by the Free Software Foundation instead of in the
30original English.
31
32
33File: gcc.info,  Node: Register Arguments,  Next: Scalar Return,  Prev: Stack Arguments,  Up: Stack and Calling
34
35Passing Arguments in Registers
36------------------------------
37
38   This section describes the macros which let you control how various
39types of arguments are passed in registers or how they are arranged in
40the stack.
41
42`FUNCTION_ARG (CUM, MODE, TYPE, NAMED)'
43     A C expression that controls whether a function argument is passed
44     in a register, and which register.
45
46     The arguments are CUM, which summarizes all the previous
47     arguments; MODE, the machine mode of the argument; TYPE, the data
48     type of the argument as a tree node or 0 if that is not known
49     (which happens for C support library functions); and NAMED, which
50     is 1 for an ordinary argument and 0 for nameless arguments that
51     correspond to `...' in the called function's prototype.
52
53     The value of the expression should either be a `reg' RTX for the
54     hard register in which to pass the argument, or zero to pass the
55     argument on the stack.
56
57     For machines like the Vax and 68000, where normally all arguments
58     are pushed, zero suffices as a definition.
59
60     The usual way to make the ANSI library `stdarg.h' work on a machine
61     where some arguments are usually passed in registers, is to cause
62     nameless arguments to be passed on the stack instead.  This is done
63     by making `FUNCTION_ARG' return 0 whenever NAMED is 0.
64
65     You may use the macro `MUST_PASS_IN_STACK (MODE, TYPE)' in the
66     definition of this macro to determine if this argument is of a
67     type that must be passed in the stack.  If `REG_PARM_STACK_SPACE'
68     is not defined and `FUNCTION_ARG' returns non-zero for such an
69     argument, the compiler will abort.  If `REG_PARM_STACK_SPACE' is
70     defined, the argument will be computed in the stack and then
71     loaded into a register.
72
73`FUNCTION_INCOMING_ARG (CUM, MODE, TYPE, NAMED)'
74     Define this macro if the target machine has "register windows", so
75     that the register in which a function sees an arguments is not
76     necessarily the same as the one in which the caller passed the
77     argument.
78
79     For such machines, `FUNCTION_ARG' computes the register in which
80     the caller passes the value, and `FUNCTION_INCOMING_ARG' should be
81     defined in a similar fashion to tell the function being called
82     where the arguments will arrive.
83
84     If `FUNCTION_INCOMING_ARG' is not defined, `FUNCTION_ARG' serves
85     both purposes.
86
87`FUNCTION_ARG_PARTIAL_NREGS (CUM, MODE, TYPE, NAMED)'
88     A C expression for the number of words, at the beginning of an
89     argument, must be put in registers.  The value must be zero for
90     arguments that are passed entirely in registers or that are
91     entirely pushed on the stack.
92
93     On some machines, certain arguments must be passed partially in
94     registers and partially in memory.  On these machines, typically
95     the first N words of arguments are passed in registers, and the
96     rest on the stack.  If a multi-word argument (a `double' or a
97     structure) crosses that boundary, its first few words must be
98     passed in registers and the rest must be pushed.  This macro tells
99     the compiler when this occurs, and how many of the words should go
100     in registers.
101
102     `FUNCTION_ARG' for these arguments should return the first
103     register to be used by the caller for this argument; likewise
104     `FUNCTION_INCOMING_ARG', for the called function.
105
106`FUNCTION_ARG_PASS_BY_REFERENCE (CUM, MODE, TYPE, NAMED)'
107     A C expression that indicates when an argument must be passed by
108     reference.  If nonzero for an argument, a copy of that argument is
109     made in memory and a pointer to the argument is passed instead of
110     the argument itself.  The pointer is passed in whatever way is
111     appropriate for passing a pointer to that type.
112
113     On machines where `REG_PARM_STACK_SPACE' is not defined, a suitable
114     definition of this macro might be
115          #define FUNCTION_ARG_PASS_BY_REFERENCE\
116          (CUM, MODE, TYPE, NAMED)  \
117            MUST_PASS_IN_STACK (MODE, TYPE)
118
119`FUNCTION_ARG_CALLEE_COPIES (CUM, MODE, TYPE, NAMED)'
120     If defined, a C expression that indicates when it is the called
121     function's responsibility to make a copy of arguments passed by
122     invisible reference.  Normally, the caller makes a copy and passes
123     the address of the copy to the routine being called.  When
124     FUNCTION_ARG_CALLEE_COPIES is defined and is nonzero, the caller
125     does not make a copy.  Instead, it passes a pointer to the "live"
126     value.  The called function must not modify this value.  If it can
127     be determined that the value won't be modified, it need not make a
128     copy; otherwise a copy must be made.
129
130`CUMULATIVE_ARGS'
131     A C type for declaring a variable that is used as the first
132     argument of `FUNCTION_ARG' and other related values.  For some
133     target machines, the type `int' suffices and can hold the number
134     of bytes of argument so far.
135
136     There is no need to record in `CUMULATIVE_ARGS' anything about the
137     arguments that have been passed on the stack.  The compiler has
138     other variables to keep track of that.  For target machines on
139     which all arguments are passed on the stack, there is no need to
140     store anything in `CUMULATIVE_ARGS'; however, the data structure
141     must exist and should not be empty, so use `int'.
142
143`INIT_CUMULATIVE_ARGS (CUM, FNTYPE, LIBNAME)'
144     A C statement (sans semicolon) for initializing the variable CUM
145     for the state at the beginning of the argument list.  The variable
146     has type `CUMULATIVE_ARGS'.  The value of FNTYPE is the tree node
147     for the data type of the function which will receive the args, or 0
148     if the args are to a compiler support library function.
149
150     When processing a call to a compiler support library function,
151     LIBNAME identifies which one.  It is a `symbol_ref' rtx which
152     contains the name of the function, as a string.  LIBNAME is 0 when
153     an ordinary C function call is being processed.  Thus, each time
154     this macro is called, either LIBNAME or FNTYPE is nonzero, but
155     never both of them at once.
156
157`INIT_CUMULATIVE_INCOMING_ARGS (CUM, FNTYPE, LIBNAME)'
158     Like `INIT_CUMULATIVE_ARGS' but overrides it for the purposes of
159     finding the arguments for the function being compiled.  If this
160     macro is undefined, `INIT_CUMULATIVE_ARGS' is used instead.
161
162     The value passed for LIBNAME is always 0, since library routines
163     with special calling conventions are never compiled with GNU CC.
164     The argument LIBNAME exists for symmetry with
165     `INIT_CUMULATIVE_ARGS'.
166
167`FUNCTION_ARG_ADVANCE (CUM, MODE, TYPE, NAMED)'
168     A C statement (sans semicolon) to update the summarizer variable
169     CUM to advance past an argument in the argument list.  The values
170     MODE, TYPE and NAMED describe that argument.  Once this is done,
171     the variable CUM is suitable for analyzing the *following*
172     argument with `FUNCTION_ARG', etc.
173
174     This macro need not do anything if the argument in question was
175     passed on the stack.  The compiler knows how to track the amount
176     of stack space used for arguments without any special help.
177
178`FUNCTION_ARG_PADDING (MODE, TYPE)'
179     If defined, a C expression which determines whether, and in which
180     direction, to pad out an argument with extra space.  The value
181     should be of type `enum direction': either `upward' to pad above
182     the argument, `downward' to pad below, or `none' to inhibit
183     padding.
184
185     The *amount* of padding is always just enough to reach the next
186     multiple of `FUNCTION_ARG_BOUNDARY'; this macro does not control
187     it.
188
189     This macro has a default definition which is right for most
190     systems.  For little-endian machines, the default is to pad
191     upward.  For big-endian machines, the default is to pad downward
192     for an argument of constant size shorter than an `int', and upward
193     otherwise.
194
195`FUNCTION_ARG_BOUNDARY (MODE, TYPE)'
196     If defined, a C expression that gives the alignment boundary, in
197     bits, of an argument with the specified mode and type.  If it is
198     not defined, `PARM_BOUNDARY' is used for all arguments.
199
200`FUNCTION_ARG_REGNO_P (REGNO)'
201     A C expression that is nonzero if REGNO is the number of a hard
202     register in which function arguments are sometimes passed.  This
203     does *not* include implicit arguments such as the static chain and
204     the structure-value address.  On many machines, no registers can be
205     used for this purpose since all function arguments are pushed on
206     the stack.
207
208
209File: gcc.info,  Node: Scalar Return,  Next: Aggregate Return,  Prev: Register Arguments,  Up: Stack and Calling
210
211How Scalar Function Values Are Returned
212---------------------------------------
213
214   This section discusses the macros that control returning scalars as
215values--values that can fit in registers.
216
217`TRADITIONAL_RETURN_FLOAT'
218     Define this macro if `-traditional' should not cause functions
219     declared to return `float' to convert the value to `double'.
220
221`FUNCTION_VALUE (VALTYPE, FUNC)'
222     A C expression to create an RTX representing the place where a
223     function returns a value of data type VALTYPE.  VALTYPE is a tree
224     node representing a data type.  Write `TYPE_MODE (VALTYPE)' to get
225     the machine mode used to represent that type.  On many machines,
226     only the mode is relevant.  (Actually, on most machines, scalar
227     values are returned in the same place regardless of mode).
228
229     If `PROMOTE_FUNCTION_RETURN' is defined, you must apply the same
230     promotion rules specified in `PROMOTE_MODE' if VALTYPE is a scalar
231     type.
232
233     If the precise function being called is known, FUNC is a tree node
234     (`FUNCTION_DECL') for it; otherwise, FUNC is a null pointer.  This
235     makes it possible to use a different value-returning convention
236     for specific functions when all their calls are known.
237
238     `FUNCTION_VALUE' is not used for return vales with aggregate data
239     types, because these are returned in another way.  See
240     `STRUCT_VALUE_REGNUM' and related macros, below.
241
242`FUNCTION_OUTGOING_VALUE (VALTYPE, FUNC)'
243     Define this macro if the target machine has "register windows" so
244     that the register in which a function returns its value is not the
245     same as the one in which the caller sees the value.
246
247     For such machines, `FUNCTION_VALUE' computes the register in which
248     the caller will see the value.  `FUNCTION_OUTGOING_VALUE' should be
249     defined in a similar fashion to tell the function where to put the
250     value.
251
252     If `FUNCTION_OUTGOING_VALUE' is not defined, `FUNCTION_VALUE'
253     serves both purposes.
254
255     `FUNCTION_OUTGOING_VALUE' is not used for return vales with
256     aggregate data types, because these are returned in another way.
257     See `STRUCT_VALUE_REGNUM' and related macros, below.
258
259`LIBCALL_VALUE (MODE)'
260     A C expression to create an RTX representing the place where a
261     library function returns a value of mode MODE.  If the precise
262     function being called is known, FUNC is a tree node
263     (`FUNCTION_DECL') for it; otherwise, FUNC is a null pointer.  This
264     makes it possible to use a different value-returning convention
265     for specific functions when all their calls are known.
266
267     Note that "library function" in this context means a compiler
268     support routine, used to perform arithmetic, whose name is known
269     specially by the compiler and was not mentioned in the C code being
270     compiled.
271
272     The definition of `LIBRARY_VALUE' need not be concerned aggregate
273     data types, because none of the library functions returns such
274     types.
275
276`FUNCTION_VALUE_REGNO_P (REGNO)'
277     A C expression that is nonzero if REGNO is the number of a hard
278     register in which the values of called function may come back.
279
280     A register whose use for returning values is limited to serving as
281     the second of a pair (for a value of type `double', say) need not
282     be recognized by this macro.  So for most machines, this definition
283     suffices:
284
285          #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
286
287     If the machine has register windows, so that the caller and the
288     called function use different registers for the return value, this
289     macro should recognize only the caller's register numbers.
290
291`APPLY_RESULT_SIZE'
292     Define this macro if `untyped_call' and `untyped_return' need more
293     space than is implied by `FUNCTION_VALUE_REGNO_P' for saving and
294     restoring an arbitrary return value.
295
296
297File: gcc.info,  Node: Aggregate Return,  Next: Caller Saves,  Prev: Scalar Return,  Up: Stack and Calling
298
299How Large Values Are Returned
300-----------------------------
301
302   When a function value's mode is `BLKmode' (and in some other cases),
303the value is not returned according to `FUNCTION_VALUE' (*note Scalar
304Return::.).  Instead, the caller passes the address of a block of
305memory in which the value should be stored.  This address is called the
306"structure value address".
307
308   This section describes how to control returning structure values in
309memory.
310
311`RETURN_IN_MEMORY (TYPE)'
312     A C expression which can inhibit the returning of certain function
313     values in registers, based on the type of value.  A nonzero value
314     says to return the function value in memory, just as large
315     structures are always returned.  Here TYPE will be a C expression
316     of type `tree', representing the data type of the value.
317
318     Note that values of mode `BLKmode' must be explicitly handled by
319     this macro.  Also, the option `-fpcc-struct-return' takes effect
320     regardless of this macro.  On most systems, it is possible to
321     leave the macro undefined; this causes a default definition to be
322     used, whose value is the constant 1 for `BLKmode' values, and 0
323     otherwise.
324
325     Do not use this macro to indicate that structures and unions
326     should always be returned in memory.  You should instead use
327     `DEFAULT_PCC_STRUCT_RETURN' to indicate this.
328
329`DEFAULT_PCC_STRUCT_RETURN'
330     Define this macro to be 1 if all structure and union return values
331     must be in memory.  Since this results in slower code, this should
332     be defined only if needed for compatibility with other compilers
333     or with an ABI.  If you define this macro to be 0, then the
334     conventions used for structure and union return values are decided
335     by the `RETURN_IN_MEMORY' macro.
336
337     If not defined, this defaults to the value 1.
338
339`STRUCT_VALUE_REGNUM'
340     If the structure value address is passed in a register, then
341     `STRUCT_VALUE_REGNUM' should be the number of that register.
342
343`STRUCT_VALUE'
344     If the structure value address is not passed in a register, define
345     `STRUCT_VALUE' as an expression returning an RTX for the place
346     where the address is passed.  If it returns 0, the address is
347     passed as an "invisible" first argument.
348
349`STRUCT_VALUE_INCOMING_REGNUM'
350     On some architectures the place where the structure value address
351     is found by the called function is not the same place that the
352     caller put it.  This can be due to register windows, or it could
353     be because the function prologue moves it to a different place.
354
355     If the incoming location of the structure value address is in a
356     register, define this macro as the register number.
357
358`STRUCT_VALUE_INCOMING'
359     If the incoming location is not a register, then you should define
360     `STRUCT_VALUE_INCOMING' as an expression for an RTX for where the
361     called function should find the value.  If it should find the
362     value on the stack, define this to create a `mem' which refers to
363     the frame pointer.  A definition of 0 means that the address is
364     passed as an "invisible" first argument.
365
366`PCC_STATIC_STRUCT_RETURN'
367     Define this macro if the usual system convention on the target
368     machine for returning structures and unions is for the called
369     function to return the address of a static variable containing the
370     value.
371
372     Do not define this if the usual system convention is for the
373     caller to pass an address to the subroutine.
374
375     This macro has effect in `-fpcc-struct-return' mode, but it does
376     nothing when you use `-freg-struct-return' mode.
377
378
379File: gcc.info,  Node: Caller Saves,  Next: Function Entry,  Prev: Aggregate Return,  Up: Stack and Calling
380
381Caller-Saves Register Allocation
382--------------------------------
383
384   If you enable it, GNU CC can save registers around function calls.
385This makes it possible to use call-clobbered registers to hold
386variables that must live across calls.
387
388`DEFAULT_CALLER_SAVES'
389     Define this macro if function calls on the target machine do not
390     preserve any registers; in other words, if `CALL_USED_REGISTERS'
391     has 1 for all registers.  This macro enables `-fcaller-saves' by
392     default.  Eventually that option will be enabled by default on all
393     machines and both the option and this macro will be eliminated.
394
395`CALLER_SAVE_PROFITABLE (REFS, CALLS)'
396     A C expression to determine whether it is worthwhile to consider
397     placing a pseudo-register in a call-clobbered hard register and
398     saving and restoring it around each function call.  The expression
399     should be 1 when this is worth doing, and 0 otherwise.
400
401     If you don't define this macro, a default is used which is good on
402     most machines: `4 * CALLS < REFS'.
403
404
405File: gcc.info,  Node: Function Entry,  Next: Profiling,  Prev: Caller Saves,  Up: Stack and Calling
406
407Function Entry and Exit
408-----------------------
409
410   This section describes the macros that output function entry
411("prologue") and exit ("epilogue") code.
412
413`FUNCTION_PROLOGUE (FILE, SIZE)'
414     A C compound statement that outputs the assembler code for entry
415     to a function.  The prologue is responsible for setting up the
416     stack frame, initializing the frame pointer register, saving
417     registers that must be saved, and allocating SIZE additional bytes
418     of storage for the local variables.  SIZE is an integer.  FILE is
419     a stdio stream to which the assembler code should be output.
420
421     The label for the beginning of the function need not be output by
422     this macro.  That has already been done when the macro is run.
423
424     To determine which registers to save, the macro can refer to the
425     array `regs_ever_live': element R is nonzero if hard register R is
426     used anywhere within the function.  This implies the function
427     prologue should save register R, provided it is not one of the
428     call-used registers.  (`FUNCTION_EPILOGUE' must likewise use
429     `regs_ever_live'.)
430
431     On machines that have "register windows", the function entry code
432     does not save on the stack the registers that are in the windows,
433     even if they are supposed to be preserved by function calls;
434     instead it takes appropriate steps to "push" the register stack,
435     if any non-call-used registers are used in the function.
436
437     On machines where functions may or may not have frame-pointers, the
438     function entry code must vary accordingly; it must set up the frame
439     pointer if one is wanted, and not otherwise.  To determine whether
440     a frame pointer is in wanted, the macro can refer to the variable
441     `frame_pointer_needed'.  The variable's value will be 1 at run
442     time in a function that needs a frame pointer.  *Note
443     Elimination::.
444
445     The function entry code is responsible for allocating any stack
446     space required for the function.  This stack space consists of the
447     regions listed below.  In most cases, these regions are allocated
448     in the order listed, with the last listed region closest to the
449     top of the stack (the lowest address if `STACK_GROWS_DOWNWARD' is
450     defined, and the highest address if it is not defined).  You can
451     use a different order for a machine if doing so is more convenient
452     or required for compatibility reasons.  Except in cases where
453     required by standard or by a debugger, there is no reason why the
454     stack layout used by GCC need agree with that used by other
455     compilers for a machine.
456
457        * A region of `current_function_pretend_args_size' bytes of
458          uninitialized space just underneath the first argument
459          arriving on the stack.  (This may not be at the very start of
460          the allocated stack region if the calling sequence has pushed
461          anything else since pushing the stack arguments.  But
462          usually, on such machines, nothing else has been pushed yet,
463          because the function prologue itself does all the pushing.)
464          This region is used on machines where an argument may be
465          passed partly in registers and partly in memory, and, in some
466          cases to support the features in `varargs.h' and `stdargs.h'.
467
468        * An area of memory used to save certain registers used by the
469          function.  The size of this area, which may also include
470          space for such things as the return address and pointers to
471          previous stack frames, is machine-specific and usually
472          depends on which registers have been used in the function.
473          Machines with register windows often do not require a save
474          area.
475
476        * A region of at least SIZE bytes, possibly rounded up to an
477          allocation boundary, to contain the local variables of the
478          function.  On some machines, this region and the save area
479          may occur in the opposite order, with the save area closer to
480          the top of the stack.
481
482        * Optionally, when `ACCUMULATE_OUTGOING_ARGS' is defined, a
483          region of `current_function_outgoing_args_size' bytes to be
484          used for outgoing argument lists of the function.  *Note
485          Stack Arguments::.
486
487     Normally, it is necessary for the macros `FUNCTION_PROLOGUE' and
488     `FUNCTION_EPILOGUE' to treat leaf functions specially.  The C
489     variable `leaf_function' is nonzero for such a function.
490
491`EXIT_IGNORE_STACK'
492     Define this macro as a C expression that is nonzero if the return
493     instruction or the function epilogue ignores the value of the stack
494     pointer; in other words, if it is safe to delete an instruction to
495     adjust the stack pointer before a return from the function.
496
497     Note that this macro's value is relevant only for functions for
498     which frame pointers are maintained.  It is never safe to delete a
499     final stack adjustment in a function that has no frame pointer,
500     and the compiler knows this regardless of `EXIT_IGNORE_STACK'.
501
502`FUNCTION_EPILOGUE (FILE, SIZE)'
503     A C compound statement that outputs the assembler code for exit
504     from a function.  The epilogue is responsible for restoring the
505     saved registers and stack pointer to their values when the
506     function was called, and returning control to the caller.  This
507     macro takes the same arguments as the macro `FUNCTION_PROLOGUE',
508     and the registers to restore are determined from `regs_ever_live'
509     and `CALL_USED_REGISTERS' in the same way.
510
511     On some machines, there is a single instruction that does all the
512     work of returning from the function.  On these machines, give that
513     instruction the name `return' and do not define the macro
514     `FUNCTION_EPILOGUE' at all.
515
516     Do not define a pattern named `return' if you want the
517     `FUNCTION_EPILOGUE' to be used.  If you want the target switches
518     to control whether return instructions or epilogues are used,
519     define a `return' pattern with a validity condition that tests the
520     target switches appropriately.  If the `return' pattern's validity
521     condition is false, epilogues will be used.
522
523     On machines where functions may or may not have frame-pointers, the
524     function exit code must vary accordingly.  Sometimes the code for
525     these two cases is completely different.  To determine whether a
526     frame pointer is wanted, the macro can refer to the variable
527     `frame_pointer_needed'.  The variable's value will be 1 when
528     compiling a function that needs a frame pointer.
529
530     Normally, `FUNCTION_PROLOGUE' and `FUNCTION_EPILOGUE' must treat
531     leaf functions specially.  The C variable `leaf_function' is
532     nonzero for such a function.  *Note Leaf Functions::.
533
534     On some machines, some functions pop their arguments on exit while
535     others leave that for the caller to do.  For example, the 68020
536     when given `-mrtd' pops arguments in functions that take a fixed
537     number of arguments.
538
539     Your definition of the macro `RETURN_POPS_ARGS' decides which
540     functions pop their own arguments.  `FUNCTION_EPILOGUE' needs to
541     know what was decided.  The variable that is called
542     `current_function_pops_args' is the number of bytes of its
543     arguments that a function should pop.  *Note Scalar Return::.
544
545`DELAY_SLOTS_FOR_EPILOGUE'
546     Define this macro if the function epilogue contains delay slots to
547     which instructions from the rest of the function can be "moved".
548     The definition should be a C expression whose value is an integer
549     representing the number of delay slots there.
550
551`ELIGIBLE_FOR_EPILOGUE_DELAY (INSN, N)'
552     A C expression that returns 1 if INSN can be placed in delay slot
553     number N of the epilogue.
554
555     The argument N is an integer which identifies the delay slot now
556     being considered (since different slots may have different rules of
557     eligibility).  It is never negative and is always less than the
558     number of epilogue delay slots (what `DELAY_SLOTS_FOR_EPILOGUE'
559     returns).  If you reject a particular insn for a given delay slot,
560     in principle, it may be reconsidered for a subsequent delay slot.
561     Also, other insns may (at least in principle) be considered for
562     the so far unfilled delay slot.
563
564     The insns accepted to fill the epilogue delay slots are put in an
565     RTL list made with `insn_list' objects, stored in the variable
566     `current_function_epilogue_delay_list'.  The insn for the first
567     delay slot comes first in the list.  Your definition of the macro
568     `FUNCTION_EPILOGUE' should fill the delay slots by outputting the
569     insns in this list, usually by calling `final_scan_insn'.
570
571     You need not define this macro if you did not define
572     `DELAY_SLOTS_FOR_EPILOGUE'.
573
574
575File: gcc.info,  Node: Profiling,  Prev: Function Entry,  Up: Stack and Calling
576
577Generating Code for Profiling
578-----------------------------
579
580   These macros will help you generate code for profiling.
581
582`FUNCTION_PROFILER (FILE, LABELNO)'
583     A C statement or compound statement to output to FILE some
584     assembler code to call the profiling subroutine `mcount'.  Before
585     calling, the assembler code must load the address of a counter
586     variable into a register where `mcount' expects to find the
587     address.  The name of this variable is `LP' followed by the number
588     LABELNO, so you would generate the name using `LP%d' in a
589     `fprintf'.
590
591     The details of how the address should be passed to `mcount' are
592     determined by your operating system environment, not by GNU CC.  To
593     figure them out, compile a small program for profiling using the
594     system's installed C compiler and look at the assembler code that
595     results.
596
597`PROFILE_BEFORE_PROLOGUE'
598     Define this macro if the code for function profiling should come
599     before the function prologue.  Normally, the profiling code comes
600     after.
601
602`FUNCTION_BLOCK_PROFILER (FILE, LABELNO)'
603     A C statement or compound statement to output to FILE some
604     assembler code to initialize basic-block profiling for the current
605     object module.  This code should call the subroutine
606     `__bb_init_func' once per object module, passing it as its sole
607     argument the address of a block allocated in the object module.
608
609     The name of the block is a local symbol made with this statement:
610
611          ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 0);
612
613     Of course, since you are writing the definition of
614     `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
615     can take a short cut in the definition of this macro and use the
616     name that you know will result.
617
618     The first word of this block is a flag which will be nonzero if the
619     object module has already been initialized.  So test this word
620     first, and do not call `__bb_init_func' if the flag is nonzero.
621
622`BLOCK_PROFILER (FILE, BLOCKNO)'
623     A C statement or compound statement to increment the count
624     associated with the basic block number BLOCKNO.  Basic blocks are
625     numbered separately from zero within each compilation.  The count
626     associated with block number BLOCKNO is at index BLOCKNO in a
627     vector of words; the name of this array is a local symbol made
628     with this statement:
629
630          ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 2);
631
632     Of course, since you are writing the definition of
633     `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
634     can take a short cut in the definition of this macro and use the
635     name that you know will result.
636
637`BLOCK_PROFILER_CODE'
638     A C function or functions which are needed in the library to
639     support block profiling.
640
641
642File: gcc.info,  Node: Varargs,  Next: Trampolines,  Prev: Stack and Calling,  Up: Target Macros
643
644Implementing the Varargs Macros
645===============================
646
647   GNU CC comes with an implementation of `varargs.h' and `stdarg.h'
648that work without change on machines that pass arguments on the stack.
649Other machines require their own implementations of varargs, and the
650two machine independent header files must have conditionals to include
651it.
652
653   ANSI `stdarg.h' differs from traditional `varargs.h' mainly in the
654calling convention for `va_start'.  The traditional implementation
655takes just one argument, which is the variable in which to store the
656argument pointer.  The ANSI implementation of `va_start' takes an
657additional second argument.  The user is supposed to write the last
658named argument of the function here.
659
660   However, `va_start' should not use this argument.  The way to find
661the end of the named arguments is with the built-in functions described
662below.
663
664`__builtin_saveregs ()'
665     Use this built-in function to save the argument registers in
666     memory so that the varargs mechanism can access them.  Both ANSI
667     and traditional versions of `va_start' must use
668     `__builtin_saveregs', unless you use `SETUP_INCOMING_VARARGS' (see
669     below) instead.
670
671     On some machines, `__builtin_saveregs' is open-coded under the
672     control of the macro `EXPAND_BUILTIN_SAVEREGS'.  On other machines,
673     it calls a routine written in assembler language, found in
674     `libgcc2.c'.
675
676     Code generated for the call to `__builtin_saveregs' appears at the
677     beginning of the function, as opposed to where the call to
678     `__builtin_saveregs' is written, regardless of what the code is.
679     This is because the registers must be saved before the function
680     starts to use them for its own purposes.
681
682`__builtin_args_info (CATEGORY)'
683     Use this built-in function to find the first anonymous arguments in
684     registers.
685
686     In general, a machine may have several categories of registers
687     used for arguments, each for a particular category of data types.
688     (For example, on some machines, floating-point registers are used
689     for floating-point arguments while other arguments are passed in
690     the general registers.) To make non-varargs functions use the
691     proper calling convention, you have defined the `CUMULATIVE_ARGS'
692     data type to record how many registers in each category have been
693     used so far
694
695     `__builtin_args_info' accesses the same data structure of type
696     `CUMULATIVE_ARGS' after the ordinary argument layout is finished
697     with it, with CATEGORY specifying which word to access.  Thus, the
698     value indicates the first unused register in a given category.
699
700     Normally, you would use `__builtin_args_info' in the implementation
701     of `va_start', accessing each category just once and storing the
702     value in the `va_list' object.  This is because `va_list' will
703     have to update the values, and there is no way to alter the values
704     accessed by `__builtin_args_info'.
705
706`__builtin_next_arg (LASTARG)'
707     This is the equivalent of `__builtin_args_info', for stack
708     arguments.  It returns the address of the first anonymous stack
709     argument, as type `void *'. If `ARGS_GROW_DOWNWARD', it returns
710     the address of the location above the first anonymous stack
711     argument.  Use it in `va_start' to initialize the pointer for
712     fetching arguments from the stack.  Also use it in `va_start' to
713     verify that the second parameter LASTARG is the last named argument
714     of the current function.
715
716`__builtin_classify_type (OBJECT)'
717     Since each machine has its own conventions for which data types are
718     passed in which kind of register, your implementation of `va_arg'
719     has to embody these conventions.  The easiest way to categorize the
720     specified data type is to use `__builtin_classify_type' together
721     with `sizeof' and `__alignof__'.
722
723     `__builtin_classify_type' ignores the value of OBJECT, considering
724     only its data type.  It returns an integer describing what kind of
725     type that is--integer, floating, pointer, structure, and so on.
726
727     The file `typeclass.h' defines an enumeration that you can use to
728     interpret the values of `__builtin_classify_type'.
729
730   These machine description macros help implement varargs:
731
732`EXPAND_BUILTIN_SAVEREGS (ARGS)'
733     If defined, is a C expression that produces the machine-specific
734     code for a call to `__builtin_saveregs'.  This code will be moved
735     to the very beginning of the function, before any parameter access
736     are made.  The return value of this function should be an RTX that
737     contains the value to use as the return of `__builtin_saveregs'.
738
739     The argument ARGS is a `tree_list' containing the arguments that
740     were passed to `__builtin_saveregs'.
741
742     If this macro is not defined, the compiler will output an ordinary
743     call to the library function `__builtin_saveregs'.
744
745`SETUP_INCOMING_VARARGS (ARGS_SO_FAR, MODE, TYPE,'
746     PRETEND_ARGS_SIZE, SECOND_TIME) This macro offers an alternative
747     to using `__builtin_saveregs' and defining the macro
748     `EXPAND_BUILTIN_SAVEREGS'.  Use it to store the anonymous register
749     arguments into the stack so that all the arguments appear to have
750     been passed consecutively on the stack.  Once this is done, you
751     can use the standard implementation of varargs that works for
752     machines that pass all their arguments on the stack.
753
754     The argument ARGS_SO_FAR is the `CUMULATIVE_ARGS' data structure,
755     containing the values that obtain after processing of the named
756     arguments.  The arguments MODE and TYPE describe the last named
757     argument--its machine mode and its data type as a tree node.
758
759     The macro implementation should do two things: first, push onto the
760     stack all the argument registers *not* used for the named
761     arguments, and second, store the size of the data thus pushed into
762     the `int'-valued variable whose name is supplied as the argument
763     PRETEND_ARGS_SIZE.  The value that you store here will serve as
764     additional offset for setting up the stack frame.
765
766     Because you must generate code to push the anonymous arguments at
767     compile time without knowing their data types,
768     `SETUP_INCOMING_VARARGS' is only useful on machines that have just
769     a single category of argument register and use it uniformly for
770     all data types.
771
772     If the argument SECOND_TIME is nonzero, it means that the
773     arguments of the function are being analyzed for the second time.
774     This happens for an inline function, which is not actually
775     compiled until the end of the source file.  The macro
776     `SETUP_INCOMING_VARARGS' should not generate any instructions in
777     this case.
778
779`STRICT_ARGUMENT_NAMING'
780     Define this macro if the location where a function argument is
781     passed depends on whether or not it is a named argument.
782
783     This macro controls how the NAMED argument to `FUNCTION_ARG' is
784     set for varargs and stdarg functions.  With this macro defined,
785     the NAMED argument is always true for named arguments, and false
786     for unnamed arguments.  If this is not defined, but
787     `SETUP_INCOMING_VARARGS' is defined, then all arguments are
788     treated as named.  Otherwise, all named arguments except the last
789     are treated as named.
790
791
792File: gcc.info,  Node: Trampolines,  Next: Library Calls,  Prev: Varargs,  Up: Target Macros
793
794Trampolines for Nested Functions
795================================
796
797   A "trampoline" is a small piece of code that is created at run time
798when the address of a nested function is taken.  It normally resides on
799the stack, in the stack frame of the containing function.  These macros
800tell GNU CC how to generate code to allocate and initialize a
801trampoline.
802
803   The instructions in the trampoline must do two things: load a
804constant address into the static chain register, and jump to the real
805address of the nested function.  On CISC machines such as the m68k,
806this requires two instructions, a move immediate and a jump.  Then the
807two addresses exist in the trampoline as word-long immediate operands.
808On RISC machines, it is often necessary to load each address into a
809register in two parts.  Then pieces of each address form separate
810immediate operands.
811
812   The code generated to initialize the trampoline must store the
813variable parts--the static chain value and the function address--into
814the immediate operands of the instructions.  On a CISC machine, this is
815simply a matter of copying each address to a memory reference at the
816proper offset from the start of the trampoline.  On a RISC machine, it
817may be necessary to take out pieces of the address and store them
818separately.
819
820`TRAMPOLINE_TEMPLATE (FILE)'
821     A C statement to output, on the stream FILE, assembler code for a
822     block of data that contains the constant parts of a trampoline.
823     This code should not include a label--the label is taken care of
824     automatically.
825
826`TRAMPOLINE_SECTION'
827     The name of a subroutine to switch to the section in which the
828     trampoline template is to be placed (*note Sections::.).  The
829     default is a value of `readonly_data_section', which places the
830     trampoline in the section containing read-only data.
831
832`TRAMPOLINE_SIZE'
833     A C expression for the size in bytes of the trampoline, as an
834     integer.
835
836`TRAMPOLINE_ALIGNMENT'
837     Alignment required for trampolines, in bits.
838
839     If you don't define this macro, the value of `BIGGEST_ALIGNMENT'
840     is used for aligning trampolines.
841
842`INITIALIZE_TRAMPOLINE (ADDR, FNADDR, STATIC_CHAIN)'
843     A C statement to initialize the variable parts of a trampoline.
844     aDDR is an RTX for the address of the trampoline; FNADDR is an RTX
845     for the address of the nested function; STATIC_CHAIN is an RTX for
846     the static chain value that should be passed to the function when
847     it is called.
848
849`ALLOCATE_TRAMPOLINE (FP)'
850     A C expression to allocate run-time space for a trampoline.  The
851     expression value should be an RTX representing a memory reference
852     to the space for the trampoline.
853
854     If this macro is not defined, by default the trampoline is
855     allocated as a stack slot.  This default is right for most
856     machines.  The exceptions are machines where it is impossible to
857     execute instructions in the stack area.  On such machines, you may
858     have to implement a separate stack, using this macro in
859     conjunction with `FUNCTION_PROLOGUE' and `FUNCTION_EPILOGUE'.
860
861     FP points to a data structure, a `struct function', which
862     describes the compilation status of the immediate containing
863     function of the function which the trampoline is for.  Normally
864     (when `ALLOCATE_TRAMPOLINE' is not defined), the stack slot for the
865     trampoline is in the stack frame of this containing function.
866     Other allocation strategies probably must do something analogous
867     with this information.
868
869   Implementing trampolines is difficult on many machines because they
870have separate instruction and data caches.  Writing into a stack
871location fails to clear the memory in the instruction cache, so when
872the program jumps to that location, it executes the old contents.
873
874   Here are two possible solutions.  One is to clear the relevant parts
875of the instruction cache whenever a trampoline is set up.  The other is
876to make all trampolines identical, by having them jump to a standard
877subroutine.  The former technique makes trampoline execution faster; the
878latter makes initialization faster.
879
880   To clear the instruction cache when a trampoline is initialized,
881define the following macros which describe the shape of the cache.
882
883`INSN_CACHE_SIZE'
884     The total size in bytes of the cache.
885
886`INSN_CACHE_LINE_WIDTH'
887     The length in bytes of each cache line.  The cache is divided into
888     cache lines which are disjoint slots, each holding a contiguous
889     chunk of data fetched from memory.  Each time data is brought into
890     the cache, an entire line is read at once.  The data loaded into a
891     cache line is always aligned on a boundary equal to the line size.
892
893`INSN_CACHE_DEPTH'
894     The number of alternative cache lines that can hold any particular
895     memory location.
896
897   Alternatively, if the machine has system calls or instructions to
898clear the instruction cache directly, you can define the following
899macro.
900
901`CLEAR_INSN_CACHE (BEG, END)'
902     If defined, expands to a C expression clearing the *instruction
903     cache* in the specified interval.  If it is not defined, and the
904     macro INSN_CACHE_SIZE is defined, some generic code is generated
905     to clear the cache.  The definition of this macro would typically
906     be a series of `asm' statements.  Both BEG and END are both pointer
907     expressions.
908
909   To use a standard subroutine, define the following macro.  In
910addition, you must make sure that the instructions in a trampoline fill
911an entire cache line with identical instructions, or else ensure that
912the beginning of the trampoline code is always aligned at the same
913point in its cache line.  Look in `m68k.h' as a guide.
914
915`TRANSFER_FROM_TRAMPOLINE'
916     Define this macro if trampolines need a special subroutine to do
917     their work.  The macro should expand to a series of `asm'
918     statements which will be compiled with GNU CC.  They go in a
919     library function named `__transfer_from_trampoline'.
920
921     If you need to avoid executing the ordinary prologue code of a
922     compiled C function when you jump to the subroutine, you can do so
923     by placing a special label of your own in the assembler code.  Use
924     one `asm' statement to generate an assembler label, and another to
925     make the label global.  Then trampolines can use that label to
926     jump directly to your special assembler code.
927
Note: See TracBrowser for help on using the repository browser.