如何在 Java 编译器中禁用死代码消除?

Posted

技术标签:

【中文标题】如何在 Java 编译器中禁用死代码消除?【英文标题】:How to disable dead code elimination in the Java compiler? 【发布时间】:2010-07-02 01:26:56 【问题描述】:

这似乎是一个奇怪的问题......为什么有人想要禁用这样的东西?但我知道我在做什么(以及为什么我想要/需要这样做)并且我真的想禁用死代码消除。

有可能吗?

顺便说一句,我使用 Eclipse,如果它是相关的...

【问题讨论】:

你是在调试模式下编译吗? 我真的不知道,Eclipse 令人困惑。如何在调试/发布模式下编译?我大多选择“导出”来编译最终文件... 有时当您需要对某些事物进行基准测试时,您可能需要调用一个函数,该函数可以进行一些计算并返回。我觉得这个问题很有用,只是我在这个论坛上没有答案 【参考方案1】:

有可能吗?

我还没有遇到任何方法来做到这一点。似乎没有任何相关选项。

但需要明确的是,死代码消除可以(可能)由字节码编译器和 JIT 中的一个或两个来完成。所以你需要清楚你关心的是哪种情况。 (我猜是字节码编译器……)

【讨论】:

【参考方案2】:

我的第一个想法是写一些疯狂的方面并使用编译时编织,这样你的死代码就不再死了......但后来我的脑袋爆炸了。

【讨论】:

"...但后来我的头爆炸了" 凌乱!我想我们也需要考虑删除死编码器:-)【参考方案3】:

我建议你再想一想,尝试用一些不同的方式来实现你的目标。你试图做什么看起来像“黑客”,即使你成功了,你也永远无法确定你的死代码保留机制仍然有效。

【讨论】:

以上是关于如何在 Java 编译器中禁用死代码消除?的主要内容,如果未能解决你的问题,请参考以下文章

使用函数指针消除 gcc 死代码

LLVM 之 IR 篇:如何编写消除死代码 Pass

GCC LTO 是不是执行跨文件死代码消除?

禁用所有 gcc 警告

如何消除间接呼叫 Method 在 Android Studio 中的编译警告

如何禁用 XCode 编译器在 Objective-C 源代码文件中定义“-DXXX”