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中是否只包含一条语句。