GCC Wikia
Advertisement

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

概要[]

  • gcc-4.1.0/gcc/rtl.hにて定義
  • RTL (コンパイラ内部で使用される S 式) のノード,rtx の本体


参考サイト : http://www.fuka.info.waseda.ac.jp/~mao/study/gcc/rtl.html

実装[]

179 struct rtx_def GTY((chain_next ("RTX_NEXT (&%h)"),
180                     chain_prev ("RTX_PREV (&%h)")))
181 {

182   /* The kind of expression this is.  */
183   ENUM_BITFIELD(rtx_code) code: 16;
184 

185   /* The kind of value the expression has.  */
186   ENUM_BITFIELD(machine_mode) mode : 8;
187 
188   /* 1 in a MEM if we should keep the alias set for this mem unchanged
189      when we access a component.
190      1 in a CALL_INSN if it is a sibling call.
191      1 in a SET that is for a return.
192      In a CODE_LABEL, part of the two-bit alternate entry field.  */
193   unsigned int jump : 1;
194   /* In a CODE_LABEL, part of the two-bit alternate entry field.
195      1 in a MEM if it cannot trap.  */
196   unsigned int call : 1;
197   /* 1 in a REG, MEM, or CONCAT if the value is set at most once, anywhere.
198      1 in a SUBREG if it references an unsigned object whose mode has been
199      from a promoted to a wider mode.
200      1 in a SYMBOL_REF if it addresses something in the per-function
201      constants pool.
202      1 in a CALL_INSN, NOTE, or EXPR_LIST for a const or pure call.
203      1 in a JUMP_INSN, CALL_INSN, or INSN of an annulling branch.  */
204   unsigned int unchanging : 1;
205   /* 1 in a MEM or ASM_OPERANDS expression if the memory reference is volatile.
206      1 in an INSN, CALL_INSN, JUMP_INSN, CODE_LABEL, BARRIER, or NOTE
207      if it has been deleted.
208      1 in a REG expression if corresponds to a variable declared by the user,
209      0 for an internally generated temporary.
210      1 in a SUBREG with a negative value.
211      1 in a LABEL_REF or in a REG_LABEL note for a non-local label.
212      In a SYMBOL_REF, this flag is used for machine-specific purposes.  */
213   unsigned int volatil : 1;
214   /* 1 in a MEM referring to a field of an aggregate.
215      0 if the MEM was a variable or the result of a * operator in C;
216      1 if it was the result of a . or -> operator (on a struct) in C.
217      1 in a REG if the register is used only in exit code a loop.
218      1 in a SUBREG expression if was generated from a variable with a
219      promoted mode.
220      1 in a CODE_LABEL if the label is used for nonlocal gotos
221      and must not be deleted even if its count is zero.
222      1 in an INSN, JUMP_INSN or CALL_INSN if this insn must be scheduled
223      together with the preceding insn.  Valid only within sched.
224      1 in an INSN, JUMP_INSN, or CALL_INSN if insn is in a delay slot and
225      from the target of a branch.  Valid from reorg until end of compilation;
226      cleared before used.  */
227   unsigned int in_struct : 1;
228   /* At the end of RTL generation, 1 if this rtx is used.  This is used for
229      copying shared structure.  See `unshare_all_rtl'.
230      In a REG, this is not needed for that purpose, and used instead
231      in `leaf_renumber_regs_insn'.
232      1 in a SYMBOL_REF, means that emit_library_call
233      has used it as the function.  */
234   unsigned int used : 1;
235   /* 1 in an INSN or a SET if this rtx is related to the call frame,
236      either changing how we compute the frame address or saving and
237      restoring registers in the prologue and epilogue.
238      1 in a REG or MEM if it is a pointer.
239      1 in a SYMBOL_REF if it addresses something in the per-function
240      constant string pool.  */
241   unsigned frame_related : 1;
242   /* 1 in a REG or PARALLEL that is the current function's return value.
243      1 in a MEM if it refers to a scalar.
244      1 in a SYMBOL_REF for a weak symbol.  */
245   unsigned return_val : 1;
246 
247   /* The first element of the operands of this rtx.
248      The number of operands and their types are controlled
249      by the `code' field, according to rtl.def.  */
250   union u {
251     rtunion fld[1];
252     HOST_WIDE_INT hwint[1];
253     struct real_value rv;
254   } GTY ((special ("rtx_def"), desc ("GET_CODE (&%0)"))) u;
255 };



リンク元

Advertisement