From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Martin v. Loewis" To: silly@redhat.com Cc: egcs-bugs@egcs.cygnus.com Subject: Re: bug report Date: Mon, 02 Aug 1999 01:50:00 -0000 Message-id: <199908020845.KAA00812@mira.isdn.cs.tu-berlin.de> References: X-SW-Source: 1999-08/msg00039.html List-Id: > I was trying to cmpile qt-2.0.1 Thanks for your message. Did you mean to report a bug? Regards, Martin >>From martin@mira.isdn.cs.tu-berlin.de Mon Aug 02 01:50:00 1999 From: "Martin v. Loewis" To: kevinatk@home.com Cc: egcs-bugs@egcs.cygnus.com Subject: gcc 2.95 forgets typedefs (Was: Improving C++ error messages) Date: Mon, 02 Aug 1999 01:50:00 -0000 Message-id: <199908020843.KAA00805@mira.isdn.cs.tu-berlin.de> References: <37A517F4.482366F0@home.com> <199908020544.HAA00576@mira.isdn.cs.tu-berlin.de> <37A53BAE.2F4D28A4@home.com> X-SW-Source: 1999-08/msg00040.html Content-length: 651 > > g++ already uses the typedefs to shorten names of template > > instantiations. I don't know why it does not work in your > > case. Perhaps the typedef names where not used in the instantiations? > > Could you pleace elaborate here.... I thought I could. Consider template class X{}; typedef X Xi; void foo(Xi u) { u.foo(); } egcs 1.1.2 says a.cc: In function `void foo(class Xi)': a.cc:13: no matching function for call to `Xi::foo ()' (i.e. using the typedef). gcc 2.95 reports a.cc: In function `void foo(X)': a.cc:8: no matching function for call to `X::foo ()' This looks like a bug to me. Regards, Martin >>From law@cygnus.com Mon Aug 02 01:51:00 1999 From: Jeffrey A Law To: "Philippe De Muyter" Cc: gcc-bugs@egcs.cygnus.com Subject: Re: gcc-2.95 `switch' handling / bootstrap failure Date: Mon, 02 Aug 1999 01:51:00 -0000 Message-id: <32634.933583714@upchuck.cygnus.com> References: <199907192200.AAA29506@mail.macqel.be> X-SW-Source: 1999-08/msg00041.html Content-length: 1480 In message <199907192200.AAA29506@mail.macqel.be>you write: > Since years, and up to egcs-1.1.2 included, switches were compiled on > m68k-motorola-sysv as follows. > > mov.w 12(%pc,%d0.l*2),%d0 ;# 1102 movhi+1 > jmp 8(%pc,%d0.w) ;# 1104 tablejump+2 > swbeg &72 > L%L244: > short L%L191-L%L244 > ... > > Note that there is no instruction between the table fetch and the jump, > and that the offsets are given as constants in the `mov' and `jmp' instruct > ions. > > Now with gcc-2.95, there are sometimes intervening instructions as follows > : > > mov.w 12(%pc,%d0.l*2),%d0 ;# 1102 movhi+1 > mov.l %d3,%d5 ;# 1363 movsi+1/1 <<<<<<< > addq.l &1,%d5 ;# 1288 *addsi3_internal/4 <<<<<<< > jmp 8(%pc,%d0.w) ;# 1104 tablejump+2 > even > swbeg &72 > L%L244: > short L%L191-L%L244 > ... > > Of course, this prevents gcc-2.95 to bootstrap on m68k-motorola-sysv, > because the native assembler can't cope with the solutions involving the > table address label in the `mov' instruction. > > Does someone know why this has changed and how this could be fixed (perhaps > with an appropriate target macro) ? I doubt this was an intentional change. Use the debugging dumps to find out where insns 1288 and 1104 were first introduced. That should tell you what pass is messing things up. jeffv