14

我尝试编译以下函数以查看 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 版本。
这是一个真正的编译器错误,还是我的功能坏了?

4

1 回答 1

3

该错误位于 gcc bugzilla,https: //gcc.gnu.org/bugzilla/show_bug.cgi?id=65518 。它已被确认并明显固定在后备箱中。希望修复最终能渗透到我的发行版中。感谢大家!

于 2015-03-23T22:36:33.303 回答