[Bug c++/59659] large zero-initialized std::array compile time excessive

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jan 9 16:18:00 GMT 2014


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59659

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |jason at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I think this is somewhat related to e.g.:
struct A { A (); A (int); ~A (); };
void bar (A *);

#define T10(N) N, N, N, N, N, N, N, N, N, N
#define T100(N) T10(N), T10(N), T10(N), T10(N), T10(N), \
T10(N), T10(N), T10(N), T10(N), T10(N)
#define T1000(N) T100(N), T100(N), T100(N), T100(N), T100(N), \
 T100(N), T100(N), T100(N), T100(N), T100(N)
#define T10000(N) T1000(N), T1000(N), T1000(N), T1000(N), T1000(N), \
  T1000(N), T1000(N), T1000(N), T1000(N), T1000(N)
#define T100000(N) T10000(N), T10000(N), T10000(N), T10000(N), T10000(N), \
   T10000(N), T10000(N), T10000(N), T10000(N), T10000(N)

void
foo ()
{
  A a[] = { 1, 2, T1000 (3), T10000 (4), T1000 (3), 2, 1 };
  bar (a);
}

also taking long time to compile and generating enormous amount of code (and
when replacing T10000 (4) with T100000 (4) it is even much worse).



More information about the Gcc-bugs mailing list