如何从 LLVM 5.0 中的 TargetMachine 获取 DataLayout?
Posted
技术标签:
【中文标题】如何从 LLVM 5.0 中的 TargetMachine 获取 DataLayout?【英文标题】:How to obtain the DataLayout from TargetMachine in LLVM 5.0? 【发布时间】:2017-10-09 10:50:30 【问题描述】:在this commit 中,getDataLayout
在弃用后已被删除。目前获取DataLayout
的方式是什么?
【问题讨论】:
为什么这被否决了?短!=问得不好 @StoryTeller 因为是 Bartek。 @MartinJames - 我显然不知道为什么这是一个原因。 @StoryTeller 你必须是个懒人才能理解:) 我看到这已被 VTCed 为“不清楚你在问什么”。我发现这个问题很清楚 - API 已被 something 取代,我在问那是什么。我找不到关于我现在应该使用什么以及从 TM 获取 DataLayout 是否仍然可行的发行说明或其他信息。 【参考方案1】:DataLayout 也应该在模块中,这就是为什么不再允许将其从 TargetMachine 中取出的原因。 IE。基本上,构建模块的任何内容都应该知道足以构建 DataLayout。
【讨论】:
【参考方案2】:我想TargetMachine::createDataLayout()
可以用。
TargetMachine.h:
const DataLayout createDataLayout() const return DL;
这将返回数据布局的副本而不是 const 引用。
如果有什么可以更安全地使用,因为数据布局的副本在 TargetMachine 对象被销毁后仍然有效。
如果我没记错的话,DataLyaout 并不是一个特别大的类,所以复制开销应该是可以接受的。如果结果是一个问题,我建议保留一份副本以供非常频繁的访问。
【讨论】:
哇,如果这真的这么简单...我不得不部分归咎于 整个 llvm.org 在我最需要它的地方。我希望得到更多确认,这确实是一个直接替代品,否则您需要耐心等待,直到我可以验证。还是谢谢!以上是关于如何从 LLVM 5.0 中的 TargetMachine 获取 DataLayout?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Linux 上卸载准确的 LLVM 和 CLANG 版本
在 Xcode 5 上使用 Boost - Apple LLVM 5.0