12.8 GIMPLE序列
GIMPLE序列等价于GENERIC
中使用的STATEMENT_LIST
。它们用于将语句链接在一起,当和序列迭代器一起使用的时候,可以提供一个迭代语句的框架。
GIMPLE序列的类型为struct gimple_sequence
。序列指针的类型为gimple_seq
,其与struct gimple_sequence
*相同。当声明一个局部序列时,你可以定义一个类型为struct gimple_sequence
的局部变量。当声明一个分配在垃圾搜集堆中的序列时,使用下面介绍的函数gimple_seq_alloc
。
在标题为序列迭代器的章节中,有一些便利的函数用于在序列中进行迭代。
下面是一个函数列表,用来操作和查询序列。
— GIMPLE function: void
gimple_seq_add_stmt (
gimple_seq *seq, gimple g)
如果G
不为NULL
,将一条gimple语句链接到序列*SEQ
的结尾。如果*SEQ
为NULL
,则在链接之前分配一个序列。
— GIMPLE function: void
gimple_seq_add_seq (
gimple_seq *dest, gimple_seq src)
如果SRC
不为NULL
,则将序列SRC
追加到序列*DEST
的结尾。如果*DEST
为NULL
,则在追加之前分配一个新的序列。
— GIMPLE function: gimple_seq
gimple_seq_deep_copy (
gimple_seq src)
对序列SRC
执行深度复制,并返回结果。
— GIMPLE function: gimple_seq
gimple_seq_reverse (
gimple_seq seq)
反转序列SEQ
中语句的顺序。返回SEQ
。
— GIMPLE function: gimple
gimple_seq_first (
gimple_seq s)
返回序列S
中的第一条语句。
— GIMPLE function: gimple
gimple_seq_last (
gimple_seq s)
返回序列S
中的最后一条语句。
— GIMPLE function: void
gimple_seq_set_last (
gimple_seq s, gimple last)
将序列S
中的最后一条语句设置为LAST
中的语句。
— GIMPLE function: void
gimple_seq_set_first (
gimple_seq s, gimple first)
将序列S
中的第一条语句设置为FIRST
中的语句。
— GIMPLE function: void
gimple_seq_init (
gimple_seq s)
将序列S
初始化为空序列。
— GIMPLE function: gimple_seq
gimple_seq_alloc (
void)
在可以被垃圾搜集的存储中分配一个新的序列,并将其返回。
— GIMPLE function: void
gimple_seq_copy (
gimple_seq dest, gimple_seq src)
将序列SRC
复制到序列DEST
。
— GIMPLE function: bool
gimple_seq_empty_p (
gimple_seq s)
如果序列S
为空,则返回真。
— GIMPLE function: gimple_seq
bb_seq (
basic_block bb)
返回BB
中的语句序列。
— GIMPLE function: void
set_bb_seq (
basic_block bb, gimple_seq seq)
将BB
中的语句序列设置成SEQ
。
— GIMPLE function: bool
gimple_seq_singleton_p (
gimple_seq seq)
确定序列SEQ
中是否只包含一条语句。