This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RTL sharing tester (for testing)
- From: Jan Hubicka <jh at suse dot cz>
- To: Diego Novillo <dnovillo at google dot com>
- Cc: Jan Hubicka <jh at suse dot cz>, gcc-patches at gcc dot gnu dot org, Mark Mitchell <mark at codesourcery dot com>
- Date: Wed, 27 Jun 2007 22:50:04 +0200
- Subject: Re: RTL sharing tester (for testing)
- References: <20070626000132.GC995@kam.mff.cuni.cz> <468283E0.3010004@google.com>
> On 6/25/07 8:01 PM, Jan Hubicka wrote:
>
> > With the patch http://gcc.gnu.org/ml/gcc-patches/2007-06/msg01780.html
> > I can get i686 and x86-64 into bootstrapland with different 2 testsuite
> > regressions, both seems to be caused by regmove pass that is fixable by
> > the same infrastructure as introduced by the patch.
>
>
> How expensive is this verification? My inclination is to enable the
Not overly expensive, it is simple pass over RTL chain setting/clearing
the flags. I can get more precise data, but I had timevar for it and
never saw really important percentages (unlike SSA verifier for
instance)
I am just running another round of tests on the mainline after the
fixes. Now i686 is clean, x86-64 didn't complete yet (last time there
was one testsuite regression I have patch for in queue), ia64 has one
failure same as x86-64 had:
gcc.c-torture/execute/loop-3b.c compilation, -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error)
gcc.c-torture/execute/loop-3b.c compilation, -O3 -fomit-frame-pointer -funroll-loops (internal compiler error)
PPC fails on:
/abuild/gcc-test/gcc/libjava/classpath/native/fdlibm/s_expm1.c: In function 'expm1':
/abuild/gcc-test/gcc/libjava/classpath/native/fdlibm/s_expm1.c:228: error: invalid rtl sharing found in the insn
(insn:TI 331 524 604 36 /abuild/gcc-test/gcc/libjava/classpath/native/fdlibm/s_expm1.c:207 (set (reg/v:DF 33 1 [orig:161 x ] [161])
(minus:DF (reg:DF 32 0)
(reg:DF 39 7 [251]))) 200 {*subdf3_fpr} (expr_list:REG_DEAD (reg:DF 39 7 [251])
(expr_list:REG_DEAD (reg:DF 32 0)
(expr_list:REG_DEAD (subreg:DF (reg/v:DI 9 9 [orig:153 sh_u ] [153]) 0)
(expr_list:REG_EQUAL (minus:DF (subreg:DF (reg/v:DI 9 9 [orig:153 sh_u ] [153]) 0)
(const_double:DF 1.0e+0 [0x0.8p+1]))
(nil))))))
/abuild/gcc-test/gcc/libjava/classpath/native/fdlibm/s_expm1.c:228: error: shared rtx
(subreg:DF (reg/v:DI 9 9 [orig:153 sh_u ] [153]) 0)
/abuild/gcc-test/gcc/libjava/classpath/native/fdlibm/s_expm1.c:228: internal compiler error: internal consistency failure
It bootstraps without Java.
PPC64 didn't complette yet.
> sharing verifier in a couple of steps:
>
> 1- Right now, enable it in every pass that doesn't expose bootstrap
> problems. I'm actually willing to live with breakage in the testsuite
> and address it during stages 2 and 3.
The problem with is that the nature of problem is very target specific.
All the remaining problems are either very weird side cases, or target
issues. This is why I am posting the patch so people can test it on
their favorite development platform.
My plan is to debug the PPC failure so all testing targets we have
(i686/x86-64/ia64/ppc/ppc64 are known to bootstrap) and then propose it
for enabling by default.
It is however likely that other targets will expose new problems. Mips
was once brought into bootstrapland in early stage1.
>
> 2- Once the bootstrap problems are fixed, leave the verifier enabled
> everywhere.
>
> But since this will affect stages 2 and 3, I'd like to get Mark's opinion.
Honza