memory explosion in 1.1 pre-release caused by GCSE
Jeffrey A Law
law@cygnus.com
Thu Oct 15 01:44:00 GMT 1998
In message <wjxsoibsq9z.fsf@coelacanthe.irisa.fr>you write:
>
> Hi,
>
> i don't know if this is a bug or not but it may be of interest to some
> of you. I have a fairly small function (see below) which needs 350 MB
> to compile. It makes a heavy usage of templates, but this particular
> problem is caused by GCSE as demonstrated by the following tests :
>
> compiler needed memory
> g++ 2.8.1 -O2 94 MB
> egcs 1.0.2 -O2 95 MB
> egcs 1.1 -O2 317 MB
> egcs 1.1 -O2 -fno-gcse 99 MB
>
> Memory usage of more than 800 MB have been reported on this list for
> template-based program (with blitz). This program uses a similar
> library (CGAL), but the problem seems different as it can be compiled
> with -O2 -fno-gcse. So what do you think ? Is it a bug ?
>
> This is on sparc-sun-solaris2.5.1 and the same thing happens on
> i686-pc-linux-gnu but the machine does not have enough memory. The
> preprocessed (cleaned-up and renamed) file can be found here :
>
> ftp://ftp.irisa.fr/local/temis/ricquebo/egcs/explo.cc.gz (85 KB)
Thanks. I don't think this is a bug.
The function in question is, err, huge.
It has on the order of 44k pseudo registers, 211k insns and 10k basic blocks.
Consider that just *one* of the bitmap vectors needed to hold register info
needed to perform global optimizations will be about 50meg.
(44k regs -> ~5500bytes for each bitmap * 10k bitmaps).
On top of that we also need several other tables that will be comparable in
size, so 200+meg for global optimiations on that testcase isn't unreasonable.
jeff
More information about the Gcc-bugs
mailing list