Next: , Previous: Tuple specific accessors, Up: GIMPLE


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的结尾。如果*SEQNULL,则在链接之前分配一个序列。

— GIMPLE function: void gimple_seq_add_seq (gimple_seq *dest, gimple_seq src)

如果SRC不为NULL,则将序列SRC追加到序列*DEST的结尾。如果*DESTNULL,则在追加之前分配一个新的序列。

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