c++: Reduce memory consumption for large static arrays.
authorJason Merrill <jason@redhat.com>
Thu, 30 Jan 2020 23:49:29 +0000 (18:49 -0500)
committerJason Merrill <jason@redhat.com>
Fri, 31 Jan 2020 23:19:31 +0000 (18:19 -0500)
commitd2b9548f38c77edc29ab0e24e516f1fb341ecea7
tree37078747238504a649c820bb088f9f5d14890ce9
parent6775172431a8e6f0d20ac0c4946d6b5db2f46450
c++: Reduce memory consumption for large static arrays.

PR14179 and the C counterpart PR12245 are about memory consumption of very
large file-scope arrays.  Recently, location wrappers increased memory
consumption significantly: in an array of integer constants, each one will
have a location wrapper, which added up to over 500MB in the 14179
testcase.  For this kind of testcase tracking these locations isn't worth
the cost, so this patch turns the wrappers off after 256 elements; any array
that size or larger isn't likely to be interested in the location of
individual integer constants.

PR c++/14179
* parser.c (cp_parser_initializer_list): Suppress location wrappers
after 256 elements.
gcc/cp/ChangeLog
gcc/cp/parser.c