With this compiler

[luc...@descartes gambit]$ gcc -v
Using built-in specs.
Target: powerpc64-unknown-linux-gnu
Configured with: ../../gcc-4.3.3/configure --prefix=/pkgs/gcc-4.3.3
--enable-languages=c --with-cpu=default64
Thread model: posix
gcc version 4.3.3 (GCC) 

with the file compiler.i found here:

http://www.math.purdue.edu/~lucier/bugzilla/8/

attempting to compile with these options:

gcc -m64 -mcpu=970 -Wall -W -Wno-unused -O1 -fno-math-errno -fschedule-insns2
-fno-trapping-math -fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC
-fno-common -rdynamic -shared

can't compile in 8GB of RAM.  With this compiler:

euler-77% /pkgs/gcc-4.2.3/bin/gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../../gcc-4.2.3/configure --prefix=/pkgs/gcc-4.2.3
--enable-checking=release --with-gmp=/pkgs/gmp-4.2.2
--with-mpfr=/pkgs/gmp-4.2.2
Thread model: posix
gcc version 4.2.3

and these options:

gcc -Wall -W -Wno-unused -O1 -fno-math-errno -fschedule-insns2
-fno-trapping-math -fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC
-fno-common -mieee-fp -rdynamic -shared

it can't compiler in 20GB of RAM.  (That machine has only 16GB of RAM, so I
killed the compile when it hit 20GB of physical+virtual memory.)

It compiles just fine in about 1GB of RAM with 

euler-76% gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/pkgs/gcc-4.1.2
Thread model: posix
gcc version 4.1.2

compiler.i is the output from the Gambit Scheme->C compiler; the source scheme
program is from a standard benchmark suite for Scheme compilers.  So I found
this by trying to change the code generator for Gambit and running the
benchmark suite on x86_64.

I don't know how this can be "fixed".  Basically, the entire middle-end
infrastructure since 4.1.* is telling people like me with computer-generated
code like this to just go away (to put it very politely).  On Mac OS X 10.5.*,
Apple bundles their version of 4.0.1, which compiles this just fine; on Red Hat
5.2, they bundle their version of 4.1.2 (I think, my RH5.2 box is down at the
moment), which compiles this just fine; but on Ubuntu 8.10 or Fedora 10 you
can't compile this because they bundle newer compilers.  (I guess I'll see if I
can install 4.1.* on both of these.)

As a stopgap measure, perhaps someone can tell me what optimization level to
use.  As you can see, I use -O1 and a few others (mainly -fschedule-insns2). 
gcc 4.1.* and earlier compiled something like this just fine, but -O1 must mean
something different now.


-- 
           Summary: Code that compiles fine in 1GB of memory with 4.1.2
                    requires > 20GB in 4.2.* and higher
           Product: gcc
           Version: 4.3.3
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: lucier at math dot purdue dot edu
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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

Reply via email to