Re: [GSoC] Fix compiler warnings in diagnostics and analyzer - Pre-GSoC Contribution

Zeinab Ayman via Gcc <[email protected]>
Newsgroups gmane.comp.gcc.devel
Message-ID <CABMcrdgGpeLKgDUHfbjH-HBVMvHiLADx5_=khRCjgkQidxWJjA@mail.gmail.com>
Hi Dave,

Thank you for the warm welcome to the community and for clarifying the GSoC
2026 deadlines. While I missed the application window, I am highly
motivated to continue contributing to GCC as an independent contributor!

Regarding your technical questions, I encountered these fatal compilation
errors while building the latest master branch using g++ (GCC) 14.1.0 on a
clean build.

The compiler threw an ambiguity error because there are two declarations
that look identical to it at that scope:
1. `class ana::exploded_cluster` defined in `gcc/analyzer/common.h`
2. `class exploded_cluster` defined right before it in
`gcc/analyzer/engine.cc` at line 3928.

Here is the exact compiler output showing the ambiguity and the subsequent
cascade of override failures:

../../gcc/analyzer/engine.cc:3934:34: error: reference to
‘exploded_cluster’ is ambiguous
 3934 | class supernode_cluster : public exploded_cluster
      |                                  ^~~~~~~~~~~~~~~~
In file included from ../../gcc/analyzer/engine.cc:21:
../../gcc/analyzer/common.h:125:7: note: candidates are: ‘class
ana::exploded_cluster’
  125 | class exploded_cluster;
      |       ^~~~~~~~~~~~~~~~
../../gcc/analyzer/engine.cc:3928:7: note:                 ‘class
exploded_cluster’
 3928 | class exploded_cluster : public cluster<eg_traits>
      |       ^~~~~~~~~~~~~~~~

By explicitly specifying `public ana::exploded_cluster`, the compiler
immediately resolved the correct base class from common.h, and fixing the
`dump_args_t` type mismatch allowed the virtual method overrides to compile
successfully.

I will make sure to update my patch format to include proper ChangeLog
messages in the commit as per the guidelines.

Best regards,
Zeinab Ayman

‫في الاثنين، 18 مايو 2026 في 8:00 م تمت كتابة ما يلي بواسطة ‪David
Malcolm‬‏ <‪[email protected]‬‏>:‬

> On Mon, 2026-05-18 at 19:43 +0300, Zeinab Ayman via Gcc wrote:
> > Hi Jonathan,
> >
> > Thank you for the quick clarification! I apologize for the confusion
> > regarding the GitHub mirror.
> >
> > Since I am new to the GCC contribution workflow, I have generated a
> > proper
> > patch file using git format-patch for the fixes I made in
> > `gcc/analyzer/engine.cc` (resolving the ambiguous exploded_cluster
> > and
> > dump_args_t type mismatches).
> >
> > Here is the inline patch for review:
>
> Hi Zeinab; thanks for the analyzer patch.
>
> BTW, if you're hoping to participate in GSoC 2026 I'm afraid you're too
> late; the deadline for student applications was March 31st.  That said,
> if you still want to contribute to GCC outside of GSoC, you're most
> welcome.  You should read the contributing guidelines on our website.
> In particular, patches should have ChangeLog messages as part of their
> commit message.
>
> What warnings were you seeing on the unpatched version of this code,
> and with which compiler?  What was the ambiguity you saw?  IIRC
> everything here is in the "ana" namespace, so I'm not sure why e.g.
> exploded_cluster would be ambiguous.
>
> Thanks
> Dave
>
>
> >
> > From 66c4502ecc4254060122e212919fbdd4bc7570fd Mon Sep 17 00:00:00
> > 2001
> > From: Zeinab Ayman Elshinnawy <[email protected]>
> > Date: Mon, 18 May 2026 16:35:10 +0300
> > Subject: [PATCH 11/11] analyzer: fix ambiguous exploded_cluster and
> >  dump_args_t type overrides
> >
> > ---
> >  gcc/analyzer/engine.cc | 10 +++++-----
> >  1 file changed, 5 insertions(+), 5 deletions(-)
> >
> > diff --git a/gcc/analyzer/engine.cc b/gcc/analyzer/engine.cc
> > index 907a36af5..de5758341 100644
> > --- a/gcc/analyzer/engine.cc
> > +++ b/gcc/analyzer/engine.cc
> > @@ -3927,14 +3927,14 @@ class exploded_cluster : public
> > cluster<eg_traits>
> >
> >  /* Cluster containing all exploded_node instances for one supernode.
> > */
> >
> > -class supernode_cluster : public exploded_cluster
> > +class supernode_cluster : public ana::exploded_cluster
> >  {
> >  public:
> >    supernode_cluster (const supernode *supernode) : m_supernode
> > (supernode)
> > {}
> >
> >    // TODO: dtor?
> >
> > - void dump_dot (graphviz_out *gv, const dump_args_t &args) const
> > final
> > override
> > + void dump_dot (graphviz_out *gv, const
> > dnode<ana::eg_traits>::dump_args_t
> > &args) const final override
> >    {
> >      gv->println ("subgraph \"cluster_supernode_%i\" {", m_supernode-
> > >m_id);
> >      gv->indent ();
> > @@ -3977,7 +3977,7 @@ private:
> >  /* Cluster containing all supernode_cluster instances for one
> >     (function, call_string) pair. */
> >
> > -class function_call_string_cluster : public exploded_cluster
> > +class function_call_string_cluster : public ana::exploded_cluster
> >  {
> >  public:
> >    function_call_string_cluster (function *fun, const call_string
> > &cs)
> > @@ -3991,7 +3991,7 @@ public:
> >         delete (*iter).second;
> >    }
> >
> > - void dump_dot (graphviz_out *gv, const dump_args_t &args) const
> > final
> > override
> > + void dump_dot (graphviz_out *gv, const
> > dnode<ana::eg_traits>::dump_args_t
> > &args) const final override
> >    {
> >      const char *funcname = function_name (m_fun);
> >
> > @@ -4140,7 +4140,7 @@ public:
> >         delete (*iter).second;
> >    }
> >
> > - void dump_dot (graphviz_out *gv, const dump_args_t &args) const
> > final
> > override
> > + void dump_dot (graphviz_out *gv, const
> > dnode<ana::eg_traits>::dump_args_t
> > &args) const final override
> >    {
> >      int i;
> >      exploded_node *enode;
> > --
> > 2.53.0
> >
> > في الاثنين، ١٨ مايو ٢٠٢٦ ٣:٣٠ م Zeinab Ayman <[email protected]>
> > كتب:
> >
> > > Hello GCC Community and GSoC Mentors,
> > >
> > > My name is Zeinab Ayman, a Computer Engineering student preparing a
> > > proposal for GSoC 2026.
> > >
> > > As part of getting familiar with the GCC codebase and showcasing my
> > > skills, I have worked on fixing a set of compiler warnings across
> > > diagnostics, text-art, and analyzer modules (including -Wformat-
> > > diag,
> > > -Wmaybe-uninitialized, and -Wdelete-non-virtual-dtor).
> > >
> > > Since I am using GitHub to manage my workflow, I have submitted the
> > > patch
> > > as a Pull Request on the mirror repository here:
> > > https://github.com/gcc-mirror/gcc/pull/127
> > >
> > >   You can also check my GitHub profile here:
> > > https://github.com/zeinab304
> > >
> > > I would highly appreciate it if mentors could review these fixes. I
> > > am
> > > looking forward to contributing more and finalizing my GSoC
> > > proposal
> > > document.
> > >
> > > Best regards,
> > > Zeinab Ayman
> > >
> >
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.