gpt4 book ai didi

gcc - DragonEgg 能否运行 gcc 中可用的优化 channel 并生成 llvm IR?

转载 作者:行者123 更新时间:2023-12-03 17:47:46 31 4
gpt4 key购买 nike

是否可以对任何代码运行 gcc 优化传递并最终获得 llvm IR?我想使用 gcc 中可用的死存储消除。我知道 llvm 也有这个 channel ,但它不像 gcc 那样先进。

最佳答案

我没有这方面的经验也没有尝试过,但我认为以下命令行应该适用于 DragonEgg 3.0 及更高版本:

-fplugin=./dragonegg.so -O0 -fdse -fplugin-arg-dragonegg-enable-gcc-optzns -fplugin-arg-dragonegg-llvm-ir-optimize=2 -fplugin-arg-dragonegg -emit-ir -S

  • -fplugin=./dragonegg.so 启用 DragonEgg
  • -O0 关闭所有 GCC 优化过程
  • -fdse 打开 GCC 死存储消除
  • -fplugin-arg-dragonegg-enable-gcc-optzns 在 DragonEgg 中启用 GCC 优化
  • -fplugin-arg-dragonegg-llvm-ir-optimize=2 强制 LLVM 优化到 -O2 而不是遵循 GCC 优化级别
  • -fplugin-arg-dragonegg-emit-ir 生成 LLVM IR 而不是 asm,根据问题这就是你想要的
  • -S 因为您在使用 -fplugin-arg-dragonegg-emit-ir
  • 时有点需要它

这应该适用于任何 GCC tree pass .

如果您需要比这更细粒度的控制,您可以调整 DragonEgg:正确的编辑位置是 Backend.cpp 中的 plugin_init 函数。 - 您可以准确地看到它如何设置通行证以在那里运行。

关于gcc - DragonEgg 能否运行 gcc 中可用的优化 channel 并生成 llvm IR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18071426/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com