On Tue, 2026-06-16 at 11:01 +0100, Egas Ribeiro wrote:
> On Mon Jun 15, 2026 at 11:26 PM WEST, David Malcolm wrote:
> > On Mon, 2026-06-15 at 20:26 +0100, Egas Ribeiro wrote:
> > > On Mon Jun 15, 2026 at 5:10 PM WEST, David Malcolm wrote:
> > > > On Sun, 2026-06-14 at 19:45 +0100, Egas Ribeiro wrote:
> > > > > The following test (exception-subclass-2.C) xfails
> > > >
> > > > When you say it "xfails", do you mean that it continues to
> > > > fail, or
> > > > that it is now unexpectedly succeeding?
> > > >
> > > It continues to fail because there doesn't seem to be any output
> > > coming
> > > from the line of the caller function, so there is no output to
> > > catch
> > > from the testsuite.
> >
> > That's weird. Is there any output coming from the
> > __analyzer_dump_path?
> >
> with the following test:
> ```
> #include "../../gcc.dg/analyzer/analyzer-decls.h"
>
> class exception
> {
> };
>
> class io_error : public exception
> {
> };
>
> int __analyzer_inner ()
> {
> try {
> throw io_error();
> } catch (exception &exc) {
> __analyzer_dump_path (); // { dg-message "path" }
> return -1;
> }
> __analyzer_dump_path (); // { dg-bogus "path" }
> return 0;
> }
>
> int test ()
> {
> return __analyzer_inner (); // { dg-message "path" "PR
> analyzer/119697" { xfail *-*-* } }
> }
> ```
> we get:
> ```
> /home/riogu/gcc-dev/source1/gcc/testsuite/g++.dg/analyzer/exception-
> subclass-2.C: In function ‘int __analyzer_inner()’:
> /home/riogu/gcc-dev/source1/gcc/testsuite/g++.dg/analyzer/exception-
> subclass-2.C:16:26: note: path
> 16 | __analyzer_dump_path (); // { dg-message "path" }
> | ~~~~~~~~~~~~~~~~~~~~~^~
> ‘int test()’: events 1-2
> │
> │ 23 | int test ()
> │ | ^~~~
> │ | |
> │ | (1) entry to ‘test’
> │ 24 | {
> │ 25 | return __analyzer_inner (); // { dg-message "path" "PR
> analyzer/119697" { xfail *-*-* } }
> │ | ~~~~~~~~~~~~~~~~~~~
> │ | |
> │ | (2) calling ‘__analyzer_inner’
> from ‘test’
> │
> └──> ‘int __analyzer_inner()’: events 3-6
> │
> │ 11 | int __analyzer_inner ()
> │ | ^~~~~~~~~~~~~~~~
> │ | |
> │ | (3) entry to ‘__analyzer_inner’
> │......
> │ 14 | throw io_error();
> │ | ~
> │ | |
> │ | (4) throwing exception of type
> ‘io_error’ here...
> │ 15 | } catch (exception &exc) {
> │ | ~~~
> │ | |
> │ | (5) ...catching exception
> of type ‘io_error’ here
> │ 16 | __analyzer_dump_path (); // { dg-message
> "path" }
> │ | ~~~~~~~~~~~~~~~~~~~~~~~
> │ | |
> │ | (6) ⚠️ here
> │
> ```
> Maybe I missunderstood how the analyzer is meant to work when it
> comes
> to dumps, but I would expect the dump to not show up on the line:
> ```
> return __analyzer_inner (); // { dg-message "path" "PR
> analyzer/119697" { xfail *-*-* } }
> ```
> at all. There isn't really anything to dump, is there?
You are correct. I don't know what I was thinking. Let's lose that
xfailed dg-message.
> Maybe we would
> want to do __analyzer_eval (__analyzer_inner () == -1)?
That sounds like a good idea.
> Or does the
> analyzer somehow dump something from the call? Let me know how it is
> meant to work here.
>
> > > but only now we do the calls interprocedurally. if thats OK then
> > > I'll
> > > include the added __analyzer_dump_path in a new version of the
> > > patch,
> > > otherwise maybe the test is redundant.
> >
> > I think the fact that it's interprocedural is probably enough for
> > it to
> > be worth keeping the test.
> >
> Ok.
>
> > > Should I submit a patch later with the fixed docs or do you want
> > > to
> > > do
> > > that? I don't have commit access so someone would have to push it
> > > for
> > > me.
> >
> > Please submit a patch.
> >
> Ok.
Thanks
Dave