【问题标题】:Can I force the compiler not to optimize tail-recursion?我可以强制编译器不优化尾递归吗?
【发布时间】:2011-09-06 22:57:13
【问题描述】:

想象一下这段代码:

int foo() {
  return foo();
}

编译器可以对此进行优化。我可以强制编译器为 foo 使用新的堆栈帧,而不是使用相同的堆栈帧(根据情况,因此完全禁用优化不算数)?

【问题讨论】:

  • 您为什么要这样做?要耗尽堆栈?
  • 你试过禁用所有优化吗?
  • @Matteo Italia 它可能会派上用场。我只是想知道 clang 和 GCC 是否提供这个。
  • @WTP - 我很想知道你觉得这在哪里有用。
  • 我不得不推荐 for(;;);

标签: c gcc clang tail-recursion


【解决方案1】:

是的,带有-fno-optimize-sibling-calls 选项。

【讨论】:

    【解决方案2】:

    在 gcc 中,尝试任一:

    • -O0
    • -fno-optimize-sibling-calls

    【讨论】:

      猜你喜欢
      • 2012-03-29
      • 2017-05-23
      • 1970-01-01
      • 2015-06-16
      • 2017-06-19
      • 1970-01-01
      • 2012-03-04
      • 2012-10-14
      相关资源
      最近更新 更多