GCC Wikia
Advertisement

このページを編集する際は,編集に関する方針に従ってください.[]

概要[]

実装[]

111 struct expr_status GTY(())
112 {
 113   /* Number of units that we should eventually pop off the stack.
 114      These are the arguments to function calls that have already returned.  */
115   int x_pending_stack_adjust;
116 
 117   /* Under some ABIs, it is the caller's responsibility to pop arguments
 118      pushed for function calls.  A naive implementation would simply pop
 119      the arguments immediately after each call.  However, if several
 120      function calls are made in a row, it is typically cheaper to pop
 121      all the arguments after all of the calls are complete since a
 122      single pop instruction can be used.  Therefore, GCC attempts to
 123      defer popping the arguments until absolutely necessary.  (For
 124      example, at the end of a conditional, the arguments must be popped,
 125      since code outside the conditional won't know whether or not the
 126      arguments need to be popped.)
 127 
 128      When INHIBIT_DEFER_POP is nonzero, however, the compiler does not
 129      attempt to defer pops.  Instead, the stack is popped immediately
 130      after each call.  Rather then setting this variable directly, use
 131      NO_DEFER_POP and OK_DEFER_POP.  */
132   int x_inhibit_defer_pop;
133 
 134   /* If PREFERRED_STACK_BOUNDARY and PUSH_ROUNDING are defined, the stack
 135      boundary can be momentarily unaligned while pushing the arguments.
 136      Record the delta since last aligned boundary here in order to get
 137      stack alignment in the nested function calls working right.  */
138   int x_stack_pointer_delta;
139 
 140   /* Nonzero means __builtin_saveregs has already been done in this function.
 141      The value is the pseudoreg containing the value __builtin_saveregs
 142      returned.  */
143   rtx x_saveregs_value;
144 
 145   /* Similarly for __builtin_apply_args.  */
146   rtx x_apply_args_value;
147 
 148   /* List of labels that must never be deleted.  */
149   rtx x_forced_labels;
150 };


リンク元

Advertisement