Re: Obsoleting IRIX < 6.5, Solaris 7, and Tru64 UNIX < V5.1

2010-01-30 Thread Richard Sandiford
Rainer Orth  writes:
> * IRIX before 6.5:
>
> ** IRIX 5.3 entered retired mode by the end of 1998.  Patches are no
>longer available from support.sgi.com, and a full bootstrap and test
>cycle takes 8 1/2 days on the machines I have available, even without
>java/libgcj. 
>
> ** IRIX 6.2 entered retired mode by 01/2003 and patches aren't available
>either.  I don't have any machine available running that version.
>
> ** IRIX 6.3 and 6.4 were only ever released for specific hardware.
>
> ** With a few exceptions, all machines supported by IRIX 6.[2-4] are
>supported by IRIX 6.5, too (at least until 6.5.22).

Sounds like a good plan ;)

> ** I also consider obsoleting support for the O32 ABI: the SGI linker used
>is different from the N32/N64 ld, and has repeatedly caused problems
>which couldn't be resolved even when SGI still had full IRIX
>support.  Also, the ISO C99 support in libc is only available for the
>N32 and N64 ABIs.

Yeah, that's a difficult one.  On the one hand, I can see that it
doesn't make sense to support an ABI that was there for compatibility
with IRIX 5 and earlier (which we're declaring obselete).  On the other,
I think o32 worked better with the GNU linker than it did with the
SGI linker.  E.g. I remember hitting GOT overflow problems with the
SGI o32 linker (which didn't support multiple GOTs) that were solved
by using the GNU linker.

But that was a long time ago (binutils 2.15?) and I don't know how
well it works now.  And I still can't see any reason why IRIX 6.5
users would prefer o32 over n32.  I certainly don't object to
removing o32 support from the IRIX port.

Richard


gcc version 4.4.3 (GCC)

2010-01-30 Thread Wolfgang Griech
config.guess:
i686-pc-linux-gnu

gcc --v:
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ./configure
Thread model: posix
gcc version 4.4.3 (GCC)

packages:
gcc-4.4.3.tar.bz2
gcc-core-4.4.3.tar.bz2
gcc-g++-4.4.3.tar.bz2

linux distribution:
Ubuntu 8.04.4 LTS \n \l

kernel version:
Linux HDHN2432 2.6.24-26-generic #1 SMP Tue Dec 1 18:37:31 UTC 2009
i686 GNU/Linux

glibc version:
Desired=Unknown/Install/
Remove/Purge/Hold
| Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name   Version    Description
+++-==-==-===
ii  libc6  2.7-10ubuntu5  GNU C Library: Shared libraries


Re: Obsoleting IRIX < 6.5, Solaris 7, and Tru64 UNIX < V5.1

2010-01-30 Thread Ian Lance Taylor
Richard Sandiford  writes:

>> ** I also consider obsoleting support for the O32 ABI: the SGI linker used
>>is different from the N32/N64 ld, and has repeatedly caused problems
>>which couldn't be resolved even when SGI still had full IRIX
>>support.  Also, the ISO C99 support in libc is only available for the
>>N32 and N64 ABIs.
>
> Yeah, that's a difficult one.  On the one hand, I can see that it
> doesn't make sense to support an ABI that was there for compatibility
> with IRIX 5 and earlier (which we're declaring obselete).  On the other,
> I think o32 worked better with the GNU linker than it did with the
> SGI linker.  E.g. I remember hitting GOT overflow problems with the
> SGI o32 linker (which didn't support multiple GOTs) that were solved
> by using the GNU linker.
>
> But that was a long time ago (binutils 2.15?) and I don't know how
> well it works now.  And I still can't see any reason why IRIX 6.5
> users would prefer o32 over n32.  I certainly don't object to
> removing o32 support from the IRIX port.

I agree with removing support for o32 from the Irix port.

However, it would not surprise me to discover that there are embedded
systems out there still using o32, with assembly functions which
expect the o32 calling convention.  I would be cautious about removing
support for o32 entirely.

Ian


Re: Obsoleting IRIX < 6.5, Solaris 7, and Tru64 UNIX < V5.1

2010-01-30 Thread Richard Guenther
On Sat, Jan 30, 2010 at 4:28 PM, Ian Lance Taylor  wrote:
> Richard Sandiford  writes:
>
>>> ** I also consider obsoleting support for the O32 ABI: the SGI linker used
>>>    is different from the N32/N64 ld, and has repeatedly caused problems
>>>    which couldn't be resolved even when SGI still had full IRIX
>>>    support.  Also, the ISO C99 support in libc is only available for the
>>>    N32 and N64 ABIs.
>>
>> Yeah, that's a difficult one.  On the one hand, I can see that it
>> doesn't make sense to support an ABI that was there for compatibility
>> with IRIX 5 and earlier (which we're declaring obselete).  On the other,
>> I think o32 worked better with the GNU linker than it did with the
>> SGI linker.  E.g. I remember hitting GOT overflow problems with the
>> SGI o32 linker (which didn't support multiple GOTs) that were solved
>> by using the GNU linker.
>>
>> But that was a long time ago (binutils 2.15?) and I don't know how
>> well it works now.  And I still can't see any reason why IRIX 6.5
>> users would prefer o32 over n32.  I certainly don't object to
>> removing o32 support from the IRIX port.
>
> I agree with removing support for o32 from the Irix port.
>
> However, it would not surprise me to discover that there are embedded
> systems out there still using o32, with assembly functions which
> expect the o32 calling convention.  I would be cautious about removing
> support for o32 entirely.

I wouldn't be surprised if they're stuck with using GCC 3.x either ;)

Richard.


Re: Obsoleting IRIX < 6.5, Solaris 7, and Tru64 UNIX < V5.1

2010-01-30 Thread Daniel Jacobowitz
On Sat, Jan 30, 2010 at 07:28:01AM -0800, Ian Lance Taylor wrote:
> However, it would not surprise me to discover that there are embedded
> systems out there still using o32, with assembly functions which
> expect the o32 calling convention.  I would be cautious about removing
> support for o32 entirely.

I don't think anyone's suggested that.  o32 is the default ABI for
32-bit MIPS GNU/Linux targets which are still in wide use.

-- 
Daniel Jacobowitz
CodeSourcery


Question about reworking internals manual

2010-01-30 Thread Jerry Quinn
Hi, folks.

I'm looking at reworking the sections on trees in the internals manual
and had a question about how to proceed.  Right now, the information is
spread between the GENERIC chapter and Trees chapter.  The Trees chapter
interleaves a lot of C and C++-specific info in with GENERIC info.

What I'd like to do is the following:

1) Make GENERIC the chapter that talks about the front end
representation.

2) Extract those portions of Trees that really talk about GENERIC (a
large part of it) and integrate that into the GENERIC chapter

3) Make the remainder part of a section on language-dependent trees

The problem I see is that doing the whole thing at once will make for a
large hard-to-review patch.  But to do it in steps will result in an
inconsistent document until a good part of the work is done.

Any suggestions about the best way to proceed?

Thanks,
Jerry




Register allocation and multi-reg HARD_FRAME_POINTER

2010-01-30 Thread Uros Bizjak

Hello!

The target that I would like to support has 8-bit registers, so for any 
sane compilation, stack pointer, frame pointer and hard frame pointer 
all need to be constructed from at least two registers, to form 16-bit 
register pair {rA, rB}.


The stack pointer is defined as a fixed register, so it is not reachable 
to register allocator.
The frame pointer is actually a fake register (with a regnum above last 
hard register regnum) that eliminates either to SP or HW_FP, so RA 
ignores it.


The problem is with HW_FP. Looking at the register allocator, it seems 
that only HARD_FRAME_POINTER_REGNO is marked as live in the allocator, 
although hard_frame_pointer_rtx shows itself as a HImode register with 
H_F_P_R register number. Since H_F_P_R+1 is marked "empty", RA puts 
various QImode values there, clobbering high part of hard frame pointer.


There is nothing in the documentation that would describe this 
limitation, and I found no solution browsing the web archives. Also, I 
believe that AVR should have the same problems.


Is this a known limitation in the RA? If it is, is there a solution for 
multi-reg [HARD]_FRAME_POINTER?


Thanks,
Uros.


Re: Support for export keyword to use with C++ templates ?

2010-01-30 Thread Paolo Carlini

Hi

I already tried to tell him that upthread.


Sorry about that, last night was tired and didn't follow the whole  
thread.


Anyway, modulo a possible deprecation (I believe M$ through Herb  is  
still pushing for it) I think the slightly more serious side of this  
export thing is something Mark, if I'm not mistaken, said some time  
ago, at the very beginning of the Lto ideas, to the effect that  
probably some infrastructure could be also used to attack the  
implementation of export. Does that make sense to anybody?


Paolo


Re: Question about reworking internals manual

2010-01-30 Thread Ian Lance Taylor
Jerry Quinn  writes:

> I'm looking at reworking the sections on trees in the internals manual
> and had a question about how to proceed.  Right now, the information is
> spread between the GENERIC chapter and Trees chapter.  The Trees chapter
> interleaves a lot of C and C++-specific info in with GENERIC info.
>
> What I'd like to do is the following:
>
> 1) Make GENERIC the chapter that talks about the front end
> representation.
>
> 2) Extract those portions of Trees that really talk about GENERIC (a
> large part of it) and integrate that into the GENERIC chapter
>
> 3) Make the remainder part of a section on language-dependent trees
>
> The problem I see is that doing the whole thing at once will make for a
> large hard-to-review patch.  But to do it in steps will result in an
> inconsistent document until a good part of the work is done.
>
> Any suggestions about the best way to proceed?

