Re: building gcc

2006-10-12 Thread Daniel Jacobowitz
On Thu, Oct 12, 2006 at 12:22:57PM -0400, Bob Rossi wrote:
> and the gcc that is put into prefixdir is compiled with -O2 and -g,
> which makes it hard to follow in the debugger. Anyone have a clue on how
> to compile gcc so only -g is used, and not -O2? Typically, I use the
> CFLAGS trick, but it doesn't seem to work for gcc.

Use CFLAGS="-g" ../gcc-src/configure.  The top level file is still
autoconf 2.13.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Question about LTO dwarf reader vs. artificial variables and formal arguments

2006-10-21 Thread Daniel Jacobowitz
On Sat, Oct 21, 2006 at 06:35:40PM +0200, Steven Bosscher wrote:
> where _c is strlen("Hi World!").  From a user perspective, it would be better 
> to hide _c for the debugger because it is not something that the user had in 
> the original program.  I have a patch to hide that parameter, that is, it 
> stops GCC from writing out DW_TAG_formal_parameter for _c.  But I am worried 
> about how this will work out later if/when someone tries to make LTO work for 
> gfortran too.
> Can you still reconstruct the correct function prototype for LTO from the 
> debug info if you don't write debug info for _c?

Wouldn't this be upsetting to debuggers, too - for instance, if they
wanted to call the function?  It might be wiser to tag it
DW_AT_artificial, and let the debugger sort out what to do with it.

> Similarly, LTO has to somehow deal with DECL_VALUE_EXPR and the debug 
> information that is produced from it.  Gfortran (and iiuc other front ends 
> and SRA) use this DECL_VALUE_EXPR to produce fake variables that point to 
> some location to improve the debug experience of the user.  For Fortran we 
> use it to create fake variables to point at members of a COMMON block, for 
> example, so that the user can do "p A" for a variable A in a common block, 
> instead of "p name_of_the_common_block.A".  Is there already some provision 
> to handle this kind of trickery in LTO?

I don't think we're far enough on yet to know the answer to this or
your other question, but I may be wrong.  There's a reason we're
focusing on C right now :-)  I don't think the design precludes this
sort of thing, but we won't know how it all fits together until more's
been done.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Handling of extern inline in c99 mode

2006-11-01 Thread Daniel Jacobowitz
On Wed, Nov 01, 2006 at 06:59:42PM +, Joseph S. Myers wrote:
> I'd rather simply fix glibc to work with C99 inline semantics.  For the 
> above you might use
> 
> #define tolower(c) __tolower_inline(c)
> static __inline __attribute__((__always_inline__)) int tolower_inline ...
> 
> and #undef tolower when defining the out of line function.  That would 
> apply to all cases where a user-visible function in a header is currently 
> inlined directly; for a purely internal function in the header, we can 
> arrange for all declarations to use "inline" without "extern" when in C99 
> mode.

Isn't the whole point that the current extern inline isn't
__always_inline__, but leaves it to the compiler's judgement?

-- 
Daniel Jacobowitz
CodeSourcery


Re: Bootstrap failure on trunk on linux? (libgmp.so.3 exists, but not found)

2006-11-04 Thread Daniel Jacobowitz
On Sat, Nov 04, 2006 at 10:57:14AM -0800, Brooks Moses wrote:
> I've been setting up a Debian box to do builds on, and make bootstrap on 
> mainline is failing somewhere in the middle of Stage 1.  The problem 
> appears to be that it's not looking in the right places for libgmp.so.3 
> when it calls ./gcc/xgcc at the end of the stage.

It's doing exactly what it ought to, though unintuitive.  If you tell a
-compiler to use L/usr/local/lib, you're responsible for also setting
up either an rpath or LD_LIBRARY_PATH to point at /usr/local/lib; doing
it by default causes all kinds of problems.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Bootstrap failure on trunk on linux? (libgmp.so.3 exists, but not found)

2006-11-04 Thread Daniel Jacobowitz
On Sat, Nov 04, 2006 at 04:58:42PM -0800, Brooks Moses wrote:
> I guess I was assuming that since GMP is supposedly only a prerequisite 
> for building the compiler and not for using it, that it was being linked 
> in statically rather than dynamically.  But I guess that wouldn't apply 
> to xgcc, since it's only used in the build (right?).

No, xgcc is installed as gcc.  If you have a dynamic libgmp, it will be
used.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Threading the compiler

2006-11-11 Thread Daniel Jacobowitz
On Sat, Nov 11, 2006 at 04:16:19PM +, Paul Brook wrote:
> I don't know how much of the memory allocated is global readonly data (ie. 
> suitable for sharing between threads). I wouldn't be surprised if it's a 
> relatively small fraction.

I don't have numbers on global readonly, but in typical compilation
most of the memory allocated is definitely global.  Past a certain
point much of that is probably readonly.  However, it would take some
clever interfaces and discipline to _guarantee_ that any particular
global bit was shareable.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Reducing the size of C++ executables - eliminating malloc

2006-11-12 Thread Daniel Jacobowitz
On Sun, Nov 12, 2006 at 11:17:14PM +, Paul Brook wrote:
> The code being unwound through (ie. with frame data) needs to be able to 
> say "I need routine X if __Unwind_Raise is used anywhere in this program".
> I'm not aware of any way of doing this, other than trying it and starting 
> again if you guessed wrong.

Again, IIRC ARM's linker does something clever here.  Of course the ABI
in use there is somewhat different, but I suspect it could be adapted.

On Sun, Nov 12, 2006 at 03:20:48PM -0800, Mark Mitchell wrote:
> But, the way the ABI works requires a reference from each unit which may
> cause unwinding.  Even if you lose the personality routine, you will
> still have the exception tables, which themselves are a significant
> cost.  If you don't want to pay for exceptions, you really have to
> compile with -fno-exceptions.  In that case, certainly, we should be
> able to avoid pulling in the personality routine.

If you try what Michael's been saying, you'll notice that trivial
C++ files get the personality routine reference even if they don't
have anything with a destructor which would need cleaning up.  We ought
to be able to emit (somewhat smaller) unwind information which doesn't
reference the personality routine if it's going to have nothing to do,
shouldn't we?

-- 
Daniel Jacobowitz
CodeSourcery


Re: Reducing the size of C++ executables - eliminating malloc

2006-11-12 Thread Daniel Jacobowitz
On Mon, Nov 13, 2006 at 01:03:10AM +, Paul Brook wrote:
> > C++ files get the personality routine reference even if they don't
> > have anything with a destructor which would need cleaning up.  We ought
> > to be able to emit (somewhat smaller) unwind information which doesn't
> > reference the personality routine if it's going to have nothing to do,
> > shouldn't we?
> 
> Ah, ok, sorry. ARM unwinding works a bit differently, and you always need a 
> personality routine.

Right - which is why it was such a headache for us, isn't amenable to
_Unwind_Backtrace / _Unwind_ForcedUnwind, et cetera.  For .eh_frame,
though, the personality routine is only necessary to run cleanups
and check exception specs.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Reducing the size of C++ executables - eliminating malloc

2006-11-12 Thread Daniel Jacobowitz
On Sun, Nov 12, 2006 at 05:11:39PM -0800, Mark Mitchell wrote:
> Daniel Jacobowitz wrote:
> 
> > If you try what Michael's been saying, you'll notice that trivial
> > C++ files get the personality routine reference even if they don't
> > have anything with a destructor which would need cleaning up.  We ought
> > to be able to emit (somewhat smaller) unwind information which doesn't
> > reference the personality routine if it's going to have nothing to do,
> > shouldn't we?
> 
> Certainly, there are at least some such cases.  I guess a function whose
> only callees (if any) are no-throw functions, and which itself does not
> use "throw", does not need frame information.

You've talked right past me, since I wasn't saying that...

> However, I think you and Michael are right: we don't need to reference
> the personality routine here.

... but this.

> Unless the entire program doesn't
> contain anything that needs cleaning up, we'll still need it in the
> final executable,

Right.  So if you use local variables with destructors, even though you
don't use exceptions, you'll get the personality routine.  The linker
could straighten that out if we taught it to, though.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Do not use autoconf 2.60 yet

2006-11-14 Thread Daniel Jacobowitz
On Tue, Nov 14, 2006 at 08:05:59PM +, Joseph S. Myers wrote:
> On Tue, 14 Nov 2006, Eric Christopher wrote:
> 
> > Done, sorry about that.
> 
> Thanks.  Hopefully we can get a planned transition done (for gcc and src) 
> before 4.3.  (I suspect the first step will be the move of toplevel to 
> 2.59; I'm not sure what's holding that up now all subdirectories of gcc 
> and src have been moved.)

At this point I believe there are no more blockers.  Steve Ellcey would
be the person to ask.

-- 
Daniel Jacobowitz
CodeSourcery


powerpc64-gnu libgcc?

2006-11-24 Thread Daniel Jacobowitz
In updating toplevel libgcc, I noticed this in t-ppccomm:

ifneq (,$findstring gnu,$(target))
... -mlong-double-128 ...

This suggests it was supposed to apply to both GNU/Linux and GNU/Hurd, but
no other PowerPC targets.  Is that right?  If so, I assume it's safe to fix
it to do so.  It doesn't quite at present; powerpc64-gnu does not include
t-ppccomm.  powerpc-gnu does.

-- 
Daniel Jacobowitz
CodeSourcery


Configure test hangs on powerpc64-linux

2006-11-25 Thread Daniel Jacobowitz
I tried to build GCC HEAD today, using binutils 2.16.  It gets stuck
during configure, here:

checking linker EH-compatible garbage collection of sections...

The backtrace looks like:

#0  0x10048e60 in ppc64_elf_gc_mark_hook (sec=0x10183078,
info=0x1014e278, rel=0x1018c228,
h=0x0, sym=0x1017fc30) at
/scratch/joseph/3.4.0/linux/binutils-2.16/bfd/elf64-ppc.c:4892
#1  0x100704fc in _bfd_elf_gc_mark (info=0x1014e278,
sec=0x10183078,
[EMAIL PROTECTED]: 0x10048ddc )
at /scratch/joseph/3.4.0/linux/binutils-2.16/bfd/elflink.c:8771
#2  0x10070b10 in bfd_elf_gc_sections (abfd=0x10160570,
info=0x1014e278)
at /scratch/joseph/3.4.0/linux/binutils-2.16/bfd/elflink.c:9085
#3  0x1001343c in lang_process () at
/scratch/joseph/3.4.0/linux/binutils-2.16/ld/ldlang.c:4721
#4  0x10014e7c in main (argc=269804016, argv=0x1fff558)
at /scratch/joseph/3.4.0/linux/binutils-2.16/ld/ldmain.c:458

