RFC: Monitoring old PRs, new dg directives

Marek Polacek polacek@redhat.com
Fri Aug 7 14:18:04 GMT 2020


On Fri, Aug 07, 2020 at 09:21:27AM -0400, Nathan Sidwell wrote:
> On 8/6/20 6:55 PM, Marek Polacek wrote:
> > On Thu, Aug 06, 2020 at 10:01:37AM -0400, Nathan Sidwell wrote:
> > > On 8/5/20 7:29 PM, Marek Polacek wrote:
> > > > On Wed, Aug 05, 2020 at 11:03:08AM -0400, Nathan Sidwell wrote:
> > > > > On 8/4/20 8:54 PM, Marek Polacek via Gcc-patches wrote:
> > > > > > On Tue, Aug 04, 2020 at 03:33:23PM -0700, Mike Stump wrote:
> > > > > > > I think the read of the room is that people think it would be generally useful, so let approve the general plan.
> > > > > > 
> > > > > > Cool.
> > > > > > 
> > > > > > > So, now we are down to the fine details.  Please do see just how far you can stretch the existing mechanisms to cover what you need to do.  I think the existing mechanisms should be able to cover it all; but the devil is in the details and those matter.
> > > > > > 
> > > > > > At this point I'm only proposing one new directive, dg-ice.  I think we can't
> > > > > > really do without it.  The other one was a matter of convenience.
> > > > > 
> > > > > I've realized I have a concern.  Grepping (or searching in an editor buffer)
> > > > > the log file for 'internal compiler error' to find actual regressions is a
> > > > > thing I want to still be able to do (perhaps with alternative spelling, I
> > > > > don't care).  I don't want to see the ICEs of tests that are expected to
> > > > > ICE.
> > > > > 
> > > > > I think that means there has to be a positive marker on the unexpected ICEs,
> > > > > rather than lack of an expected marker on them.
> > > > 
> > > > Hmm, by the log file you mean g++.log?  Currently, if you run a dg-ice test,
> > > > and the test still ICEs, the g++.log file (but not the stdout of make
> > > > check-c++!) will have:
> > > > 
> > > > Executing on host: ... xg++ with options ...
> > > > spawn -ignore SIGHUP ... xg++ with options ...
> > > > .../foo.C:14:15: internal compiler error: in poplevel_class, at cp/name-lookup.c:4225
> > > > <backtrace>
> > > > compiler exited with status 1
> > > > XFAIL: g++.dg/foo.C  -std=c++17 (internal compiler error)
> > > > PASS: g++.dg/foo.C  -std=c++17 (test for excess errors)
> > > > 
> > > > Which one of these would you not like to see?
> > > 
> > > Neither of these is solving the issue.  How do I find the ICES that are
> > > unexpected, without tripping over the ICEs that are expected?
> > > 
> > > > Can you give me more details?  Hopefully we'll work something out that doesn't
> > > > break your workflow.
> > > 
> > > sure.
> > > * develop patch
> > > * run testsuite
> > > * observe unexpected ICEs
> > > * load g++.log into editor
> > > * ^sinternal comp
> > > * gets to first unexpected ICE
> > > * debug it.
> > > 
> > > What does '^sinternal comp' become?  As there could be many expected ICEs
> > > it'll be painful to determine whether any particular utterance of 'internal
> > > compiler' is expected or not.
> > 
> > That is a problem I don't know how to deal with.  I know how to pass
> > additional options to the compiler from dejagnu.  I thought maybe I could use
> > -pass-exit-codes, redirect stderr to /dev/null, and check if the exit code is
> > ICE_EXIT_CODE, but there seems to be no way to do that redirection.  So I'm
> > stuck.
> > 
> > Though, you could just grep for '^FAIL.*internal comp', which will find the
> > first unexpected ICE.  Contrary to the expected ICEs, the unexpected ICEs will
> > be shown in 'Excess errors:'.  Won't that work?
> 
> Read what I wrote:
> >> * load g++.log into editor
> >> * ^sinternal comp
> 
> are you telling me not to use an editor for this task?  the search is so one
> can get the command line.  Grepping the log file will not do that.

No, I'm saying that looking for '^FAIL.*internal comp' (in an editor) instead
of just 'internal comp' will get you to the ICEs you care about.  In vim,
'/^FAIL.*in' gets me there.

If that is still too much, we could maybe add a new diagnostic kind, like
DK_EXPECTED_ICE that has different wording than DK_ICE, and have dg-ice
use it via some option/envvar.

> while solveable, this seems to be the equivalent of putting stones in ones
> shoe.  an annoyance one could do without.  I'm sadly not convinced the goal
> is worth it.

If this is an annoyance to people, I'll just go back to my own repo.

Marek



More information about the Gcc-patches mailing list