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

标签 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 版本。
这是真正的编译器错误,还是我的功能损坏了?

最佳答案

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

关于c - gcc在优化-O3时消耗所有内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29200652/

相关文章:

c - gtk-需要选项卡内的滚动列表

linux - 单个主机上的多个 glibc 库

在条件格式中使用 UDF 时,VBA 编译器不会中断/捕获错误并且没有错误消息

c++ - 错误 : `MEMBER` in `class CLASS` does not name a type; C++

c++ - gcc 支持 cbegin 和 cend 方法

compiler-errors - 期待 EOF,找到 '<something>'

c++ - 使用指向方法的指针的 MSVC 编译器 fatal error C1001

c++ - Libpcap - 接收与发送数据包

c++ - 以下方式调用函数有什么区别?

c - 与 Codex C 交换结构体中的单词