It never returns from ppc64_elf_gc_mark_hook (spins looking things up
in a hash table, I don't have the matching source handy).  I expect
this is fixed in later binutils, but has anyone else seen this happen? 
Is there some way we can avoid an infinite loop in configure for this
case?

-- 
Daniel Jacobowitz
CodeSourcery


Reviewer for top level libgcc

2006-11-30 Thread Daniel Jacobowitz
The top level libgcc patches are almost ready to submit; I need to go
over them one last time, but that's it.  Mark has suggested that any
large projects find a reviewer in advance; is there anyone out there
who feels qualified and available to review this?

(I tried the build system maintainers first, but haven't heard back
from any of them...)

-- 
Daniel Jacobowitz
CodeSourcery


Re: configuration options policy (at toplevel or only inside gcc/)?

2006-12-14 Thread Daniel Jacobowitz
On Thu, Dec 14, 2006 at 10:19:12AM +0100, Basile STARYNKEVITCH wrote:
> In other words, should I make all my configurable flag visible by the
> toplevel configure and propagated (thru Makefile.tpl) to gcc/ or not?

No, you shouldn't.  Only add them to subdirs that need them.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Gprof and shared libraries

2006-12-28 Thread Daniel Jacobowitz
On Thu, Dec 28, 2006 at 09:28:30AM -0800, Ian Lance Taylor wrote:
> I don't know the answer to your question.  It may be that you need to
> run "gprof /path/to/lirary.so gmon.out".  I'm not sure.

Gprof has roughly no support for shared libraries.  Only addresses
between _stext and _etext are recorded.

-- 
Daniel Jacobowitz
CodeSourcery


Re: changing "configure" to default to "gcc -g -O2 -fwrapv ..."

2006-12-29 Thread Daniel Jacobowitz
On Fri, Dec 29, 2006 at 10:44:02PM +0100, Florian Weimer wrote:
> (BTW, I would be somewhat disappointed if this had to be pampered over
> on the autoconf side.  If the GNU project needs -fwrapv for its own
> software by default, this should be reflected in the compiler's
> defaults.

I absolutely agree.  My impression is that the current situation is a
disagreement between (some of, at least) the GCC developers, and
someone who can commit to autoconf; but I think it would be a very
bad choice for the GNU project to work around itself.  If we can't
come to an agreement on the list, please ask the Steering Committee.
This is a textbook example of what they're for.

-- 
Daniel Jacobowitz
CodeSourcery


Re: [heads-up] disabling "../configure --disable-bootstrap && make bootstrap"

2006-12-29 Thread Daniel Jacobowitz
On Fri, Dec 29, 2006 at 05:53:43PM -0500, Richard Kenner wrote:
> > Next week, after the merge, the bootstrap rules in the gcc directory 
> > will go away.
> 
> So what will be the way at that point to bootstrap JUST gcc?

You won't be able to do that any more.  We've been saying that since
the first top level bootstrap rules went in, every time the subject
came up - this really shouldn't be a surprise.

Libgcc will no longer be configured by the gcc subdirectory's makefile.
Therefore there will be no startfiles or libgcc for the new compiler to
use.

-- 
Daniel Jacobowitz
CodeSourcery


Re: [heads-up] disabling "../configure --disable-bootstrap && make bootstrap"

2006-12-29 Thread Daniel Jacobowitz
On Fri, Dec 29, 2006 at 06:38:27PM -0500, Richard Kenner wrote:
> > You won't be able to do that any more.  We've been saying that since
> > the first top level bootstrap rules went in, every time the subject
> > came up - this really shouldn't be a surprise.
> 
> No, what's been said is that there will be a MODE in which that can't
> be done, but it was always claimed that no capability would be lost with
> these changes.  Now we're seeing a loss, and it's a very significant one.

I'm sorry, but I decline to argue with you about this.  I've done it
several times already.  I apologize that the entire process has drawn
out over such a long period that we've had to rehash this argument
again.  I don't believe anyone else considers this important.

The last decision I see in my archives on this subject was in February
2006.

> > Libgcc will no longer be configured by the gcc subdirectory's makefile.
> > Therefore there will be no startfiles or libgcc for the new compiler to
> > use.
> 
> Sure there is: the one the last iteration used!  Obviously, if you're only
> bootstrapping the compiler, you're going to leave everything else unchanged.

Maybe I don't understand what you're asking.  The process is:

  - Build supporting libraries for the build system tools
  - Build supporting libraries for the host system tools
  - Build gcc
  - [NEW] Build libgcc
  - If stage < final stage, go back to building some of the host
libraries
  - Build other target libraries

Note that when we get into and then out of the gcc subdirectory, the
startfiles and libgcc haven't been built.  If we don't go on to build
libgcc, the just-built compiler is not functional.  It can't use libgcc
or crtbegin from the system; they might not even exist, depending on
your bootstrap compiler.

Do you mean something different by "bootstrapping just the compiler"?

-- 
Daniel Jacobowitz
CodeSourcery


Re: [heads-up] disabling "../configure --disable-bootstrap && make bootstrap"

2006-12-29 Thread Daniel Jacobowitz
On Sat, Dec 30, 2006 at 12:30:06AM -0500, Richard Kenner wrote:
> >   - Build supporting libraries for the build system tools
> >   - Build supporting libraries for the host system tools
> >   - Build gcc
> >   - [NEW] Build libgcc
> >   - If stage < final stage, go back to building some of the host
> > libraries
> >   - Build other target libraries
> > 
> > Do you mean something different by "bootstrapping just the compiler"?
> 
> The problem is that last step: it takes a LONG time to build libjava,
> for example.  If I make a change that I need to give a sanity check to,
> I want to compile GCC with it, but not all the other additional code: that's
> for a later state in the development/testing cycle.  Since building a stage
> of GCC is about three times faster than "other target libraries", if there's
> no way to suppress that, the time to do this test goes up by a factor of four.

Oh!  If that's all you mean, I misunderstood; it would not be at all
difficult to add this.  It would probably be just a matter of
documentation; I think there's already an appropriate target.  And if
I'm reading correctly, it's spelled "stage3-bubble".  That will build
build libraries, host libraries, gcc, and libgcc.  No other target
libraries are bootstrapped.

Does that help?

On Fri, Dec 29, 2006 at 09:35:38PM -0800, Ian Lance Taylor wrote:
> Would you feel OK if there were a make target to do a bootstrap
> without building the other target libraries?  The change from today's
> bootstrap with --disable-bootstrap would be that it would build
> libiberty, libcpp, and friends at each stage, rather than only once.

I think it would even be possible to not bootstrap those host libraries
- but unwise for the reasons we wanted them bootstrapped originally,
and they're very quick to build.

In a combined tree we bootstrap binutils too.  That's less obviously
useful.  But in a GCC-only tree we bootstrap intl, gcc, libcpp,
libdecnumber, libiberty, and zlib: all things linked directly into
the compiler.

-- 
Daniel Jacobowitz
CodeSourcery


Do we want non-bootstrapping "make" back?

2006-12-29 Thread Daniel Jacobowitz
Once upon a time, the --disable-bootstrap configure option wasn't
necessary.  "make" built gcc, and "make bootstrap" bootstrapped it.

Is this behavior useful?  Should we have it back again?

The trivial implementation is to build separate makefiles using the
existing sed magic and have the non-bootstrap one as default, with a
bootstrap: target that forwards to make -f Makefile.boot.  Obviously
better implementations are possible, and if you mix and match targets
then strange things may happen, but that was true beforehand.  Anyway,
that would let us eliminate the configure-time decision - if there's
a convincing reason to do so.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Link tests not allowed

2006-12-31 Thread Daniel Jacobowitz
On Sun, Dec 31, 2006 at 06:12:23PM -0800, Jim Wilson wrote:
> Admittedly, the configure error printed is a bit misleading.  It used to 
> make sense when it was first written, but a lot of stuff has changed 
> since then, and the error message never got updated.

The GCC_NO_EXECUTABLES error message really ought to (A) get logged in
config.log, and (B) tell you why it decided link tests were forbidden.
(And it's my fault originally IIRC.)

I'm not at all sure how the nm failure ends up leading to this problem,
but I'll take your word for that part.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Link tests not allowed

2007-01-01 Thread Daniel Jacobowitz
On Mon, Jan 01, 2007 at 06:19:08PM -0800, Douglas B Rupp wrote:
> configure:4811: /home/rupp/ngnat/buildxppcaix/./gcc/xgcc 
> -B/home/rupp/ngnat/buildxppcaix/./gcc/ 
> -B/home/rupp/gnat/powerpc-ibm-aix5.2.0.0/bin/ 
> -B/home/rupp/gnat/powerpc-ibm-aix5.2.0.0/lib/ -isystem 
> /home/rupp/gnat/powerpc-ibm-aix5.2.0.0/include -isystem 
> /home/rupp/gnat/powerpc-ibm-aix5.2.0.0/sys-include -c -O2 -g 
> conftest.c >&5

I would recommend trying to link a program using exactly that command
line (without the -c conftest.c of course) and seeing what it tells you.
The problem is usually obvious.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Link tests not allowed

2007-01-01 Thread Daniel Jacobowitz
On Mon, Jan 01, 2007 at 07:32:51PM -0800, Jim Wilson wrote:
> This is the wrong part of the config.log fragment.  The interesting part
> is nearer the top, immediately after the command using the -V option.
> The use of -V probably fails which is OK as this is only for information
> purposes, but the next one is the GCC_NO_EXECUTABLES test, and that one
> should have worked.

Unfortunately, when it fails, the error does not get logged properly.

-- 
Daniel Jacobowitz
CodeSourcery


Top level libgcc checked in

2007-01-03 Thread Daniel Jacobowitz
I've just committed the approved top level libgcc patches, which
create a top level "libgcc" directory.

Hopefully, this will not have any great impact on much of anyone.
The only change I know of is that if you run "make all-gcc", you will
no longer have enough to test C.  You need at least "make
all-target-libgcc".  If you're bootstrapping, libgcc will be built in
each stage.

If the changes cause you any problems please let me know and I'll
try to clean up after myself.

Meanwhile, it is now very simple to move target-specific pieces of
"libgcc" (including startfiles) from the gcc subdirectory to the
libgcc subdirectory.  Config fragments are simplest; and once every
reference to a source file has moved to the new directory, the source
file itself can be moved also.  I invite target maintainers to
migrate their configurations.  I'll be doing some as I have time,
but it's tricky to do blind and easier if you have a target to test
on.

Right now the libgcc configuration is completely tied up with
gcc/Makefile.  As parts of the configuration process move from
gcc/config/ to libgcc/config/ (or libgcc's configure.ac), we'll
be untangling them.  Eventually, it should be possible to build
gcc and the target libraries separately.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Top level libgcc checked in

2007-01-04 Thread Daniel Jacobowitz
On Thu, Jan 04, 2007 at 04:19:17PM +1100, Ben Elliston wrote:
> On Wed, 2007-01-03 at 23:28 -0500, Daniel Jacobowitz wrote:
> 
> > Right now the libgcc configuration is completely tied up with
> > gcc/Makefile.  As parts of the configuration process move from
> > gcc/config/ to libgcc/config/ (or libgcc's configure.ac), we'll
> > be untangling them.  Eventually, it should be possible to build
> > gcc and the target libraries separately.
> 
> So I take it that at this stage we've not commenced the process of
> having libgcc's configury run autoconf tests on the target compiler?
> (Rather than having to hardwire most target details into the t-* files?)
> Any objections to starting down this path?

As Paolo responded, we have already begun - I use autoconf to detect
both visibility support and decimal float support.  I'm not sure how
much else remains to be done, but I'm open to suggestions :-)  I
wonder if it's possible to work out some of the difuncs/tifuncs stuff
based on the size of target types.

-- 
Daniel Jacobowitz
CodeSourcery


Re: trunk gcc has problems finding crtbegin.o

2007-01-04 Thread Daniel Jacobowitz
On Thu, Jan 04, 2007 at 02:32:19PM +0100, Martin Reinecke wrote:
> /usr/bin/ld: crtbegin.o: No such file: No such file or directory
> collect2: ld returned 1 exit status
> 
> This probably happens because the crt*.o files are no longer placed into 
> /lib/gcc/i686-pc-linux-gnu/4.3.0/
> but rather into /lib/gcc/i686-pc-linux-gnu/.
> Is this related to the recent libgcc changes?

Yes, it's my fault.  The last time I tested make install, they went to
the right place.  I'm building right now to find out what's gone wrong.

-- 
Daniel Jacobowitz
CodeSourcery


Re: trunk gcc has problems finding crtbegin.o

2007-01-04 Thread Daniel Jacobowitz
On Thu, Jan 04, 2007 at 08:59:51AM -0500, Daniel Jacobowitz wrote:
> On Thu, Jan 04, 2007 at 02:32:19PM +0100, Martin Reinecke wrote:
> > /usr/bin/ld: crtbegin.o: No such file: No such file or directory
> > collect2: ld returned 1 exit status
> > 
> > This probably happens because the crt*.o files are no longer placed into 
> > /lib/gcc/i686-pc-linux-gnu/4.3.0/
> > but rather into /lib/gcc/i686-pc-linux-gnu/.
> > Is this related to the recent libgcc changes?
> 
> Yes, it's my fault.  The last time I tested make install, they went to
> the right place.  I'm building right now to find out what's gone wrong.

I'm not sure how I missed this before; apologies.  I've checked in this
obvious fix.

Relating to what Mark was saying earlier: you can see that this assumes
$(CC) (in the target directory) has the same version as ../gcc/xgcc.
This is not the first place with that sort of assumption.  If you're
building Canadian crosses, remember to use the same source tree to
build the cross compiler and the cross-hosted compiler.  Anything
else is just impossible to support.

-- 
Daniel Jacobowitz
CodeSourcery

2007-01-04  Daniel Jacobowitz  <[EMAIL PROTECTED]>

* Makefile.in (version): Define.

Index: Makefile.in
===
--- Makefile.in (revision 120429)
+++ Makefile.in (working copy)
@@ -181,6 +181,8 @@ export RANLIB_FOR_TARGET
 export libsubdir
 export slibdir
 
+version := $(shell $(CC) -dumpversion)
+
 DECNUMINC = -I$(srcdir)/../libdecnumber -I$(MULTIBUILDTOP)../../libdecnumber
 
 # Specify the directories to be searched for header files.


Re: libgcc

2007-01-04 Thread Daniel Jacobowitz
On Thu, Jan 04, 2007 at 12:17:49PM -0800, Mike Stump wrote:
> In libgcc/Makefile I find:
> 
>   MAKEINFO = @MAKEINFO@
> 
> and
> 
>   PERL = @PERL@
> 
> Seems like they should be always substituted, if they are going to  
> always be in there, or, if they are never used, removed.

The latter; feel free to remove them :-)

-- 
Daniel Jacobowitz
CodeSourcery


Re: Do we want non-bootstrapping "make" back?

2007-01-04 Thread Daniel Jacobowitz
On Fri, Jan 05, 2007 at 12:18:53AM +0100, Eric Botcazou wrote:
> > Once upon a time, the --disable-bootstrap configure option wasn't
> > necessary.  "make" built gcc, and "make bootstrap" bootstrapped it.
> >
> > Is this behavior useful?  Should we have it back again?
> 
> Is this a genuine question or some subtle attempt at mimicing Paul Eggert's 
> cleverness to spark your own gigantic thread? :-)

Ahem.

> Certainly, doing a mere 
> build with "make" and a complete bootstrap with "make bootstrap" was rather 
> reasonable, but you and other build machinery wizards convinced us that this 
> would be a pain to support with toplevel bootstrap.  So what has changed?

Not much.  I'm convinced it would be feasible, but definitely not easy,
so I wanted to see how much interest there was - seems like some, but
not a lot.

-- 
Daniel Jacobowitz
CodeSourcery


Re: How to dedicate a register for special purpose in gcc?

2007-01-04 Thread Daniel Jacobowitz
On Fri, Jan 05, 2007 at 12:53:16PM +0800,  wrote:
> Hi,
> How can I dedicate a register for special purpose, that means,
> the dedicated register only appears in the inserted code of my own,
> but never allocated in the rest of code. I have read some doc(gcc int)
> about the register usage but still have no idea.
> 
> I would *really* appreciate any help I can get on this issue!

Take a look at -ffixed-REG.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Do we want non-bootstrapping "make" back?

2007-01-05 Thread Daniel Jacobowitz
On Fri, Jan 05, 2007 at 08:19:39AM +0100, Eric Botcazou wrote:
> > Not much.  I'm convinced it would be feasible, but definitely not easy,
> > so I wanted to see how much interest there was - seems like some, but
> > not a lot.
> 
> Would this comprise retrofitting the support into the 4.2 branch?

I have no intention of touching the build system for the release
branch, in any case.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Do we want non-bootstrapping "make" back?

2007-01-05 Thread Daniel Jacobowitz
On Fri, Jan 05, 2007 at 09:23:56AM -0500, Richard Kenner wrote:
> > > Not much.  I'm convinced it would be feasible, but definitely not easy,
> > > so I wanted to see how much interest there was - seems like some, but
> > > not a lot.
> > 
> > Would this comprise retrofitting the support into the 4.2 branch?
> 
> I don't think it's needed in the 4.2 branch since you can get the 
> functionality
> with --disable-bootstrap (or whatever it's called).  It's only in 4.3 that
> that option will be removed and hence the functionality otherwise lost.
> 
> Or do I misunderstand?

We're not talking about that at all.  I was only talking about whether
the decision was made at configure or make time.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Do we want non-bootstrapping "make" back?

2007-01-05 Thread Daniel Jacobowitz
On Fri, Jan 05, 2007 at 06:00:53PM +0100, Eric Botcazou wrote:
> So, assuming we go back to the old behaviour, 4.2.x would be the only series 
> for which 'make' performs a complete bootstrap?  Seems a little odd.  I think 
> we need a clear cut here: either automatic bootstrap is a good feature and 
> we're done, or it (after all) isn't and no series of compilers should be 
> released with it.

Someone else gets to make that decision then.

I'm somewhat sorry for raising the issue; I took another look at it
last night, and it would be harder than I thought to get it working.
And I certainly don't have time to do it before 4.2.0.

-- 
Daniel Jacobowitz
CodeSourcery


Re: __sync_bool_compare_and_swap

2007-01-05 Thread Daniel Jacobowitz
On Fri, Jan 05, 2007 at 05:05:41PM +, Andrew Haley wrote:
> But it can't unless you use an architecture that has cmpxchgl.
> cmpxchgl is a 486 instruction; if you compile for 386, we have to
> generate the call because there is no such instruction.

And the older compiler was a Debian packaged one; Debian's compilers
default to generating code for a 486 or later.

-- 
Daniel Jacobowitz
CodeSourcery


Re: gcc trunk 20070110 build failure (--enable-targets=all i486-linux-gnu)

2007-01-10 Thread Daniel Jacobowitz
On Wed, Jan 10, 2007 at 12:07:28PM +0100, Matthias Klose wrote:
> trunk configured on i486 (on x86_64 hardware) with
> 
>   --enable-targets=all i486-linux-gnu
> 
> fails to configure the first 64bit library (libiberty), not finding
> the correct libgcc.

libgcc uses the same config-ml.in to enable multilibs that libiberty
does.  You're going to have to figure out why that's decided that we
shouldn't build multilibs.  It starts by checking xgcc
-print-multi-lib; that works, right?  Could it have picked up
a bad setting for $CC?

-- 
Daniel Jacobowitz
CodeSourcery


Re: main(), registers and gdb

2007-01-10 Thread Daniel Jacobowitz
On Wed, Jan 10, 2007 at 04:32:48PM -0700, Greg Watson wrote:
> If the following code is compiled with 'gcc -g -O0 -o test test.c',  
> the address of argc is passed into func() in the ecx register. Since  
> ecx is not preserved after the call to printf(), the address of argc  
> is corrupted on return from func(). Normally this would not be a  
> problem, since argc is never used in the code.

This is a typical problem.  There is not much that can be done about
it, although I remember once hearing a proposal that GCC should
forcibly extend the live ranges of local variables (or at least
arguments) at -O0 to improve debugging.  That seems sensible to me.

> However, when run under gdb, commands that view the stack frame  
> produce strange results, and some commands (e.g. -var-update)  
> actually crash the debugger.

A crash is always a bug.

> Breakpoint 1, main (argc=1, argv=0xbffcef14) at test.c:14
> 12  func(&argc);
> (gdb) n
> in func
> 14  printf("hello\n");
> (gdb) where
> #0  main (argc=Cannot access memory at address 0x4
> ) at test.c:16

And honestly, I have no idea how that happened.  Does it happen
with a current GDB?  I suspect from the error message that this
one is not too recent.

-- 
Daniel Jacobowitz
CodeSourcery


Re: main(), registers and gdb

2007-01-10 Thread Daniel Jacobowitz
On Wed, Jan 10, 2007 at 04:50:59PM -0700, Greg Watson wrote:
> That would be nice. Although this seems like a trivial issue, it can  
> potentially effect debugging all MPI programs since they always start  
> with 'MPI_Init(&argc, &argv)'.

See my reply to the bug.  This is specific to i686 32-bit compilers,
arguments, and functions named "main".

> >And honestly, I have no idea how that happened.  Does it happen
> >with a current GDB?  I suspect from the error message that this
> >one is not too recent.
> 
> It's gdb 6.5, so reasonably recent.

Please try a current snapshot.  Thanks.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Running GCC tests on installed compiler

2007-01-12 Thread Daniel Jacobowitz
On Fri, Jan 12, 2007 at 06:05:49PM -0800, Mike Stump wrote:
> On Jan 12, 2007, at 3:55 PM, Steve Ellcey wrote:
> >Can someone one with some deja-knowledge help me figure out how to run
> >the GCC tests on an installed compiler and without having to do a GCC
> >build?
> 
> You must be new around here:
> 
>   http://gcc.gnu.org/ml/gcc-announce/1997-1998/msg0.html
> 
> :-)  Which is the I feel lucky google("site:gcc.gnu.org how to run  
> installed GCC_UNDER_TEST") result.

For the less old-school inclined, try contrib/test_installed.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Compiling libgcc functions with non-default LIBGCC2_UNITS_PER_WORD

2007-01-21 Thread Daniel Jacobowitz
On Sat, Jan 20, 2007 at 01:15:19PM +0100, Rask Ingemann Lambertsen wrote:
>Somewhere in the libgcc build machinery, there is mechanism to override
> the default LIBGCC2_UNITS_PER_WORD setting when compilng a function, so you
> could in principle provide e.g. _divsi3 as well as _divdi3. It there a way
> of making use of this facility in a more elegant way than putting the whole
> gcc command line in a target makefile fragment?

I'm not sure I understand what you want to do.  Could you give me a
bigger example?  Those bits are only used for fix/float conversions.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Compiling libgcc functions with non-default LIBGCC2_UNITS_PER_WORD

2007-01-21 Thread Daniel Jacobowitz
On Sun, Jan 21, 2007 at 11:09:56PM +0100, Rask Ingemann Lambertsen wrote:
>I would like to be able to add something like
> 
> LIBGCC2_EXTRA_FUNCS = _ashldi3:2 _ashrdi3:2 _lshrdi3:2 _divdi3:2 _moddi3:2
> 
> to t-machine instead of
> 
> LIB2FUNCS_EXTRA = ashlsi3.c ashrsi3.c lshrsi3.c ...
> 
> ashlsi3.c: $(srcdir)/libgcc2.c $(srcdir)/libgcc2.h
>./xgcc -B./ -E -Dinhibit_libc -DLIBGCC2_UNITS_PER_WORD=2 -DL_ashldi3 \
>  -DIN_GCC -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I . -I $(srcdir) \
>  -I $(srcdir)/../include $(srcdir)/libgcc2.c -o ashlsi3.c
> 
> and so on, to provide the functions _ashlsi3, _ashrsi3, _lshrsi3, _divsi3
> and _modsi3 in addition to the default DImode ones.

Well, it would be much simpler than that.  You could reuse the existing
code.

intfuncs = _ashlXX3 _ashrXX3 _lshrXX3 _divXX3 _modXX3
siintfuncs = $(subst XX,si,$(intfuncs))
diintfuncs = $(subst XX,d i,$(intfuncs))

iter-items := $(siintfuncs)
iter-labels := $(diintfuncs)
iter-sizes := $(patsubst %,2,$(siintfuncs))

include $(srcdir)/empty.mk $(patsubst 
%,$(srcdir)/siditi-object.mk,$(iter-items))

libgcc-objects += $(patsubst %,%$(objext),$(siintfuncs))
ifeq ($(enable_shared),yes)
libgcc-s-objects += $(patsubst %,%_s$(objext),$(siintfuncs))
endif

If you think it would be useful for enough targets, you could add some
code to automatically extract the bits before and after the colon and
give this a standard name that tdep files could set.  That should get
you started.

-- 
Daniel Jacobowitz
CodeSourcery


Top level libgcc migration tips

2007-01-27 Thread Daniel Jacobowitz
I've put up some information on the wiki about moving configuration
information from gcc to libgcc.  Please, feel free to add to it!

http://gcc.gnu.org/wiki/Top-Level_Libgcc_Migration

-- 
Daniel Jacobowitz
CodeSourcery


Re: problem building gcc4-4.3.0-20070209

2007-02-09 Thread Daniel Jacobowitz
On Sat, Feb 10, 2007 at 12:56:13AM +0100, Dominique Dhumieres wrote:
> While building the gcc4-4.3.0-20070209 snapshot, I got the error
> 
> ...
> checking for correct version of gmp.h... no
> configure: error: Building GCC requires GMP 4.1+ and MPFR 2.2.1+.
> ...
> 
> I am using the same script that worked last week and I have
> gmp 4.2.1 and mpfr 2.2.1 since several builds. I am using
> a Mac OSX 10.3.9. Can someone give me a pointer the change(s)
> that might explain the breakage.

You need to show us your configure arguments to be sure.  I bet
you're specifying just --host.

I don't know exactly what to do about this.  It's caused by:

if test ${build} != ${host}; then
  some defaults
else
  AC_PROG_CC
fi

AC_TRY_COMPILE

ac_objext is set at the expansion of AC_PROG_CC and if you take the if
branch, it never gets set.

Does anyone reading this know what the right thing to do is?  Is there
anything in the autoconf documentation about not using some macros
inside conditional statements?

-- 
Daniel Jacobowitz
CodeSourcery


Re: problem building gcc4-4.3.0-20070209

2007-02-10 Thread Daniel Jacobowitz
On Sat, Feb 10, 2007 at 05:08:10PM +0100, Paolo Bonzini wrote:
> 
> >if test ${build} != ${host}; then
> >  some defaults
> >else
> >  AC_PROG_CC
> >fi
> >
> >AC_TRY_COMPILE
> >
> >ac_objext is set at the expansion of AC_PROG_CC and if you take the if
> >branch, it never gets set.
> >
> >Does anyone reading this know what the right thing to do is?  Is there
> >anything in the autoconf documentation about not using some macros
> >inside conditional statements?
> 
> Yes, but the idea is that, if we are in a Canadian setting, we can set 
> all the variables that Autoconf sets, in the `then' branch.  So we'd set 
> ac_objext=.o in the `then' branch.

This seems horribly wrong somehow.  Aren't we intested in the ${build}
-> ${host} compiler at this point anyway?  So shouldn't we be testing
it?  I think the whole block can go.

-- 
Daniel Jacobowitz
CodeSourcery


Re: problem building gcc4-4.3.0-20070209

2007-02-10 Thread Daniel Jacobowitz
On Sat, Feb 10, 2007 at 06:59:35PM +0100, Paolo Bonzini wrote:
> 
> >This seems horribly wrong somehow.  Aren't we intested in the ${build}
> >-> ${host} compiler at this point anyway?  So shouldn't we be testing
> >it?  I think the whole block can go.
> 
> Hmm, it says indeed "this is going to change when we autoconfiscate". 
> Something like this?

Yes, pretty much (though I don't see the point in the CFLAGS -g
assignment either).

-- 
Daniel Jacobowitz
CodeSourcery


Re: Fw: Strange paths for gcc for x86_64-pc-mingw32

2007-02-19 Thread Daniel Jacobowitz
On Mon, Feb 19, 2007 at 10:35:41AM +0100, Kai Tietz wrote:
> Hi,
> 
> No the point is that I am using the default settings of gcc (without any 
> "--prefix="). The compiler is built and installed at the expected place 
> (/usr/local/libexec/gcc/...), but the gcc,exe tool installed under 
> /usr/local/x86_64-pc-mingw32/bin does not have the proper path to its gcc 
> tools defined. Under previous versions it worked. By the way, to make the 
> cross-compiler known via PATH would break my complete system.

That's not the one you want to run.  You should have something in
/usr/local/bin/x86_64-pc-mingw32-gcc.exe also; do you?

The one in /usr/local/x86_64-pc-mingw32/bin is different, and may not
work - I think the way that normally happens involves symbolic links,
or something similar.  Anyway, you don't need to use it.

-- 
Daniel Jacobowitz
CodeSourcery


Re: GCC 4.2.0 Status Report (2007-02-19)

2007-02-20 Thread Daniel Jacobowitz
On Tue, Feb 20, 2007 at 06:23:14PM -0500, Kaveh R. GHAZI wrote:
> No it doesn't need stating, at least not for me. :-)  Sure nobody likes
> bugs/miscompilations, but all compilers have them.  We evaluate how
> serious they are and whether a performance hit from a bug fix is worth it.
> My understanding is that 4.1 has this very same bug, and it hits about as
> often as it does in 4.2.  See the end of this message:
> http://gcc.gnu.org/ml/gcc/2007-02/msg00432.html
> 
> If so, then it can't be too bad IMHO.  That was the context within which
> I made my statement.  And if that holds, I continue to stand by it.

On the other hand, I consider this a fairly serious bug in 4.1 (and
I've seen customers encounter it at least twice off the top of my
head).  It depends what your tolerance for wrong-code bugs is.

-- 
Daniel Jacobowitz
CodeSourcery


Re: GCC 4.2.0 Status Report (2007-02-19)

2007-02-21 Thread Daniel Jacobowitz
On Wed, Feb 21, 2007 at 11:33:39AM -0500, Kaveh R. GHAZI wrote:
> My tolerance is pretty low.  I'm relying on the fact that the bug occurs
> rarely in real code.  I'm trying to reconcile your statement about
> customer feedback with Daniel B's claim here:
> http://gcc.gnu.org/ml/gcc/2007-02/msg00476.html
> 
> He said:
> "I'm still of the opinion that even though you can write relatively simple
> testcases for them, they are actually pretty rare.  In most of the bugs,
> it is in fact, the absence of any real code (or local variables in one
> case) that triggers the bad result. Anything more complex and we get the
> right answer."

They're different sides of the same coin; they don't disagree, though
a judgement is indeed required.

In support of what Danny B. wrote, in at least one case we were unable
to meaningfully reproduce the testcase.  This stuff is not easy to
trigger.  But if you do, it's quite unpleasant - both for the user,
and for the poor compiler developer who has to figure out what
happened.

-- 
Daniel Jacobowitz
CodeSourcery


Re: GCC 4.2.0 Status Report (2007-02-19)

2007-02-21 Thread Daniel Jacobowitz
On Wed, Feb 21, 2007 at 11:00:00PM +0100, Richard Guenther wrote:
> Of course the speed of a compiler is measured on testcases where
> speed matters - and this is usually FP code.  Now based on this reasoning
> we could (as CodeSourcery probably did) enable -fno-strict-aliasing by
> default, which fixes the class of 4.1.x bugs we are talking about.

I think we did something in the middle - we made the aliasing much
more conservative (maybe using one of your patches, even?) but without
completely disabling it.

But don't take my word too seriously here - I didn't do it, and I
don't really remember what happened.  I'm just making noise.

> Now, the realistic choices for 4.2.0 as I see them are, in order of my
> personal preference:
> 
> 1) Ship 4.2.0 as is
> 2) Ship 4.2.0 with the aliasing fixes reverted
> 3) no more reasonable option.  Maybe don't ship 4.2.0 at all.
> 
> so, I don't see backporting more patches or even re-branching as
> a real option.

