首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCC能编译吗?

GCC能编译吗?
EN

Stack Overflow用户
提问于 2014-02-09 14:51:03
回答 2查看 2K关注 0票数 13

原则是GCC制度的内在表现之一。可以通过-fdump-*编译器参数转储GIMPLE或任何其他内部表示。但是,是否有任何方法来编译抛出的GIMPLE或任何其他表示?GCC似乎没有“双头”。我想做的是转储、分析、修改,然后重新编译转储GIMPLE来执行各种代码工具。

PS我知道GCC插件,我也知道LLVM/Clang,所以请试着回答确切的问题,不要提出其他的解决方案。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-09 15:05:44

这个项目叫做GIMPLE有限元 (前端)。第一次尝试从未达到可用状态。它在GSoC'16年间重新启动,并入gcc-8,此后一直在不断改进。它是用-fgimple启用的。

目的是帮助编写测试用例。它是,而不是,它是llvm提供的一个完整的转储/重新加载工具。使用-fdump-*获得的转储(在-fdump-tree-all-gimple中有一个-gimple修饰符,以获得与FE读取匹配的语法)是很好的,可以让您知道发生了什么,但是它们没有包含足够的信息来重建内部结构。FE读取的方言只允许您指定GIMPLE可以编码的一小部分信息。

同样,对于gcc的另一种内部表现形式,也存在着部分的RTL前端

LTO提供了一个更完整的转储/重新加载。使用-flto -c编译文件时,gcc将GIMPLE的字节码表示形式保存在.o文件的一个部分中,当作为链接器调用该字节码时,该字节码可以再次读取。这种表示几乎是完整的(我认为调试信息存在一些问题)。然而,它并不意味着像文本转储那样容易阅读,而且编译器的每一个次要版本都会改变格式。此外,您只能在管道中的一个预定义点转储/重新加载,而不能在任意传递之后转储/重新加载。

票数 12
EN

Stack Overflow用户

发布于 2020-06-21 03:48:11

我们正面临着同样的问题。与其在字符串级别上“转储/重新加载”GIMPLE文件并对其进行操作,我建议只编写一个gcc插件并在那里操作GIMPLE数据结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21660563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档