gcc-2.95.3 April 12 incomplete C++ thunks patch breaks Linux/ia32
Franz Sirl
Franz.Sirl-kernel@lauterbach.com
Mon May 22 07:27:00 GMT 2000
At 18:30 19.05.00, H . J . Lu wrote:
>On Fri, May 19, 2000 at 12:00:07PM +0200, Franz Sirl wrote:
> > At 23:04 18.05.00, Martin v. Loewis wrote:
> > > > Even with this patch applied there's still a regression on
> > > > powerpc-linux-gnu if you run the C++ testsuite with -O2. Does it really
> > > > work for you on x86?
> > >
> > >I'm quite certain that the behaviour of these patches should not
> > >change under optimization; so any problems you see are likely
> > >unrelated.
> >
> > I certainly does change behaviour for me and patchwise this relates to
> > current CVS+HJ's patch, if I use the sources before this went into CVS,
> all
> > is fine with -O2. So, before going on a wild bug hunt in an compiler area
> > I'm not really familiar with, I would like to know if this is a platform
> > independent bug. It would be very kind if someone could run the C++
> > testsuite with -O2 and assure me that everything is OK on x86.
> >
>
>There is the difference between without -O2 and with -O2 for the
>patched 2.95 branch. As you can see, there are more C failures also.
>I didn't check gcc 2.95.2. I agree with Martin. I don't think his
>patch introduces any new optimization bugs. But it may trigger some
>existing bugs.
I see nearly the same FAIL's on PPC, but I don't get any C regressions,
only C++. The important C++ failures are the g++.mike/* failing execution
tests I believe, the rest is "normal" for -O2. You can nicely switch
between a non-failing and a failing testcase with "-O2 -fvtable-thunks=1"
and "-O2 -fvtable-thunks=2" :-). The produced .rtl is partly quite different...
Martin, can you look at one of the testcases and give a hint on what might
go wrong? From what I've seen (eg. p3708.C), it has something to do with
delete (destructors?).
Franz.
>H.J.
>----
>--- /tmp/2 Fri May 19 09:24:32 2000
>+++ /tmp/1 Fri May 19 09:24:26 2000
>@@ -29,12 +29,30 @@ FAIL: g++.gb/sig28.C (test for excess er
> FAIL: g++.gb/sig29.C (test for excess errors)
> FAIL: g++.gb/sig30.C (test for excess errors)
> FAIL: g++.gb/sig31.C (test for excess errors)
>+FAIL: g++.mike/dyncast5.C Execution test
>+FAIL: g++.mike/mi1.C Execution test
>+FAIL: g++.mike/offset1.C Execution test
>+FAIL: g++.mike/p16146.C Execution test
>+FAIL: g++.mike/p3139.C Execution test
>+FAIL: g++.mike/p3708.C Execution test
>+FAIL: g++.mike/p3708a.C Execution test
>+FAIL: g++.mike/p3708b.C Execution test
>+FAIL: g++.mike/p4736c.C Execution test
>+FAIL: g++.mike/virt2.C Execution test
>+FAIL: g++.mike/virt5.C Execution test
>+FAIL: g++.other/local1.C (test for excess errors)
>+FAIL: g++.pt/instantiate4.C (test for excess errors)
> FAIL: g++.robertl/eb131.C candidate (test for errors, line 13)
>+FAIL: g++.robertl/eb46.C Execution test
>+FAIL: gcc.c-torture/execute/loop-2b.c execution, -O0
>+FAIL: gcc.c-torture/execute/loop-2b.c execution, -O1
> FAIL: gcc.c-torture/execute/loop-2b.c execution, -O2
> FAIL: gcc.c-torture/execute/loop-2b.c execution, -O3 -fomit-frame-pointer
> FAIL: gcc.c-torture/execute/loop-2b.c execution, -O3
> -fomit-frame-pointer -funroll-all-loops -finline-functions
> FAIL: gcc.c-torture/execute/loop-2b.c execution, -O3
> -fomit-frame-pointer -funroll-loops
> FAIL: gcc.c-torture/execute/loop-2b.c execution, -O3 -g
>+FAIL: gcc.c-torture/execute/loop-2b.c execution, -Os
>+FAIL: gcc.c-torture/noncompile/971104-1.c
> FAIL: gcc.dg/990119-1.c execution test
> FAIL: gcc.dg/cast-qual-1.c discarding `const' warning (test for bogus
> messages, line 11)
> FAIL: gcc.dg/cast-qual-1.c discarding `const' warning (test for
> warnings, line 17)
More information about the Gcc-bugs
mailing list