gcc在优化-O3时会消耗所有内存

时间:2015-03-22 22:32:54

标签: c gcc internal-compiler-error

我尝试编译以下函数来查看gcc的内容:

#include <stdint.h>
#include <stddef.h>

typedef struct giga
{
  uint64_t g[0x10000000];
} giga;

uint64_t addfst(giga const *gptr, size_t num)
{
  uint64_t retval = 0;
  for (size_t i = 0; i < num; i++)
    {
      retval += gptr[i].g[0];
    }
  return retval;
}

发现gcc最大化了我的记忆,将自己换成了死亡 我发现在-O3进行优化时会发生这种情况,并未尝试剖析确切的标志。在gcc.godbolt上测试函数显示这是gcc特定的,但是受到4.8和4.9版本的影响 这是一个真正的编译器错误,还是我的功能坏了?

1 个答案:

答案 0 :(得分:3)

该错误发生在gcc bugzilla上,https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65518。已经确认&amp;显然固定在行李箱里。这里希望修复程序最终会流向我的发行版。谢谢大家!