I've been convinced of the same.  If we (GCC developers) shipped it
with the aliasing fixes reverted, I'm not sure quite what we
(CodeSourcery) would do with the result - but I bet we'd at least
consider reapplying them.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Re; Maintaining, was: Re: Reduce Dwarf Debug Size

2007-03-01 Thread Daniel Jacobowitz
On Thu, Mar 01, 2007 at 06:05:50PM -0800, Ian Lance Taylor wrote:
> One answer to that is to have patch advocates to help push patches in.
> They would need some experience with the community, but would not need
> deep technical knowledge.  This would be a volunteer position, along
> the lines of the bugmasters.

Good luck keeping people.  It's a crappy job.

-- 
Daniel Jacobowitz
CodeSourcery


Re: [RFC]possible improvements to --with-sysroot

2007-03-05 Thread Daniel Jacobowitz
On Sat, Mar 03, 2007 at 09:47:41PM +0800, Zhang Le wrote:
> Wouldn't it be great that we go one step further that we let ld look
> for libraries in the dir listed in $SYSROOT/etc/ld.so.conf, if this
> file ever exits? Of course for each entry in $SYSROOT/etc/ld.so.conf,
> we prefix $SYSROOT to it.

Did you try it?  This should already happen if you configured binutils
with a sysroot.

