[Bug middle-end/41343] [4.5 Regression] sysdeps/ieee754/dbl-64/dosincos.c from glibc causes excessive memory use

rguenth at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sat Sep 12 12:10:00 GMT 2009



------- Comment #7 from rguenth at gcc dot gnu dot org  2009-09-12 12:10 -------
Because I can easily cause exponential growth with them:

void foo (int i)
{
  int i1 = i + i;
  int i2 = i1 + i1;
  int i3 = i2 + i2;
  int i4 = i3 + i3;
}

will generate

  # DEBUG i1 => i_1(D) + i_1(D)
  # DEBUG i2 => (i_1(D) + i_1(D)) + (i_1(D) + i_1(D))
  # DEBUG i3 => ((i_1(D) + i_1(D)) + (i_1(D) + i_1(D))) + ((i_1(D) + i_1(D)) +
(i_1(D) + i_1(D)))
  # DEBUG i4 => (((i_1(D) + i_1(D)) + (i_1(D) + i_1(D))) + ((i_1(D) + i_1(D)) +
(i_1(D) + i_1(D)))) + (((i_1(D) + i_1(D)) + (i_1(D) + i_1(D))) + ((i_1(D) +
i_1(D)) + (i_1(D) + i_1(D))))

Testcase:

#define X(new,old) int i ## new = i ## old + i ## old;
#define Y(pfx) X(pfx ## 1, pfx) \
  X(pfx ## 2, pfx ## 1) \
  X(pfx ## 3, pfx ## 2) \
  X(pfx ## 4, pfx ## 3) \
  X(pfx ## 5, pfx ## 4) \
  X(pfx ## 6, pfx ## 5) \
  X(pfx ## 7, pfx ## 6) \
  X(pfx ## 8, pfx ## 7) \
  X(pfx ## 9, pfx ## 8)

void foo (int i1)
{
  Y(1)
  Y(11)
  Y(111)
}


-- 


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



More information about the Gcc-bugs mailing list