On Wed, Jul 22, 2026 at 9:31 AM Jakub Jelinek <[email protected]> wrote:
>
> On Wed, Jul 22, 2026 at 09:06:58AM +0200, Richard Biener wrote:
> > That said, I also believe trying to get tree more strongly typed using C++
> > is not going to be an improvement.  That might be the fault of C++ though.
> >
> > Possibly doing sth like
> >
> > extern tree fold_build2_loc (location_t, enum tree_code, tree_type, tree,
> >                              tree CXX_MEM_STAT_INFO);
> >
> > with checking-enabled tree_type expanding to assertion (but otherwise just
> > being a no-op wrapper), and possibly allowing type assertions and/or
> > automatic annotation for static analysis might be an improvement?
>
> Usually something inside of fold_build2_loc actually accesses some
> properties of the type and type checking triggers there.  So, by moving
> that check earlier, all we'd achieve is to assert one or two frames up
> in the callstack.
> With types vs. non-types, there is also the complication what is
> error_mark_node, currently we treat it as both expression and type, but
> with limited usability, TREE_TYPE (error_mark_node) is error_mark_node.

I think I was suggesting to have ERROR_TYPE/error_type_node at some
point.  That would
be a requirement for any of this.  It would also avoid some ice-on-invalid
where type accessors are used on error_mark_node without a prior
check for this case (but possibly only delay those).

Richard.

>
>         Jakub
>

Reply via email to