-- 
Daniel Jacobowitz
CodeSourcery


Re: [RFC]possible improvements to --with-sysroot

2007-03-05 Thread Daniel Jacobowitz
On Tue, Mar 06, 2007 at 02:05:06AM +0800, Zhang Le wrote:
> I have used "strace -f" to check where linker looked for -lqt-mt. From
> what I have observed, it seems that ld didn't use
> $SYSROOT/etc/ld.so.conf.

Well, it's supposed to, so I suggest you check what's happened in ld.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Detemining the size of int_fast8_t etc. in the frontend

2007-03-07 Thread Daniel Jacobowitz
On Wed, Mar 07, 2007 at 12:05:32PM -0800, Mike Stump wrote:
> On Mar 7, 2007, at 11:21 AM, Tobias Burnus wrote:
> >Using "#include " with e.g. sizeof(int_fast8_t) does not  
> >work with cross compilations.
> 
> Sounds like a bug?  When I try it on my compiler, it works just fine  
> natively and with cross compilations.   I'd file a bug report.  If it  
> is an OS bug, it can be fixed by fixincludes.

He's talking about finding the target's int_fast8_t in the frontend.
That's another issue entirely.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Question for removing trailing whitespaces (not vertical tab) from source

2007-03-13 Thread Daniel Jacobowitz
On Tue, Mar 13, 2007 at 03:02:44PM -, Dave Korn wrote:
>   Can you explain that value?  It's just that 1) I see vast acres and acres of
> code where the tabstop size is two spaces 2) the coding standard doesn't seem
> to /demand/ a specific tab size and 3) if we use 8-space TABs with the kind of
> depths of nesting the gcc code often contains we're going to exceed the
> 80-column line length limit just on the leading indentation alone pretty
> often

