[Bug c++/82294] Array of objects with constexpr constructors initialized from space-inefficient memory image

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=82294

--- Comment #4 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