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?

Marek

Reply via email to