Personally, I think a large patch will be acceptable for this kind of
thing.

Of course, most of the compiler uses GIMPLE now.  GIMPLE is yet
another IR, although it does still use GENERIC for things like types
and memory addresses.

Thanks for working on this.

Ian


Re: Register allocation and multi-reg HARD_FRAME_POINTER

2010-01-30 Thread Ian Lance Taylor
Uros Bizjak  writes:

> The target that I would like to support has 8-bit registers, so for
> any sane compilation, stack pointer, frame pointer and hard frame
> pointer all need to be constructed from at least two registers, to
> form 16-bit register pair {rA, rB}.
>
> The stack pointer is defined as a fixed register, so it is not
> reachable to register allocator.
> The frame pointer is actually a fake register (with a regnum above
> last hard register regnum) that eliminates either to SP or HW_FP, so
> RA ignores it.
>
> The problem is with HW_FP. Looking at the register allocator, it seems
> that only HARD_FRAME_POINTER_REGNO is marked as live in the allocator,
> although hard_frame_pointer_rtx shows itself as a HImode register with
> H_F_P_R register number. Since H_F_P_R+1 is marked "empty", RA puts
> various QImode values there, clobbering high part of hard frame
> pointer.
>
> There is nothing in the documentation that would describe this
> limitation, and I found no solution browsing the web archives. Also, I
> believe that AVR should have the same problems.
>
> Is this a known limitation in the RA? If it is, is there a solution
> for multi-reg [HARD]_FRAME_POINTER?

