Previous: Adding a new GIMPLE statement code, Up: GIMPLE
有两个函数可以用于遍历语句和序列:分别为walk_gimple_stmt和walk_gimple_seq。还有第三个函数用于遍历语句中的操作数:walk_gimple_op。
该函数用于在
GSI中遍历当前语句,并可选的使用WI中存放的遍历状态。如果WI为NULL,则在遍历中不保存状态。回调函数
CALLBACK_STMT被调用。如果CALLBACK_STMT返回真,则意味着回调函数已经处理了语句的所有操作数,并且无需遍历它的操作数。如果
CALLBACK_STMT为NULL或者返回假,则CALLBACK_OP会在语句的每个操作数上被调用,通过walk_gimple_op。如果walk_gimple_op对任意操作数返回了非NULL,则剩下的操作数将不被扫描。返回值为对
walk_gimple_op最后调用所返回的值,或者如果没有指定CALLBACK_OP则返回NULL_TREE。
使用该函数来遍历语句
STMT的操作数。每个操作数通过walk_tree来遍历,并使用WI中可选的状态信息。
CALLBACK_OP在STMT的每个操作数上被调用,通过walk_tree。walk_tree的其它参数必须存放在WI中。对于每个操作数OP,walk_tree被调用为:walk_tree (&OP,CALLBACK_OP,WI,WI-PSET)如果
CALLBACK_OP对于一个操作数返回非NULL,则剩下的操作数不再被扫描。返回值为对walk_tree最后调用所返回的值,或者如果没有指定CALLBACK_OP则返回NULL_TREE。