GCC主要数据结构之GTY

GCC:gcc/gimple.h

/* Data structure definitions for GIMPLE tuples.  NOTE: word markers    are for 64 bit hosts.  */

struct GTY((desc ("gimple_statement_structure (&%h)"), tag ("GSS_BASE"),      chain_next ("%h.next"), variable_size))   gimple {   /* [ WORD 1 ]      Main identifying code for a tuple.  */   ENUM_BITFIELD(gimple_code) code : 8;

  /* Nonzero if a warning should not be emitted on this tuple.  */   unsigned int no_warning : 1;

  /* Nonzero if this tuple has been visited.  Passes are responsible      for clearing this bit before using it.  */   unsigned int visited  : 1;

  /* Nonzero if this tuple represents a non-temporal move.  */   unsigned int nontemporal_move : 1;

  /* Pass local flags.  These flags are free for any pass to use as      they see fit.  Passes should not assume that these flags contain      any useful value when the pass starts.  Any initial state that      the pass requires should be set on entry to the pass.  See      gimple_set_plf and gimple_plf for usage.  */   unsigned int plf  : 2;

  /* Nonzero if this statement has been modified and needs to have its      operands rescanned.  */   unsigned modified   : 1;

  /* Nonzero if this statement contains volatile operands.  */   unsigned has_volatile_ops  : 1;

  /* Padding to get subcode to 16 bit alignment.  */   unsigned pad   : 1;

  /* The SUBCODE field can be used for tuple-specific flags for tuples      that do not require subcodes.  Note that SUBCODE should be at      least as wide as tree codes, as several tuples store tree codes      in there.  */   unsigned int subcode  : 16;

  /* UID of this statement.  This is used by passes that want to      assign IDs to statements.  It must be assigned and used by each      pass.  By default it should be assumed to contain garbage.  */   unsigned uid;

  /* [ WORD 2 ]      Locus information for debug info.  */   location_t location;

  /* Number of operands in this tuple.  */   unsigned num_ops;

  /* [ WORD 3 ]      Basic block holding this statement.  */   basic_block bb;

  /* [ WORD 4-5 ]      Linked lists of gimple statements.  The next pointers form      a NULL terminated list, the prev pointers are a cyclic list.      A gimple statement is hence also a double-ended list of      statements, with the pointer itself being the first element,      and the prev pointer being the last.  */   gimple *next;   gimple *GTY((skip)) prev; };

 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值