I think the AVR does it by treating the soft frame pointer as a pair
of registers, and eliminating both registers, one to
HARD_FRAME_POINTER_REGNO and the other to HARD_FRAME_POINTER_REGNO+1.
Make the elimination conditions the same, and the compiler should
reliably eliminate either both or neither.

Ian


Re: Support for export keyword to use with C++ templates ?

2010-01-30 Thread Ian Lance Taylor
Paolo Carlini  writes:

> Anyway, modulo a possible deprecation (I believe M$ through Herb  is
> still pushing for it) I think the slightly more serious side of this
> export thing is something Mark, if I'm not mistaken, said some time
> ago, at the very beginning of the Lto ideas, to the effect that
> probably some infrastructure could be also used to attack the
> implementation of export. Does that make sense to anybody?

The LTO infrastructure could probably be somewhat useful to anybody
who wants to tackle export.  However, it will only be somewhat useful.
LTO provides the ability to write out GIMPLE.  But to support export
you need to instead stream out the C++ frontend representation, which
is trees.  In the gcc way, there is overlap between GIMPLE and trees,
but they are not the same thing.  So a bunch more work will still be
required even for the first basic step of export, which is the ability
to write out a parse tree.

Ian


Re: gccgo language contribution accepted

2010-01-30 Thread Mark Wielaard
On Thu, Jan 28, 2010 at 10:03:04AM -0800, Ian Lance Taylor wrote:
> "Joseph S. Myers"  writes:
> > What has been decided about copyright assignment requirements?
> 
> This is the general plan as I understand it.
> 
> I will separate the gcc-specific parts from the rest of the Go
> frontend.  Those gcc-specific parts will be under the GPL and follow
> the usual gcc rules.  The rest will remain under the BSD-style
> license, and will move to a different hosting site (probably at
> code.google.com).  I will regularly merge from that other hosting site
> to the gcc sources, much as we do with classpath and other code today.

