clang添加了一个新的pragma
我想知道哪些llvm IR语句对应于特定pragma in clang中的代码。我的pragma具有以下结构clang添加了一个新的pragma,clang,llvm,llvm-clang,Clang,Llvm,Llvm Clang,我想知道哪些llvm IR语句对应于特定pragma in clang中的代码。我的pragma具有以下结构 #pragma markme { stmt1; stmt2; } 我需要知道在mark me pragma的开始大括号和结束大括号之间存在哪些STMT 我们可以给这些STMT附加一些元数据吗?如果是的话,有人能给我指一些参考资料吗 我在谷歌上搜索并找到了这个 添加一个pragma处理程序,它在actions接口上有一个回调。 添加回调的sema实现,它在sema对象中设置一
#pragma markme
{
stmt1;
stmt2;
}
我需要知道在mark me pragma的开始大括号和结束大括号之间存在哪些STMT
我们可以给这些STMT附加一些元数据吗?如果是的话,有人能给我指一些参考资料吗
我在谷歌上搜索并找到了这个
添加一个pragma处理程序,它在actions接口上有一个回调。
添加回调的sema实现,它在sema对象中设置一些内部位。
在“for”语句中添加一个新位,以指定它是否具有#pragma优化集。
修改codegin以基于该位发出元数据
有人能提供更多的细节吗
我正在使用最新的llvm(llvm 3.4)
注:任何方向的帮助都将不胜感激。我知道llvm可能会对语句进行优化。但这对我来说很好注意,这必须在Clang中完成,它知道
#pragma
。LLVM本身对它们一无所知-#pragma
不是LLVM IR的一部分
在Clang的lib/CodeGen
目录中有大量生成元数据的示例。这完全取决于您希望此元数据显示在何处-在指令上?关于函数
要将元数据附加到指令,请查找
setMetadata
。例如,在lib/CodeGen/CGExpr.cpp
中,一些分析元数据被附加到分支。有关放置模块级元数据的信息,请参见lib/CodeGen/CodeGenModule.cpp
。如果有人能告诉我应该在哪里执行此步骤,“向'For'语句添加一个新位,以指定它是否具有#pragma optimize set”我已经查看了现有代码并修改了一些代码,这将非常有用。问题是它的编译是正确的,但是我仍然找不到附加的元数据谢谢你的回复,我已经检查过了。我会再检查一遍,确保没有遗漏任何内容。我已经检查过了。实际上,我在cgsmt.cpp中写了一些东西。也许我错过了什么。所有这些都是正确编译的。但是当我使用clang生成*.ll文件时,我可以看到元数据。如果你不介意的话,你可以开始聊天。这对我真的很有帮助。我在该文件中修改的函数是CodeGenFunction::emitcompoundstmt在生成的ll文件中,我看不到任何元数据(由clang-S-emit llvm生成)