[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