GCC indents with tabs replacing eight leading spaces but an indentation
depth of two spaces.  I don't know where your acres and acres are,
but they aren't in most GNU software.  This is, unsurprisingly, how
emacs behaves.

Personally I think that regardless of your indentation preferences,
using anything besides eight column tab stops for \t is silly; that's
what "cat" is going to use.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Updating libtool in GCC and srctree

2007-03-13 Thread Daniel Jacobowitz
On Mon, Mar 12, 2007 at 04:03:52PM -0700, Steve Ellcey wrote:
> configure:15448: error: possibly undefined macro: AM_PROG_GCJdnl

Where'd that come from?  Wherever it is, it's a bug.  Maybe someone
checked in a typo to the configure file.  "dnl" is a comment start
token in autoconf (that's a very rough approximation of the situation).

> I am not sure why I get this, nothing else seems to be requiring
> m4_pattern_allow.  If I don't use any -I options on aclocal it works and
> then I get a different error from autoconf (about TL_AC_GXX_INCLUDE_DIR
> being possibly undefined).  I think I want the -I options though.

Yes, you always want to match ACLOCAL_AMFLAGS from Makefile.am.

-- 
Daniel Jacobowitz
CodeSourcery


Re: PATCH: make_relative_prefix oddity

2007-03-13 Thread Daniel Jacobowitz
On Mon, Mar 12, 2007 at 10:47:28PM -0700, Mark Mitchell wrote:
> It treats only "/opt" as a common component of the two paths, rathe
> than "/opt/foo".  If you use "/opt/foo/" (instead of "/opt/foo") for
> the last argument, the answer is as I expected.  This seems odd to me;
> is it the intended behavior?
> 
> The patch below (which is against an older version of libiberty, and
> might need updating) fixes it.  Assuming you agree that this is a bug,
> would this patch (with updating and testing) be OK?

I believe that at the time your patch was first written, we decided to
fix this in the driver instead and leave make_relative_prefix
unchanged:

2006-04-28  Joseph S. Myers  <[EMAIL PROTECTED]>

* gcc.c (process_command): Add program name to GCC_EXEC_PREFIX
    value before passing to make_relative_prefix.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Building without bootstrapping

2007-03-19 Thread Daniel Jacobowitz
On Mon, Mar 19, 2007 at 05:25:37AM -0700, Karthikeyan M wrote:
> Thanks for the information.
> So, if I want to debug a bug in the cc1 code that causes target
> library build to fail -
> should I just use the cc1 that is generated in /gcc/  ?

Yes.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Google SoC Project Proposal: Better Uninitialized Warnings

2007-03-19 Thread Daniel Jacobowitz
On Mon, Mar 19, 2007 at 01:49:55PM -0400, Andrew MacLeod wrote:
> Perhaps this ought to be looked at again with some seriousness.

I think this is an idea whose time has either come, or will shortly.
GCC's -O0 is much more extreme than that of other compilers I've used.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Building mainline and 4.2 on Debian/amd64

2007-03-19 Thread Daniel Jacobowitz
On Mon, Mar 19, 2007 at 06:05:05PM +, Andrew Haley wrote:
> Will that work?  Unless there's some more configury I don't
> understand, they'll still end up with libraries in /lib64 rather than
> /lib.

It does work.  You have to do a bit more fiddling if you want to use
'make install' into a system location, but that's about it.  And
usually one shouldn't do that anyway.

There's /lib64 -> lib and /usr/lib64 -> lib symlinks, which help out.

-- 
Daniel Jacobowitz
CodeSourcery


Re: We're out of tree codes; now what?

2007-03-21 Thread Daniel Jacobowitz
On Wed, Mar 21, 2007 at 02:39:13PM -0400, Doug Gregor wrote:
> I suspect we would see a small increase in memory usage, because
> subcoded types would have to allocate some memory for
> TYPE_LANG_SPECIFIC to point at (it'll be only 4 bytes in most cases).

Well, that's not strictly necessary if you've got nothing but a type
code in it.  Have a couple of constant TYPE_LANG_SPECIFIC instances
in rodata :-)

Which is less useful if you want to move things out of the common
tree, of course.

-- 
Daniel Jacobowitz
CodeSourcery


Re: --disable-multilib broken on x86_64

2007-03-24 Thread Daniel Jacobowitz
On Sat, Mar 24, 2007 at 11:04:12PM +, Martin Michlmayr wrote:
> * Martin Michlmayr <[EMAIL PROTECTED]> [2007-03-24 22:25]:
> > This can be fixed by making sure the canonical target is used in
> > configure.ac so the check for the target will actually work, as below.
> > OK to commit?
> 
> Actually, I should mention that I haven't fully bootstrapped GCC with
> this change (although it fixes the build failure I saw before).
> libgcc/configure.ac also uses $target for something else so I'm not
> sure it's okay to canonicalize it.  But at least the patch shows the
> problem and a possible solution, so maybe you (or someone who
> understsands the build scripts) can fully test it.

libgcc should not use AC_CANONICAL_TARGET; --target doesn't mean
anything to a target library.  I'm not sure about libdecnumber - it
probably shouldn't be sensitive to $target either.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Linking shared libs against shared libs

2007-03-25 Thread Daniel Jacobowitz
On Sun, Mar 25, 2007 at 07:18:16PM +0200, Oliver Lange wrote:
> I'm trying to link a shared library against a shared library,
> using gcc/ld on Linux and with code like this:

This is really more of a linker question.  Followups to
[EMAIL PROTECTED], please.

> Compiling the sourcecode above like this:

>   gcc test.c -o test.so -shared -fPIC [-s]

> The problem is that i'd expect gcc/ld to abort with an error,
> but it just 'successfully' links something.

> Am i missing something? How can ld link against a
> definitely unknown function?

See the linker manual for "-z defs".

-- 
Daniel Jacobowitz
CodeSourcery


Re: nested backticks in Makefile

2007-03-27 Thread Daniel Jacobowitz
On Tue, Mar 27, 2007 at 03:01:04PM -0400, DJ Delorie wrote:
> - CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
> + CROSS_SYSTEM_HEADER_DIR='$(shell echo $(gcc_tooldir)/sys-include)'

Don't you need more quotes than that?

-- 
Daniel Jacobowitz
CodeSourcery


Re: nested backticks in Makefile

2007-03-27 Thread Daniel Jacobowitz
On Tue, Mar 27, 2007 at 10:28:33PM -0400, DJ Delorie wrote:
> 
> > On Tue, Mar 27, 2007 at 03:01:04PM -0400, DJ Delorie wrote:
> > > - CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
> > > + CROSS_SYSTEM_HEADER_DIR='$(shell echo $(gcc_tooldir)/sys-include)'
> > 
> > Don't you need more quotes than that?
> 
> I think if we quoted it more, we'd end up passing the backticks along
> instead of processing them, and we'd end up right where we started.

I only meant:

CROSS_SYSTEM_HEADER_DIR='$(shell echo "$(gcc_tooldir)/sys-include")'

-- 
Daniel Jacobowitz
CodeSourcery


Re: nested backticks in Makefile

2007-03-27 Thread Daniel Jacobowitz
On Tue, Mar 27, 2007 at 10:40:10PM -0400, DJ Delorie wrote:
> 
> > I only meant:
> > 
> > CROSS_SYSTEM_HEADER_DIR='$(shell echo "$(gcc_tooldir)/sys-include")'
> 
> I figured you meant that.  Can you think of an example that would
> benefit from this quoting?

$(gcc_tooldir) starts with $(libsubdir) starts with $(libdir) which
will come from $(prefix), so there's an unquoted $(prefix) there.

../gcc/configure --prefix=/usr/local/"where * am * i" will thus lead
to $(shell echo /usr/local/where * am * i/sys-include), which will
wildcard.

-- 
Daniel Jacobowitz
CodeSourcery


Re: tuples: data structure separation from trees

2007-03-29 Thread Daniel Jacobowitz
On Thu, Mar 29, 2007 at 06:40:30PM -0700, Andrew Pinski wrote:
> On 29 Mar 2007 18:24:56 -0700, Ian Lance Taylor <[EMAIL PROTECTED]> wrote:
> >Why will expressions have location?  It seems to me preferable to save
> >the memory.  After a few optimization passes many of the expressions
> >have no location anyhow.

> And I know from past experiences, that this is really a bug that they
> don't produce expressions with locations.  I remember Daniel Berlin
> was talking about how SRA does the correct thing with respect of
> locations and other passes should really follow that.  We can see how
> out of SSA can produce cases where PHIs would create expressions
> without locations but that is a bug (I cannot find the PR right now
> but Daniel J. filed it).

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

But I'm not convinced that adding locations on more things is a
workable solution to the problem.  I wish someone had sufficient
incentive to sit down and design a proper solution to our degenerating
debug info.

-- 
Daniel Jacobowitz
CodeSourcery


Re: tuples: data structure separation from trees

2007-03-30 Thread Daniel Jacobowitz
On Thu, Mar 29, 2007 at 09:38:02PM -0700, Ian Lance Taylor wrote:
> Provided we keep locations on statements, specifically including
> GIMPLE_MODIFY_EXPR, does it really help us to keep locations on
> expressions within statements in optimized code?  What could the
> debugger do with that information, in principle, that would be
> helpful?

I would worry about any time that two statements are combined and then
later separated, thus losing line information from one of them.  At
the gimple level, that's less likely - in GENERIC or higher, more
likely.  See the PR for a case where the current approach would even
require locations on constants.  And that's obviously infeasible, so...

-- 
Daniel Jacobowitz
CodeSourcery


Re: Variable scope debug info

2007-04-05 Thread Daniel Jacobowitz
On Thu, Apr 05, 2007 at 09:46:18AM -0700, Joe Buck wrote:
> Now, it might turn out that adding additional dwarf records for
> every single declaration won't significantly increase the size
> of the debug information.  But it is a consideration.

FWIW, I would expect that it would not make a significant difference.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Integer overflow in operator new

2007-04-07 Thread Daniel Jacobowitz
On Sat, Apr 07, 2007 at 12:15:10PM +0200, Florian Weimer wrote:
> * Karl Chen:
> 
> > "4 * n", unchecked, is vulnerable to integer overflow.  On IA-32,
> > "new int[0x4001]" becomes equivalent to "new int[1]".  I've
> > verified this on gcc-2.95 through 4.1.  For larger objects the
> > effects are exaggerated; smaller counts are needed to overflow.
> 
> This PR19351, by the way.

Also by the way, it's triggered in the libstdc++ testsuite in at least
one place :-)

