This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [SH] Introduce treg_set_expr
- From: Oleg Endo <oleg dot endo at t-online dot de>
- To: Kaz Kojima <kkojima at rr dot iij4u dot or dot jp>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 22 Jan 2015 23:46:01 +0100
- Subject: Re: [SH] Introduce treg_set_expr
- Authentication-results: sourceware.org; auth=none
- References: <20150117 dot 224013 dot 482322450 dot kkojima at rr dot iij4u dot or dot jp> <1421583943 dot 2376 dot 19 dot camel at yam-132-YW-E178-FTW> <1421708391 dot 2376 dot 27 dot camel at yam-132-YW-E178-FTW> <20150120 dot 200532 dot 63808742 dot kkojima at rr dot iij4u dot or dot jp> <1421887903 dot 2376 dot 57 dot camel at yam-132-YW-E178-FTW>
On Thu, 2015-01-22 at 01:51 +0100, Oleg Endo wrote:
> On Tue, 2015-01-20 at 20:05 +0900, Kaz Kojima wrote:
> > Oleg Endo <oleg.endo@t-online.de> wrote:
> > > The updated treg_set_expr patch is attached, which should fix the GBR
> > > issues. Tests here OK.
> > > Kaz, could you please try again?
> >
> > New tests that FAIL:
> >
> > libgomp.fortran/udr14.f90 -O3 -g (internal compiler error)
> > libgomp.fortran/udr14.f90 -O3 -g (test for excess errors)
> >
> > Old tests that passed, that have disappeared: (Eeek!)
> >
> > gcc.target/sh/pr49263-1.c scan-assembler-not bclr
> > gcc.target/sh/pr49263-1.c scan-assembler-times extu 1
> > gcc.target/sh/pr49263-2.c scan-assembler-times -129 2
> > gcc.target/sh/pr49263-2.c scan-assembler-times extu 1
>
> That's OK. The patch removes the xfail markers from already committed
> tests.
>
> >
> > For the new ICE, libgomp tests log says:
> >
> > /exp/ldroot/dodes/LOCAL/trunk/libgomp/testsuite/libgomp.fortran/udr14.f90:15:0: internal compiler error: in maybe_record_trace_start, at dwarf2cfi.c:2318
> > 0x8384ad6 maybe_record_trace_start
> > ../../LOCAL/trunk/gcc/dwarf2cfi.c:2318
> > 0x8385023 scan_trace
> > ../../LOCAL/trunk/gcc/dwarf2cfi.c:2496
> > 0x8385b35 create_cfi_notes
> > ../../LOCAL/trunk/gcc/dwarf2cfi.c:2650
> > 0x8385b35 execute_dwarf2_frame
> > ../../LOCAL/trunk/gcc/dwarf2cfi.c:3006
> > 0x8385b35 execute
> > ../../LOCAL/trunk/gcc/dwarf2cfi.c:3486
> > Please submit a full bug report,
> > ...
> >
> > "./f951 udr14.f90 -g -O3 -fopenmp -o xxx.s" can reproduce this ICE.
>
> That's .. ugh..
> Without -g it compiles fine. The resulting code is pretty much the same
> as without the patch. The only thing that combines/splits differently
> are the few comparisons and movrt_negc pattern uses. With the patch the
> magic constant '-1' is not shared that often anymore. This is a known
> issue and small 'regression' of the patch (but a general problem on SH).
> Anyway, this has nothing to do with debug info.
> dwarf2cfi.c's last words are:
>
> Processing trace 45 : start at code_label 723
> saw edge from trace 45 to 46 (via fallthru 0)
>
> and the RTL there looks like this:
>
> (note 3417 3416 3418 (var_location x (nil)) NOTE_INSN_VAR_LOCATION)
> (note 3418 3417 723 (var_location y (nil)) NOTE_INSN_VAR_LOCATION)
> (code_label 723 3418 724 6 "" [1 uses])
> (note 724 723 3569 [bb 54] NOTE_INSN_BASIC_BLOCK)
> (code_label 3569 724 727 103 "" [1 uses])
> (insn 727 3569 3661 (set (reg:SI 147 t)
> (ge:SI (reg:SI 1 r1 [orig:286 D.1466 ] [286])
> (reg:SI 2 r2 [orig:284 D.1466 ] [284]))) udr14.f90:35 15 {cmpgesi_t}
> (nil))
>
> It looks like the SH reorg pass is creating this. The compiled code
> with the patch applied (without -g) also shows some constant pool
> placement differences, which are done by the SH reorg pass.
>
> Increasing the size of define_insn_and_split "movrt_negc" from 2 to 4
> makes the problem go away with the patch.
> Without the patch the ICE can be triggered by increasing the size of
> define_insn_and_split "movrt_negc" from 2 to 3.
>
> I guess this is a latent bug/problem of SH reorg (maybe PR 59189) or the
> dwarf2cfi.c code (maybe PR 64602).
I have created PR 64736 for this issue.
I will install this the patch from
https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01743.html
in 24h if there are no further objections.
Cheers,
Oleg