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对象中设置一

我想知道哪些llvm IR语句对应于特定pragma in clang中的代码。我的pragma具有以下结构

#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生成)