Just a note that GNU Classpath as a project is also assigned to the FSF
and hosted at savannah. The original libgcj implementation and the
classpath implementation were merged as projects to have just one code
base that implemented a free java core library with the FSF as guardian.
Code is merged both ways. There might be other code bases which aren't
assigned to the FSF, but are imported into the gcc tree anyway. For
libgcj/classpath this was done because it made sharing of the core
library between other compiler/vm implementations easier, not because
of avoiding copyright assignment.

Cheers,

Mark


Re: Support for export keyword to use with C++ templates ?

2010-01-30 Thread Dodji Seketeli
On Sat, Jan 30, 2010 at 01:47:03AM +0200, Timothy Madden wrote:
> So nobody here wants to try a big thing ? :(

This question strikes me as being not very fair because many GCC people 
are already pretty much involved. Would you fancy giving a hand?

> How long would it take for someone to understand how parsing works in
> g++ ? Or to understand the build system in gcc ?

It depends (amongst other things) on the motivation of said person, I 
guess. Maybe several months? As usual in this kind of things, I guess a 
good approach is to try to scratch your own itches without thinking too 
much about the time it would take, especially for something as big as 
this particular feature you are talking about :-)

Dodji


Re: gccgo language contribution accepted

2010-01-30 Thread Ian Lance Taylor
Mark Wielaard  writes:

> On Thu, Jan 28, 2010 at 10:03:04AM -0800, Ian Lance Taylor wrote:
>> "Joseph S. Myers"  writes:
>> > What has been decided about copyright assignment requirements?
>> 
>> This is the general plan as I understand it.
>> 
>> I will separate the gcc-specific parts from the rest of the Go
>> frontend.  Those gcc-specific parts will be under the GPL and follow
>> the usual gcc rules.  The rest will remain under the BSD-style
>> license, and will move to a different hosting site (probably at
>> code.google.com).  I will regularly merge from that other hosting site
>> to the gcc sources, much as we do with classpath and other code today.
>
> Just a note that GNU Classpath as a project is also assigned to the FSF
> and hosted at savannah. The original libgcj implementation and the
> classpath implementation were merged as projects to have just one code
> base that implemented a free java core library with the FSF as guardian.
> Code is merged both ways. There might be other code bases which aren't
> assigned to the FSF, but are imported into the gcc tree anyway. For
> libgcj/classpath this was done because it made sharing of the core
> library between other compiler/vm implementations easier, not because
> of avoiding copyright assignment.

Thanks.  I didn't mean to imply that the situation with classpath was
identical to that of gccgo, merely that it was another case where
sources are merged from an external site to gcc.gnu.org.  Note that
copyright assignment is not the issue with the gccgo frontend; Google
has a blanket copyright assignment with the FSF, and copyright
assignments will be required for all changes to the gccgo frontend.
The reason for the separation is that gccgo is not under the GPL.

Ian