gcc-4.0-20051124-4.0-20051201.diff.bz2 is TERRIBLE!!!

2005-12-03 Thread J.C.

*** gcc-4.0-20051124/gcc/config/i386/i386.c Mon Nov  7 18:55:03 2005
--- gcc-4.0-20051201/gcc/config/i386/i386.c Thu Dec  1 01:53:01 2005

! #if defined(HAVE_GAS_HIDDEN) && defined(SUPPORTS_ONE_ONLY)

! #if defined(HAVE_GAS_HIDDEN) && (SUPPORTS_ONE_ONLY - 0)


Why did he remove the 'defined' and put the unreadable '0'?



gcc-4.2-20051203 is now available

2005-12-03 Thread gccadmin
Snapshot gcc-4.2-20051203 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.2-20051203/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.2 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/trunk revision 108000

You'll find:

gcc-4.2-20051203.tar.bz2  Complete GCC (includes all of below)

gcc-core-4.2-20051203.tar.bz2 C front end and core compiler

gcc-ada-4.2-20051203.tar.bz2  Ada front end and runtime

gcc-fortran-4.2-20051203.tar.bz2  Fortran front end and runtime

gcc-g++-4.2-20051203.tar.bz2  C++ front end and runtime

gcc-java-4.2-20051203.tar.bz2 Java front end and runtime

gcc-objc-4.2-20051203.tar.bz2 Objective-C front end and runtime

gcc-testsuite-4.2-20051203.tar.bz2The GCC testsuite

Diffs from 4.2-20051201 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.2
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


LTO, LLVM, etc.

2005-12-03 Thread Mark Mitchell
I've been watching the LLVM/LTO discussion with interest.

I'm learning that I need to express myself carefully, because people
read a lot into what I say, so I've been watching, and talking with lots
of people, but not commenting.  But, I've gotten a couple of emails
asking me what my thoughts are, so here they are!  None of what follows
is an official position of the FSF, Steering Committee, or even
CodeSourcery; it's just my personal thoughts.

First and foremost, I'm not an expert on either Tree-SSA or LLVM, so I'm
only qualified to comment at a high level.  From what I can see, and by
all accounts, LLVM is a clean, well-engineered codebase with good
capabilities.  Assuming that all of the copyright details are worked
out, which Chris is actively trying to do, I think we should consider
the costs and benefits of replacing Tree-SSA with LLVM.  I'm not sure
exactly how the costs and benefits stack up, but we'll see.

That shouldn't be read as either a favorable or unfavorable comment
about switching; I certainly think we should consider LLVM, but I don't
have an opinion as to what the outcome of that consideration ought to be.

For me, the key consideration is the shape of the compiler-goodness
graph vs. time, where goodness includes (in no particular order)
optimization capability, cross-platform capability, correctness,
backwards compatibility, support for link-time optimization, developer
happiness, etc.  Like some others have suggested, if it were up to me to
pick (which it's not, since I don't control the developer base, steering
committee, etc.), I'd make a big list of things we would have to do to
LLVM and things we would have to do Tree-SSA, and then decide which one
looked easier.

The reason the shape of the graph matters to me, rather than just the
value at some time t, is that I'm concerned about increasing GCC's
overall market share, and market share is sticky, so, ideally, progress
is continuous; periods of flatness, or downtrends, are harmful.
However, one clearly doesn't want to win in the short term, only to lose
big in the long term, so if the one of the LLVM or Tree-SSA lines is
significantly higher in the forseeable future that's probably a bigger
consideration than the shape of the graph in the short term.

If we're opening the door to replacing Tree-SSA, are there any other
technologies we should consider?  In particular, brushing aside any
copyright/patent issues, how would a Tree->WHIRL->RTL widget, using the
Open64 technology, stack up relative to Tree-SSA and LLVM?  Do any of
the Open64 people have interest in integrating with GCC in this way?
What are the legal issues and, if there are serious issues, does anyone
want to try to resolve them?  Again, this should not be read as
advocating Open64; these aren't rhetorical questions; I just don't know
the answers.

There is one advantage I see in the LTO design over LLVM's design.  In
particular, the LTO proposal envisions a file format that is roughly at
the level of GIMPLE.  Such a file format could easily be extended to be
at the source-level version of Tree used in the front-ends, so that
object files could contain two extra sections: one for LTO and one for
source-level information.  The latter section could be used for things
like C++ "export" -- but, more importantly, for other tools that need
source-level information, like IDEs, indexers, checkers, etc.  (All
tools that presently use the EDG front end would be candidate clients
for this interface.)

