|
|
1.1.1.5 ! root 1: This is Info file gcc.info, produced by Makeinfo version 1.67 from the ! 2: input file gcc.texi. 1.1 root 3: 4: This file documents the use and the internals of the GNU compiler. 5: 1.1.1.4 root 6: Published by the Free Software Foundation 59 Temple Place - Suite 330 7: Boston, MA 02111-1307 USA 1.1 root 8: 1.1.1.4 root 9: Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 Free Software 10: Foundation, Inc. 1.1 root 11: 12: Permission is granted to make and distribute verbatim copies of this 13: manual provided the copyright notice and this permission notice are 14: preserved on all copies. 15: 16: Permission is granted to copy and distribute modified versions of 17: this manual under the conditions for verbatim copying, provided also 1.1.1.3 root 18: that the sections entitled "GNU General Public License," "Funding for 19: Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are 20: included exactly as in the original, and provided that the entire 21: resulting derived work is distributed under the terms of a permission 22: notice identical to this one. 1.1 root 23: 24: Permission is granted to copy and distribute translations of this 25: manual into another language, under the above conditions for modified 26: versions, except that the sections entitled "GNU General Public 1.1.1.3 root 27: License," "Funding for Free Software," and "Protect Your Freedom--Fight 28: `Look And Feel'", and this permission notice, may be included in 29: translations approved by the Free Software Foundation instead of in the 30: original English. 31: 32: 1.1.1.4 root 33: File: gcc.info, Node: Register Arguments, Next: Scalar Return, Prev: Stack Arguments, Up: Stack and Calling 1.1.1.3 root 34: 1.1.1.4 root 35: Passing Arguments in Registers 36: ------------------------------ 1.1.1.3 root 37: 1.1.1.4 root 38: This section describes the macros which let you control how various 39: types of arguments are passed in registers or how they are arranged in 40: the 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. 1.1.1.3 root 207: 208: 1.1.1.4 root 209: File: gcc.info, Node: Scalar Return, Next: Aggregate Return, Prev: Register Arguments, Up: Stack and Calling 1.1.1.3 root 210: 1.1.1.4 root 211: How Scalar Function Values Are Returned 212: --------------------------------------- 1.1.1.3 root 213: 1.1.1.4 root 214: This section discusses the macros that control returning scalars as 215: values--values that can fit in registers. 1.1.1.3 root 216: 1.1.1.4 root 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. 1.1.1.3 root 295: 296: 1.1.1.4 root 297: File: gcc.info, Node: Aggregate Return, Next: Caller Saves, Prev: Scalar Return, Up: Stack and Calling 1.1.1.3 root 298: 1.1.1.4 root 299: How Large Values Are Returned 300: ----------------------------- 1.1.1.3 root 301: 1.1.1.4 root 302: When a function value's mode is `BLKmode' (and in some other cases), 303: the value is not returned according to `FUNCTION_VALUE' (*note Scalar 304: Return::.). Instead, the caller passes the address of a block of 305: memory 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 309: memory. 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. 1.1.1.3 root 371: 1.1.1.4 root 372: Do not define this if the usual system convention is for the 373: caller to pass an address to the subroutine. 1.1.1.3 root 374: 1.1.1.4 root 375: This macro has effect in `-fpcc-struct-return' mode, but it does 376: nothing when you use `-freg-struct-return' mode. 1.1.1.2 root 377: 378: 1.1.1.4 root 379: File: gcc.info, Node: Caller Saves, Next: Function Entry, Prev: Aggregate Return, Up: Stack and Calling 1.1.1.2 root 380: 1.1.1.4 root 381: Caller-Saves Register Allocation 382: -------------------------------- 1.1.1.2 root 383: 1.1.1.4 root 384: If you enable it, GNU CC can save registers around function calls. 385: This makes it possible to use call-clobbered registers to hold 386: variables 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. 1.1.1.2 root 400: 1.1.1.4 root 401: If you don't define this macro, a default is used which is good on 402: most machines: `4 * CALLS < REFS'. 1.1.1.3 root 403: 404: 1.1.1.4 root 405: File: gcc.info, Node: Function Entry, Next: Profiling, Prev: Caller Saves, Up: Stack and Calling 1.1.1.3 root 406: 1.1.1.4 root 407: Function Entry and Exit 408: ----------------------- 1.1.1.3 root 409: 1.1.1.4 root 410: This section describes the macros that output function entry 411: ("prologue") and exit ("epilogue") code. 1.1.1.3 root 412: 1.1.1.4 root 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'. 1.1.1.3 root 570: 1.1.1.4 root 571: You need not define this macro if you did not define 572: `DELAY_SLOTS_FOR_EPILOGUE'. 1.1.1.3 root 573: 574: 1.1.1.4 root 575: File: gcc.info, Node: Profiling, Prev: Function Entry, Up: Stack and Calling 1.1.1.3 root 576: 1.1.1.4 root 577: Generating Code for Profiling 578: ----------------------------- 1.1.1.3 root 579: 1.1.1.4 root 580: These macros will help you generate code for profiling. 1.1.1.3 root 581: 1.1.1.4 root 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. 1.1.1.2 root 640: 641: 1.1.1.4 root 642: File: gcc.info, Node: Varargs, Next: Trampolines, Prev: Stack and Calling, Up: Target Macros 1.1.1.2 root 643: 1.1.1.4 root 644: Implementing the Varargs Macros 645: =============================== 1.1.1.2 root 646: 1.1.1.4 root 647: GNU CC comes with an implementation of `varargs.h' and `stdarg.h' 648: that work without change on machines that pass arguments on the stack. 649: Other machines require their own implementations of varargs, and the 650: two machine independent header files must have conditionals to include 651: it. 652: 653: ANSI `stdarg.h' differs from traditional `varargs.h' mainly in the 654: calling convention for `va_start'. The traditional implementation 655: takes just one argument, which is the variable in which to store the 656: argument pointer. The ANSI implementation of `va_start' takes an 657: additional second argument. The user is supposed to write the last 658: named argument of the function here. 659: 660: However, `va_start' should not use this argument. The way to find 661: the end of the named arguments is with the built-in functions described 662: below. 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: 792: File: gcc.info, Node: Trampolines, Next: Library Calls, Prev: Varargs, Up: Target Macros 1.1.1.2 root 793: 1.1.1.4 root 794: Trampolines for Nested Functions 795: ================================ 1.1.1.2 root 796: 1.1.1.4 root 797: A "trampoline" is a small piece of code that is created at run time 798: when the address of a nested function is taken. It normally resides on 799: the stack, in the stack frame of the containing function. These macros 800: tell GNU CC how to generate code to allocate and initialize a 801: trampoline. 802: 803: The instructions in the trampoline must do two things: load a 804: constant address into the static chain register, and jump to the real 805: address of the nested function. On CISC machines such as the m68k, 806: this requires two instructions, a move immediate and a jump. Then the 807: two addresses exist in the trampoline as word-long immediate operands. 808: On RISC machines, it is often necessary to load each address into a 809: register in two parts. Then pieces of each address form separate 810: immediate operands. 811: 812: The code generated to initialize the trampoline must store the 813: variable parts--the static chain value and the function address--into 814: the immediate operands of the instructions. On a CISC machine, this is 815: simply a matter of copying each address to a memory reference at the 816: proper offset from the start of the trampoline. On a RISC machine, it 817: may be necessary to take out pieces of the address and store them 818: separately. 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. 1.1.1.5 ! root 844: ADDR is an RTX for the address of the trampoline; FNADDR is an RTX 1.1.1.4 root 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 870: have separate instruction and data caches. Writing into a stack 871: location fails to clear the memory in the instruction cache, so when 872: the program jumps to that location, it executes the old contents. 873: 874: Here are two possible solutions. One is to clear the relevant parts 875: of the instruction cache whenever a trampoline is set up. The other is 876: to make all trampolines identical, by having them jump to a standard 877: subroutine. The former technique makes trampoline execution faster; the 878: latter makes initialization faster. 879: 880: To clear the instruction cache when a trampoline is initialized, 881: define 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 898: clear the instruction cache directly, you can define the following 899: macro. 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 910: addition, you must make sure that the instructions in a trampoline fill 911: an entire cache line with identical instructions, or else ensure that 912: the beginning of the trampoline code is always aligned at the same 913: point 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. 1.1 root 927:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.