Clang 我们可以通过LLVM函数传递在函数的开头插入自定义的内在函数吗?

Clang 我们可以通过LLVM函数传递在函数的开头插入自定义的内在函数吗?,clang,llvm,Clang,Llvm,我已经向RISCV后端添加了一个新的内在特性。现在,我计划实现一个Pass,根据一个命令行参数,在每个函数的开头插入自定义内在函数,作为第一条指令,该参数指定要省略的函数列表。是否可以通过opt工具将其作为一个正常的函数pass来实现?或者,我应该打电话使用机器功能通行证吗 另外,如果我必须使用MachineFunctionPass,是否可以从Clang命令行自动启用该过程,类似于通过-Xclang-load启用普通基于opt的目标独立过程 请在这方面指导我 非常感谢。您可以使用普通的函数过程。

我已经向RISCV后端添加了一个新的内在特性。现在,我计划实现一个Pass,根据一个命令行参数,在每个函数的开头插入自定义内在函数,作为第一条指令,该参数指定要省略的函数列表。是否可以通过opt工具将其作为一个正常的函数pass来实现?或者,我应该打电话使用机器功能通行证吗

另外,如果我必须使用MachineFunctionPass,是否可以从Clang命令行自动启用该过程,类似于通过-Xclang-load启用普通基于opt的目标独立过程

请在这方面指导我


非常感谢。

您可以使用普通的函数过程。@arnt请澄清这一点:我希望内在函数作为函数中的第一条指令出现,即在更改堆栈/帧指针的序言之前。这可以通过正常的函数传递吗?我想你可能想通过。它将指导您编写一个简单的前端,并在编写过程中收集一些有关IR的实际经验,足以让您知道IR中通常没有任何函数序言。