There's a lot of interest in these kinds of tools, and I think their
existence would be a competitive advantage for GCC because they would
create compelling reasons to use GCC beyond just its capabilities as a
compiler.  So, at some point, I think we'll probably want (or even need)
to add such an interface to GCC.

LLVM's bytecode is a flat, three-address code style.  That's convenient
for optimization, and more compact that Tree, but source-level tools
actually want tree data structures, complex expressions, and high-level
control-flow primitives (so that they can even do things like
distinguish a do-loop from a while-loop).  So, it would be a drastic
change to try to extend LLVM's bytecode format to present source-level
information in this way.

Nothing about LLVM is a step backwards from where we are today, with
respect to this kind of tool integration.  It's just that LLVM doesn't
particularly advance us in that direction, whereas the infrastructure
for the LTO proposal would facilitate this effort, in addition to just
LTO.  So, a possible advantage of the LTO proposal in this respect is
that it might be a faster path to having both LTO and a source-level
interface, and leave us with only one set of routines for
reading/writing intermediate code to files.  The obvious counter-point
is that LLVM is almost certainly a faster path to link-time
optimization, since it already works, and that it doesn't in any way
prevent us from adding the source-level integration later.

The fact

Installing libgcj consumes huge amounts of memory

2005-12-03 Thread Gerald Pfeifer
Is anyone seeing this?  With current 4.1 sources, on a machine with "only" 
1GB of main memory + 1GB swap, the following part of `make install`

 Adding java source files from srcdir '/cvs/gcc/trunk/libjava/classpath'.
 Adding java source files from VM directory /cvs/gcc/trunk/libjava 
/tmp/OBJ-1203-1719/i686-pc-linux-gnu/libjava
 Adding generated files in builddir '..'.
 make -f /cvs/gcc/trunk/libjava/classpath/lib/Makefile.gcj \
  GCJ='/tmp/OBJ-1203-1719/gcc/gcj \
  -B/tmp/OBJ-1203-1719/i686-pc-linux-gnu/libjava/ \
  -B/tmp/OBJ-1203-1719/gcc/' \
  
compile_classpath='..:/cvs/gcc/trunk/libjava:/tmp/OBJ-1203-1719/i686-pc-linux-gnu/libjava:/cvs/gcc/trunk/libjava/classpath:/cvs/gcc/trunk/libjava/classpath/external/w3c_dom:/cvs/gcc/trunk/libjava/classpath/external/sax:.:'
 
\
  top_srcdir=/cvs/gcc/trunk/libjava/classpath

spawns a recursive make (GNU make 3.80) that consumes some 450MB of memory 
and triggers a system load of 12+, basically rendering the machine dead 
for about a minute.

On a different machine with only 512MB + 1GB swap, this time running 
FreeBSD 5.3, I cannot install GCC any longer.

This seems to be a regression between the 20051125 and 20051202 snapshots
of GCC 4.1, but I failed to find any indications in the Makefiles, so the
problem may a bit older.


Any ideas how I could nail this down?  Anyone else seeing this?

Gerald


Re: Installing libgcj consumes huge amounts of memory

2005-12-03 Thread Alan Modra
On Sun, Dec 04, 2005 at 12:35:31AM +0100, Gerald Pfeifer wrote:
> spawns a recursive make (GNU make 3.80) that consumes some 450MB of memory 
> and triggers a system load of 12+, basically rendering the machine dead 
> for about a minute.
> 
> On a different machine with only 512MB + 1GB swap, this time running 
> FreeBSD 5.3, I cannot install GCC any longer.

I noticed something similar on a Linux machine with 512M + 1G swap when
remaking libjava after editing some files.  Thrashing for around 15
minutes before finally proceeding.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre


Re: GCC back-ends

2005-12-03 Thread Ian Lance Taylor
"Domagoj D" <[EMAIL PROTECTED]> writes:

> Does GCC front- and middle-end keep the source code line numbers all
> the way until the RTL is generated? I'd need that for the tool I'm
> developing.

Yes.  They have to, in order to generate correct debugging
information.

> Also, are there any simple source code browsers / static analysis
> tools that use GCC as the front-/middle-end that I might check out
> to see how to hook up with GCC?

I don't know of any.

Ian