I can't remember which test any more, but last month I discovered that
there is a use of operator new[] with a subscript of INT_MAX - 1
(INT_MAX is handled specially).  In general this still works out
to be more memory than can be allocated and the test tests what it
wanted to (bad_alloc).


-- 
Daniel Jacobowitz
CodeSourcery


Re: RFC: GIMPLE tuples. Design and implementation proposal

2007-04-10 Thread Daniel Jacobowitz
On Tue, Apr 10, 2007 at 05:23:55PM -0400, Andrew MacLeod wrote:
> We'd also be able to "linearize" things when we write it out... ie,
> flatten out the linked lists of instruction so they are all continguous
> indexes, tables etc. this would make it compact and when its read in, we
> might even see some cache friendly accesses for a change.

FYI, I did this with PCH once... I never followed it through well
enough to get consistent results from it, but I did get some
remarkable jumps during testing.

-- 
Daniel Jacobowitz
CodeSourcery


Re: libstdc++.dylib linking problem on Darwin

2007-04-12 Thread Daniel Jacobowitz
On Thu, Apr 12, 2007 at 04:43:23PM -0700, Eric Christopher wrote:
> The basic idea is that the darwin code uses slibdir to set the install name 
> of 
> the library - including full path. Yes, this is dumb, but it's the way that 
> darwin does things at the moment. :(

That much is reasonable but...

>   $(MAKE) install DESTDIR=$(gcc_objdir) \
> -   slibdir= libsubdir= MULTIOSDIR=$(MULTIDIR)
> +   slibdir=$(slibdir) libsubdir= MULTIOSDIR=$(MULTIDIR)

I didn't just pull this out of a hat, you know :-)  Where do you think
it's going to install the library if you do that?

SHLIB_INSTALL = \
$(mkinstalldirs) $(DESTDIR)$(slibdir); \
$(INSTALL_DATA) $(SHLIB_SONAME) \
  $(DESTDIR)$(slibdir)/$(SHLIB_SONAME)

-- 
Daniel Jacobowitz
CodeSourcery


Re: A question on gimplifier

2007-04-14 Thread Daniel Jacobowitz
On Sat, Apr 14, 2007 at 11:28:59AM -0700, H. J. Lu wrote:
> __builtin_ia32_vec_set_v2di will be expanded to
> 
>   [(set (match_operand:V2DI 0 "register_operand" "=x")
> (vec_merge:V2DI
>   (vec_duplicate:V2DI
> (match_operand:DI 2 "nonimmediate_operand" "rm"))
>   (match_operand:V2DI 1 "register_operand" "0")
>   (match_operand:SI 3 "const_pow2_1_to_2_operand" "n")))]

That's irrelevant.  You have a function, __builtin_ia32_vec_set_v2di,
which you didn't show the type of - but there's probably nothing in
the C builtin decl that says it modifies its arguments.  If the RTL
says that it clobbers its first input, then the RTL register allocator
is responsible for handling that.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Builtin functions?

2007-04-16 Thread Daniel Jacobowitz
On Mon, Apr 16, 2007 at 05:04:05PM +0100, Paulo J. Matos wrote:
> _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
> [operator<<]... SUCCESSFUL

> Well, this is definitely builtin but DECL_BUILT_IN == 0, which means
> that when I do FOR_EACH_BB_FN, I'm getting a segmentation fault.
> 
> I wonder where my wrong assumption is. Any suggestions?

What do you mean, it's built in?  It comes from a source file, so
almost by definition it isn't.

-- 
Daniel Jacobowitz
CodeSourcery


Re: Builtin functions?

2007-04-16 Thread &#x27;Daniel Jacobowitz'
On Mon, Apr 16, 2007 at 05:51:17PM +0100, Dave Korn wrote:
>   Perhaps Paulo wants to know if the definition originated in a system header
> file?

Yes, this is more likely to be useful.

-- 
Daniel Jacobowitz
CodeSourcery


Re: GCC 4.1 Projects

2005-02-27 Thread Daniel Jacobowitz
On Sun, Feb 27, 2005 at 02:57:05PM -0800, Mark Mitchell wrote:
> Nathanael Nerode wrote:
> >The libada-gnattools-branch suffers severely from having to be maintained
> >in parallel with mainline (since it's a rearrangment of existing code).
> >Another two months of waiting will necessitate many hours of totally
> >unneccessary work on my part.
> 
> The same is true for everyone who has to wait to check in a patch. 
> Conversely, checking something in can cause work for lots of other 
> people if things go wrong.
> 
> >Although you have listed it as "stage 2", I wish to commit the finished
> >portion as soon as possible during stage 1.  I have maintainership 
> >authority
> >to do so.  This will not interfere in any way with *any* of the projects
> >approved for stage 1, since it is in a disjoint section of code.  
> 
> If it breaks bootstrap, it will definitely interfere.  If it causes 
> patch conflicts with other changes it will also interfere.  And if it 
> doesn't cause any patch conflicts, then it probably won't be very hard 
> to maintain on a branch.

Nathanael said it did not interfere with any of the other _projects_,
not that it would be disjoint from all Stage 1 _patches_.

And just because it would not be "very hard" to maintain on a branch
doesn't mean he should have to do it.  You maintain branches all the
time, Mark; you know it's not a piece of cake.

> > Accordingly, I plan to do so unless I am told not to.
> 
> I would certainly prefer that you hold off until Stage 2, as indicated 
> by the documented I posted.

I think that you need to be a little more specific when asking a
maintainer to hold off on committing a patch that he has authority to
commit, desire to commit, and has been maintaining separately - out of
deference to the 4.0 schedule - for many months.  He would have been
well within his rights to not submit a project proposal at all, and
just check it in.  I'm sure many larger patches will go in during Stage
1 without any coordination.

Could you explain what benefits from waiting?  None of the other large,
scheduled changes from 4.1 benefit from pushing this back. The only
thing that it saves is one possible cause of broken bootstraps; you may
as well ask no one to check in large patches, then.  I'm sure plenty of
people less careful than Nathanael will break bootstrap in the next few
months.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: GCC 4.1 Projects

2005-02-27 Thread Daniel Jacobowitz
On Sun, Feb 27, 2005 at 03:56:26PM -0800, Mark Mitchell wrote:
> Daniel Jacobowitz wrote:
> >On Sun, Feb 27, 2005 at 02:57:05PM -0800, Mark Mitchell wrote:
> 
> >Nathanael said it did not interfere with any of the other _projects_,
> >not that it would be disjoint from all Stage 1 _patches_.
> 
> Fair point.
> 
> >>I would certainly prefer that you hold off until Stage 2, as indicated 
> >>by the documented I posted.
> > 
> >Could you explain what benefits from waiting?  None of the other large,
> 
> The primary benefit is just reduced risk, as you suggest.
> 
> The Stage 1 schedule looks full to me, and I'd like to see those patches 
> go in soon so that we can start shaking out the inevitable problems. 
> I'm much less worried about the long-term impact of Nathanael's patch; 
> if it breaks something, it will get fixed, and then that will be that. 
> But, that brief breakage might make things difficult for people putting 
> in things during Stage 1, or compound the problem of having an unstable 
> mainline.

I think that's not a useful criteria for scheduling decisions.

Let me be more concrete.  Paolo Bonzini posted a patch to move
in-srcdir builds to a host subdirectory.  This is a substantial build
infrastructure change, even though it will not affect a substantial
number of developers - assuming it works correctly. I consider it no
different "in kind" from Nathanael's changes.  He can approve that; so
a system where he can't approve his own tested patch is one in which
you are overriding his judgement.  ISTR that that is exactly what you
did not want to do with this scheduling exercise.

No offense intended to Paolo, of course!  I picked a recent example.
We're less than a week into stage 1, so I don't have much in the way of
samples to draw on.

> I do realize that this is a situation where people who try to be good 
> citizens could get penalized at the expense of people who aren't.  I 
> would hope that maintainers should exercise discipline in that respect; 
> it's my feeling that those who submitted projects (like Nathanael) 
> should have an edge over others who pop up with big patches without 
> prior notice.

s/could/absolutely will/.  It's a remarkably strong incentive not to
submit project proposals for 4.2.

I appreciate your effort here, especially for collecting and organizing
the project proposals.  The sense of "what's coming" is extremely
interesting to me - and hopefully extremely useful to those more active
in GCC development than I am.

I see less value in trying to schedule them in advance.  Organizing
windows around particular projects makes sense, in an ongoing fashion
and as they become available.  Pre-planning the windows assumes a lot
about the state of the tree at the time, esp. other projects that come
up during stage 1 development. And it assumes quite a lot about folks'
estimates of their delivery dates, which I'd take with a grain of salt
and a shot of vodka.

It also encourages projects to be done out of HEAD.  For some of these
that makes sense, but for some of them it doesn't seem to.  And
projects which are pushed to stage 2 have less chance of breaking the
tree in stage 1, but more chance of remaining broken; for instance,
I would have liked to see top-level bootstrapping switched on ASAP.
We already know that the common cases work, and it's going to take time
to shake out the obscure cases.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: testsuite execution question

2005-02-28 Thread Daniel Jacobowitz
On Mon, Feb 28, 2005 at 04:14:12PM -0800, Janis Johnson wrote:
> > DejaGnu's definition of ${tool}_load has an optional argument for flags
> > to pass to the test program, but none of the procedures in DejaGnu or in
> > gcc/testsuite/* are set up to pass such flags.  It would be fairly
> > straightforward to provide a local version of gfortran_load to intercept
> > calls to the global one, and have it add flags specified with a new test
> > directive to the DejaGnu version of ${tool}_load.  That directive could
> > be something like:
> > 
> >   { dg-program-options options [{ target selector }] }
> > 
> > Would something like this be useful for other languages as well, or is
> > Fortran the only one in GCC that has support to process a program's
> > command line?
> > 
> > I'm willing to implement something like this if it looks worthwhile.
> 
> It's supposed to be possible to drop in replacements to DejaGnu in the
> GCC testsuite; do other test frameworks of interest handle passing
> arguments to the test program in a way that could support this?  (Sorry
> for talking to myself here.)

I don't think that's the concern here - it's more a matter of whether
the target, and DejaGNU, support this.  Lots of embedded targets seem
to have trouble with it.  Take a look at "noargs" in the DejaGNU board
files for a couple of examples, IIRC.  GDB jumps through some hoops to
test this, and gets it wrong in a bunch of places too.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: testsuite execution question

2005-03-01 Thread Daniel Jacobowitz
On Tue, Mar 01, 2005 at 10:29:45AM -0800, Janis Johnson wrote:
> Is command line processing relevant for embedded targets?  (I have no
> idea.)  Tests that pass options to the test program could be skipped
> for embedded targets and for other kinds of testing where it isn't
> reliable.  The dg-program-options directive could warn when it's used
> in an environment for which it's not supported.

Sounds good to me, at least in theory.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: testsuite execution question

2005-03-04 Thread Daniel Jacobowitz
On Fri, Mar 04, 2005 at 04:33:47PM -0800, Janis Johnson wrote:
> On Tue, Mar 01, 2005 at 04:35:54PM -0500, Daniel Jacobowitz wrote:
> > On Tue, Mar 01, 2005 at 10:29:45AM -0800, Janis Johnson wrote:
> > > Is command line processing relevant for embedded targets?  (I have no
> > > idea.)  Tests that pass options to the test program could be skipped
> > > for embedded targets and for other kinds of testing where it isn't
> > > reliable.  The dg-program-options directive could warn when it's used
> > > in an environment for which it's not supported.
> > 
> > Sounds good to me, at least in theory.
> 
> Any ideas on how the testsuite can decide for which targets it supports
> command line arguments?  Would it be reasonable to support them if the
> target is not remote?

Well, remote_load already accepts arguments.  And there's a 'noargs' in
lots of board files.  I don't know how accurate that is.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: request for timings - makedepend

2005-03-07 Thread Daniel Jacobowitz
On Mon, Mar 07, 2005 at 07:56:05PM -0800, Mark Mitchell wrote:
> We do need a story for generated headers.  I'd be happy with explicit 
> dependencies in the Makefiles indicating what source files depend on 
> what generated headers.  We'd still be able to get rid of 99% of the 
> dependencies in our Makefiles, and avoid most of the cases where 
> something either (a) fails to get rebuilt, or (b) gets rebuilt too often.

Except, this is the most frequently reported dependency problem -
missing dependencies on the generated headers lead to parallel build
failure.

I suspect we could get a lot of mileage out of something like libiberty
uses, and declaring the things it can't handle to be bugs...

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: problem with the scheduler in gcc-4.0-20040911

2005-03-08 Thread Daniel Jacobowitz
On Tue, Mar 08, 2005 at 09:38:19PM +0530, Kunal Parmar wrote:
> Hello,
> I have attached the dump after the scheduler. The branch instruction
> is a conditionally executed branch instruction. So it is represented
> as RTL COND_EXEC.

Vladimir was right.  It's an INSN, when it should be a JUMP_INSN.
Your backend is probably using emit_insn when it should be using
emit_jump_insn.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Questions about trampolines

2005-03-13 Thread Daniel Jacobowitz
On Sun, Mar 13, 2005 at 09:24:19PM +0100, Øyvind Harboe wrote:
> Trampolines are strange things... :-)
> 
> - Are nested functions part of the C standard or a GCC extension?
>   I believe the answer is a GCC extension. I have seen evidence,
>   but no proof to this effect.

That is right.

> - AFAICT, the cris target is saving the value of the
>   static chain register in the trampoline. How can that work
>   with recursive functions? Does the cris target PASS or FAIL
>   gcc.dg/trampoline-1.c?
> - Lately e.g. the AMD CPU has added support for making it impossible
>   to execute code on the stack. The town isn't big enough for
>   both stack based trampolines and stack code execution protection. 
>   What happens now? 

Search for PT_GNU_STACK in the list archives.

> - Are trampolines used for anything else but nested functions
>   in C? I believe they are used by Ada.

Nested functions in other languages, presumably.

> - Many backends do not support trampolines. Are trampolines 
>   something that is ultimately being added to the backends?
> - Do (theoretical?) alternatives to trampolines exist? I.e. something
>   that does not generate code runtime.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Merging calls to `abort'

2005-03-14 Thread Daniel Jacobowitz
On Mon, Mar 14, 2005 at 04:49:41PM -0800, Eric Christopher wrote:
> 
> > > Now, I wouldn't object to hacking GCC to avoid cross-jumping calls to
> > > abort.  It's just that I don't think that the common GNU use of abort
> > > serves the users.
> > Agreed.  And as someone suggested, rather than treating abort
> > specially within GCC, I think we'd be better off with a function
> > attribute which prevented cross jumping to any function with
> > the attribute set.
> 
> I think it makes sense to just not crossjump noreturn attribute
> functions if we're going to do this.

I'm inclined to agree.  I also think that we should be making this
change, at least at -O2.

I talked to Mark Mitchell about this briefly this evening.  He pointed
out that __cxa_throw is a noreturn function where crossjumping is often
useful.  So perhaps we do need an attribute, but I'm not sure which way
the default should go.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Profile-directed feedback and remote testing

2005-03-25 Thread Daniel Jacobowitz
On Thu, Mar 24, 2005 at 11:59:55PM -0800, Mark Mitchell wrote:
> When we generate data for feedback, we insert the .gcda name into the 
> object file as an absolute path.  As a result, when we try to do remote 
> testing, we lose, as, in general the remote file system does not have 
> the same file hierarchy as the build system.
> 
> I understand why we generate an asbolute path; we want to make sure that 
> the data ends up there, not in the directory where the user happens to 
> run the program.  So, I intend to disable these tests when $host != 
> $target.  Any objections, or better ideas?

It would be nice if we could preserve the ability to run them - when
your build directory is mounted on the target system at the same path,
the tests will pass.  Perhaps a compiler option, as Gabriel
suggested...

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: PCH and moving gcc binaries after installation

2005-03-30 Thread Daniel Jacobowitz
On Tue, Mar 29, 2005 at 10:37:33PM -0800, Dan Kegel wrote:
> Since I need to handle old versions of gcc, I'm
> going to code up a little program to fix all
> the embedded paths anyway, but I was surprised
> by the paths in the pch file.  Guess I shouldn't
> have been, but now I'm a little less confident
> that this will work.  Has anyone else tried it?

I would guess that they're just debugging information.  The PCH
shouldn't care.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: -fno-common

2005-03-31 Thread Daniel Jacobowitz
On Thu, Mar 31, 2005 at 07:33:53PM +0100, Dave Korn wrote:
>   Is the manual wording just slightly vague here, and both .data and .bss
> are regarded as covered by the phrase "the data section of the object file"?

Yes.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: PCH versus --enable-mapped-location

2005-03-31 Thread Daniel Jacobowitz
On Thu, Mar 31, 2005 at 01:25:45PM -0800, Per Bothner wrote:
> Geoff Keating wrote:
>  >> * Any source_location values handed out before the #include
> >>that restores the gch will become invalid.  They will be re-mapped
> >>to that in the pre-compiled header.  Presumably that's ok - there's
> >>no declartions or expressions in the main file at that point, or
> >>the restore would have failed.  Any declarations that are 
> >>or in the  will presumably be the same either way.
> >
> >
> >Another way of putting this is that source_location values should be in 
> >GCed memory.  I think they all are, certainly all declarations and macro 
> >definitions are.
> 
> I think you're misunderstanding my concern.  The issue is when we're
> processing a .c file normally we generate source_location cookies
> for , , and any tokens until we process the
> #include that restores the pch.  At that point we (need to) restore
> the line number saved in the pch.  Any source_location cookies
> that we've handed out up until then become invalid, because they
> refer to a line_table that has been replaced.  My point is that
> presumably it doesn't matter, since the source_location cookies
> and declarations corresponing to  and 
> should match, when compared with those at pch-generation time.
> The ones that don't match are any source_location cookies for
> tokens in the main file itself.  However, they should just be
> tokens for white space, comments, and the initial #include that
> triggers the pch-restoration, and there should be nothing except
> garbage that use those now-invalid source_locations.

That's exactly what Geoff said.  There are two relevant properties of
GCed memory here:
  - Anything in GCed memory will be saved to the PCH
  - Anything in GCed memory will be overwritten by loading the PCH.

There will be no references left after the PCH is loaded, unless they
were living outside of GC.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Use Bohem's GC for compiler proper in 4.1?

2005-04-01 Thread Daniel Jacobowitz
On Fri, Apr 01, 2005 at 06:48:56PM +0200, Stefan Strasser wrote:
> Andrew Haley schrieb:
> >Sam Lauber writes:
> > > I know that Bohem's GC is used in the Java runtime for GCC.
> > > However, the compiler proper itself can _really_ cramp people's
> > > avalible RAM (for those who don't belive me and have Windows w/
> > > DJGPP, change all the memory controls from `auto' to the highest
> > > value and just try to compile libiberty/regex.c), so my suggestion
> > > is usage of Bohem's GC in the compiler proper itself.
> >
> >Do you have any reason to believe that such a change would reduce
> >memory consumption?
> >
> 
> I have reason to believe that it would increase performance on low 
> memory systems/large translation units: it seems that current gcc gc 
> performs a full memory scan on each collection, right? at least if gcc 
> uses more memory than physically available it spends a _very_ long time 
> swapping during collections.
> boehm gc could help here since it is a generational collector.

There are other ways to solve this problem, including creating a
generational collector using our existing accurate GC.  I've been
working on this on-and-off (mostly off at the moment, though).

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Use Bohem's GC for compiler proper in 4.1?

2005-04-02 Thread Daniel Jacobowitz
On Sat, Apr 02, 2005 at 10:40:35AM -0600, Larry Evans wrote:
> I briefly looked at:
> 
>   Type-Information.html
> 
> from:
> 
>   http://gcc.gnu.org/onlinedocs/gccint-html.tar.gz
> 
> I was wondering why the method described here:
> 
>   http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc_typedh.txt
> 
> was not used instead to create an accurate GC method in the compiler.
> I assume the reason is that using:
> 
>GTY(())
> 
> as described in the .html file was just easier and less error prone
> than Boehm's at the cost of requiring some extra preprocesssing?

They don't have the same design constraints or goals.  For instance,
the GTY machinery can determine the type of an object during tree
walking; it does not need to store the type in memory.  We also reuse
the GTY machinery for precompiled header support; I don't know if we
could get Boehm to do that.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Using inline assembly with specific register indices

2005-04-04 Thread Daniel Jacobowitz
On Tue, Apr 05, 2005 at 07:24:44AM +0300, [EMAIL PROTECTED] wrote:
> Hi guys/ladies,
> 
> I'm currently designing an ISA add-on to the MIPS architecture. My
> intention is to use it (it is an algorithm accelerator actually) as a
> COP2 (coprocessor #2). The corresponding microarchitecture is stable
> (works at register-transfer level, not subject to change). Plus, I
> would be happy NOT TO CHANGE my ISA add-on.
> 
> My problem is that I would like to access specific indices in the data
> register file of COP2, i.e. registers c2r0 to c2r31. This should be
> done in inline assembly or else I'll have to put down probably 2k-3k
> C-lines in assembly :-)
> 
> Is it possible to write down something like this:
> 
> asm("cop2a %0, %1;", :: "r" (cp2rb(i)) : "r" (cp2rb(j)));

If GCC knows about the registers on the coprocessor, then you can use
local register variables for this:
  long c2r0 asm ("c2r0");

If it doesn't, then you should probably not be telling GCC about them.
Assuming i is constant:

  asm volatile ("cop2a c2r" STRINGIFY(i) ", c2r" STRINGIFY(j) );


-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Using inline assembly with specific register indices

2005-04-04 Thread Daniel Jacobowitz
On Tue, Apr 05, 2005 at 07:27:00AM +0300, [EMAIL PROTECTED] wrote:
> I was wondering...
> 
> why not support asm templates THAT ARE NOT string constants??? And I
> mean for static compilation cases only.
> 
> For example:
> 
> asm(instrx $%d, $%d\n",src1,src2 : "=r" (var1) : "r" (var2));
> 
> I assume printf-like formating.

Because it's unnecessary.  See my previous message; you can find many
examples on the Web of how to use CPP to stringify numbers.


-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Obsoleting c4x last minute for 4.0

2005-04-05 Thread Daniel Jacobowitz
On Tue, Apr 05, 2005 at 02:30:47PM -0400, Paul Schlie wrote:
> > Kazu Hirata  wrote:
> > I would like to propose that the c4x port be obsoleted for 4.0.
> > 
> > c4x-*
> > tic4x-*
> >
> >  The primary reason is that the port doesn't build.
> >
> >  Richard Sandiford's recent patch allows us to go further during the
> >  build process, but the port still does not build.
> 
> Although personally believe the port's use of a 32-bit QI mode is odd
> (and should be enabled by GCC to be defined as SI mode without QI/HI modes
>  being required, where correspondingly BITS_PER_UNIT should being presumed
>  to represent just the minimum alignment required by the port not
>  necessarily the width of QI mode which should likely be defined as the
>  width of the target's byte separately), it would still be nice to see GCC
> cleaned to enable the port to build as it stresses the few remaining
> assumptions scattered though out the source which should be eliminated.

This is a bogus reason to preserve the port; it should be preserved iff
it works, is maintained, and is used.  It's failing #1 at least.

If you want these restrictions fixed, presumably you have some interest
in some port that cares about them.  Contribute that port, and maybe a
usable simulator for them, and then people can fix what breaks - and
test it.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: GCC 3.4.3

2005-04-08 Thread Daniel Jacobowitz
On Fri, Apr 08, 2005 at 09:05:17AM -0400, Ray Holme wrote:
> Many thanks to all for the lessons on how NOT to make things you don't
> want.
> 
> After 56 hours teh full make bootstrap finished - make install failed
> miserable as
> install.sh was not where it belonged - so I copied the SRCDIR install.sh
> in and that made the top level installs work, but the sub-sub directories
> were still looking for ../install-sh - so I copied it down another level

FYI, this is already fixed in HEAD and the 3.4 branch.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: GCC 3.4.3

2005-04-08 Thread Daniel Jacobowitz
On Fri, Apr 08, 2005 at 10:13:38AM -0700, Joe Buck wrote:
> On Fri, Apr 08, 2005 at 09:20:47AM -0400, Daniel Jacobowitz wrote:
> > On Fri, Apr 08, 2005 at 09:05:17AM -0400, Ray Holme wrote:
> > > Many thanks to all for the lessons on how NOT to make things you don't
> > > want.
> > > 
> > > After 56 hours teh full make bootstrap finished - make install failed
> > > miserable as
> > > install.sh was not where it belonged - so I copied the SRCDIR install.sh
> > > in and that made the top level installs work, but the sub-sub directories
> > > were still looking for ../install-sh - so I copied it down another level
> > 
> > FYI, this is already fixed in HEAD and the 3.4 branch.
> 
> The same bug is present in binutils 2.15 (and yes, I filed a PR), and I
> wouldn't be surprised if it's in other "Cygnus tree" tools like gdb as
> well.  Don't know if it's been fixed in CVS.

Yes, since the fix was in the top level.  I have already closed at
least two binutils PRs about this as FIXED - searching for product ==
binutils, subject containing install, state containing RESOLVED would
have shown them.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Major bootstrap time regression on March 30

2005-04-08 Thread Daniel Jacobowitz
On Sat, Apr 09, 2005 at 12:35:47AM +0200, Steven Bosscher wrote:
> On Saturday 09 April 2005 00:32, Diego Novillo wrote:
> > On Thu, Apr 07, 2005 at 08:34:01PM -0400, Diego Novillo wrote:
> > > I'm rebooting the machine into the previous kernel right now to
> > > see if it changes things.  Tomorrow's run will use kernel
> > > 2.6.10-1.760_FC3.
> >
> > Well, it seem that the kernel had nothing to do with the problem.
> > Today's bootstrap time was 7,960 seconds.
> 
> My suspect is still the ::bind patch.  Unfortunately you don't
> keep times of libstdc++v3 build times.  Not sure how to check
> this, except maybe rolling back libstdc++ to March 30...

Except that would have shown up in Jim's test...

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: GCC 4.0 Ada Status Report (2005-04-09)

2005-04-09 Thread Daniel Jacobowitz
On Sat, Apr 09, 2005 at 12:18:09PM +0200, Laurent GUERBY wrote:
> Unfortunately this is a real core dump while running the test on my
> machine (glibc-2.3.3-118 SuSE 9.2) at -O2 or -O0, and this does not
> reproduce under GDB, see below. I don't know about valgrind on x86_64,
> is it available?

Nope.  Your best bet would be to turn up ulimit -c and look at a core
dump.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: libiberty configure mysteries

2005-04-10 Thread Daniel Jacobowitz
On Sun, Apr 10, 2005 at 05:02:36PM +0200, Gabriel Dos Reis wrote:
> 
> Hi,
> 
> The following is from libibtery.h
> 
>/* HAVE_DECL_* is a three-state macro: undefined, 0 or 1.  If it is
>   undefined, we haven't run the autoconf check so provide the
>   declaration without arguments.  If it is 0, we checked and failed
>   to find the declaration so provide a fully prototyped one.  If it
>   is 1, we found it so don't provide any declaration at all.  */
> 
> However, that appears to be incorrect because what configure output in
> config.h is not HAVE_DECL_XXX, but HAVE_XXX. Therefore, it appears
> that libiberty would be misdetecting declarations -- it thinks
> something is  missing, whereas in fact it is not.
> 
> Am I missing something here?

Try adding an AC_CHECK_DECLS call for basename.  That will define
HAVE_DECL_BASENAME.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: libiberty configure mysteries

2005-04-10 Thread Daniel Jacobowitz
On Sun, Apr 10, 2005 at 05:52:01PM +0200, Gabriel Dos Reis wrote:
> Daniel Jacobowitz <[EMAIL PROTECTED]> writes:
> 
> | On Sun, Apr 10, 2005 at 05:02:36PM +0200, Gabriel Dos Reis wrote:
> | > 
> | > Hi,
> | > 
> | > The following is from libibtery.h
> | > 
> | >/* HAVE_DECL_* is a three-state macro: undefined, 0 or 1.  If it is
> | >   undefined, we haven't run the autoconf check so provide the
> | >   declaration without arguments.  If it is 0, we checked and failed
> | >   to find the declaration so provide a fully prototyped one.  If it
> | >   is 1, we found it so don't provide any declaration at all.  */
> | > 
> | > However, that appears to be incorrect because what configure output in
> | > config.h is not HAVE_DECL_XXX, but HAVE_XXX. Therefore, it appears
> | > that libiberty would be misdetecting declarations -- it thinks
> | > something is  missing, whereas in fact it is not.
> | > 
> | > Am I missing something here?
> | 
> | Try adding an AC_CHECK_DECLS call for basename.  That will define
> | HAVE_DECL_BASENAME.
> 
> Thanks.  I tried it, but I did not have much success -- configure is
> outputting HAVE_BASENAME instead of HAVE_DECL_BASENAME.

You should have both; did you rerun autoheader?  AC_CHECK_FUNCS will
genereate HAVE_BASENAME.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Getting rid of -fno-unit-at-a-time [Was Re: RFC: Preserving order of functions and top-level asms via cgraph]

2005-04-11 Thread Daniel Jacobowitz
On Mon, Apr 11, 2005 at 10:02:06AM -0700, Daniel Kegel wrote:
> BTW, I hope -fno-unit-at-a-time doesn't go away until at least gcc-4.1.1
> or so... I still lean on that crutch.

A user!  Can you explain why?

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Getting rid of -fno-unit-at-a-time [Was Re: RFC: Preserving order of functions and top-level asms via cgraph]

2005-04-12 Thread Daniel Jacobowitz
On Tue, Apr 12, 2005 at 06:34:29PM +0200, Andi Kleen wrote:
> Daniel Jacobowitz <[EMAIL PROTECTED]> writes:
> 
> > On Mon, Apr 11, 2005 at 10:02:06AM -0700, Daniel Kegel wrote:
> >> BTW, I hope -fno-unit-at-a-time doesn't go away until at least gcc-4.1.1
> >> or so... I still lean on that crutch.
> >
> > A user!  Can you explain why?
> 
> The x86-64 2.4 linux kernel uses it too, because some code relies on 
> the ordering between asm and several functions.
> Other Linux ports might be similarly affected. 2.6 is fixed, but the
> fix is a bit too big to merge into a stable-nearly-dead tree like 2.4.

Thanks.  I was under the impression that 2.4 doesn't build with GCC
HEAD, anyway - I saw some patches pile up and not get applied.

Does 2.6 still use the option?

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: Patches for coldfire v4e

2005-04-13 Thread Daniel Jacobowitz
On Wed, Apr 13, 2005 at 10:10:39AM +0200, Bernardo Innocenti wrote:
> >>What are the changes you need to apply?
> >>
> >>Would plain 68020 code run on v4e processor?  As far
> >>as I can see, m68k-linux isn't a multilib target.
> > 
> > 
> > Problem occurs mainly due to restricted addressing
> > modes in v4e. For ex v4e supports only 16-bit
> > displacements. So all crt* files needs to be build for
> > v4e. Also v4e does not have extended floating point
> > instructions (XF mode) so we may have to modify t-*
> > for fpgnulib.c. 
> 
> So it seems adding coldfire-linux is the only way
> to address this...

Why?  Adding support (if it isn't already there) for something like
--with-arch=coldfire should work just as well.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


  1   2   3   4   5   6   7   >