gcc在优化-O3时消耗所有内存
gcc consumes all memory when optimizing -O3
我尝试编译以下函数以查看 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。它已被确认并且显然已固定在后备箱中。希望修复最终会渗透到我的发行版中。谢谢大家!
我尝试编译以下函数以查看 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。它已被确认并且显然已固定在后备箱中。希望修复最终会渗透到我的发行版中。谢谢大家!