[Bug c++/88604] New: Initializing constexpr array consumes all memory
gcc-bugs at oxyware dot com
gcc-bugzilla@gcc.gnu.org
Wed Dec 26 23:02:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88604
Bug ID: 88604
Summary: Initializing constexpr array consumes all memory
Product: gcc
Version: 8.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: gcc-bugs at oxyware dot com
Target Milestone: ---
Compiling the attached code with g++ 8.2.1 and no optimisation or compiler
flags causes cc1plus to consume all of physical memory until it hits an OOM
Linux error. Clang compiles this without any problems. I tried this on
gcc.godbolt.org for various compiler versions and the problem is present in
many previous versions of g++.
The problem doesn't appear if numAirports is set to 500 but it does when at the
full 26^3. Also, if latArray[i] is assigned a constant rather than copying a
value from the other constexpr class then it works at full size (26^3). Using
4000, cc1plus peaks at 2.1GB of resident RAM.
# with numAirports == 4000
$ /usr/bin/time g++ index.cpp
3.27user 1.07system 0:04.38elapsed 99%CPU (0avgtext+0avgdata
2224108maxresident)k
0inputs+144outputs (0major+559502minor)pagefaults 0swaps
$ g++ --version
g++ (GCC) 8.2.1 20181215 (Red Hat 8.2.1-6)
$ uname -a
Linux konan.oxyware.net 4.19.8-200.fc28.x86_64 #1 SMP Mon Dec 10 15:43:40 UTC
2018 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/fedora-release
Fedora release 28 (Twenty Eight)
More information about the Gcc-bugs
mailing list