Next: , Previous: Profiling, Up: Stack and Calling


17.10.13 允许尾调用

— Target Hook: bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree decl, tree exp)

如果可以为指定的调用表达式exp做sibling call优化,则为真。 decl为被调用的函数,或者为NULL,如果这是一个间接调用。

通常调用约定的限制不会阻止当前转换单元之外的或者PIC编译过程中的函数尾调用。 钩子用来加强这些限制,由于sibcall md模式不能fail。 成功的sibling call优化的标准可能在不同的体系结构上有很大的差别。

— Target Hook: void TARGET_EXTRA_LIVE_ON_ENTRY (bitmap *regs)

增加任何在函数入口为活跃的硬件寄存器到regs。 该钩子只需要被定义来提供不能通过检查FUNCTION_ARG_REGNO_P, callee保存的寄存器,STATIC_CHAIN_INCOMING_REGNUM, STATIC_CHAIN_REGNUM, TARGET_STRUCT_VALUE_RTX,FRAME_POINTER_REGNUM, EH_USES, FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM和PIC_OFFSET_TABLE_REGNUM来发现的寄存器。