[Bug c++/87436] [7/8/9 Regression] G++ produces >300MB .rodata section to initialize struct with big array
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Dec 14 19:38:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87436
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Fri Dec 14 19:37:38 2018
New Revision: 267143
URL: https://gcc.gnu.org/viewcvs?rev=267143&root=gcc&view=rev
Log:
PR c++/82294
PR c++/87436
* expr.h (categorize_ctor_elements): Add p_unique_nz_elts argument.
* expr.c (categorize_ctor_elements_1): Likewise. Compute it like
p_nz_elts, except don't multiply it by mult. Adjust recursive call.
Fix up COMPLEX_CST handling.
(categorize_ctor_elements): Add p_unique_nz_elts argument, initialize
it and pass it through to categorize_ctor_elements_1.
(mostly_zeros_p, all_zeros_p): Adjust categorize_ctor_elements callers.
* gimplify.c (gimplify_init_constructor): Likewise. Don't force
ctor into readonly data section if num_unique_nonzero_elements is
smaller or equal to 1/8 of num_nonzero_elements and size is >= 64
bytes.
* g++.dg/tree-ssa/pr82294.C: New test.
* g++.dg/tree-ssa/pr87436.C: New test.
Added:
trunk/gcc/testsuite/g++.dg/tree-ssa/pr82294.C
trunk/gcc/testsuite/g++.dg/tree-ssa/pr87436.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/expr.c
trunk/gcc/expr.h
trunk/gcc/gimplify.c
trunk/gcc/testsuite/ChangeLog
More information about the Gcc-bugs
mailing list