> > actually allocated to the thing.
> 
> ... and only if ENABLE_TREE_CHECKING enabled (which by default is off, imho)

Uh, no it's not off by default, unless you are on a release branch or
configuring with --disable-checking.

On development builds, tree checking is on by default.

> There is no way in C to tell the number of args to vararg function. 
> So build_* stuff is doing its best already.
> 
> >> I guess that sort of assertions need at least a comment or gcc_assert().
> > My suggestion would be to simply add some gcc_asserts that we don't ever 
> > get 
> > ARRAY_REF there :)
> 
> That's exactly my point. If such bad init happens, it will be 
> difficult to spot (unless you doing pch).
> How about:
> *** cp/typeck.c    Wed Mar  8 18:55:49 2006
> --- cp/typeck.c.new        Wed Apr 19 23:28:15 2006
> *************** build_x_binary_op (enum tree_code code, 
> *** 2697,2702 ****
> --- 2697,2703 ----
> 
>      if (processing_template_decl)
>        {
> +       gcc_assert (TREE_CODE_CLASS (code) == tcc_binary);
>          if (type_dependent_expression_p (arg1)
>              || type_dependent_expression_p (arg2))
>            return build_min_nt (code, arg1, arg2);
> 
This is fine by me, but you need mark or another C++ fe approval.

I'd suggest writing up a changelog, and submitting a new email with a
subject like "[PATCH] Add assert to cp/typeck.c build_x_binary_op" to
try to grab a C++ person's attention.
Or just copy one of the listed C++ maintainers on the email :)


Reply via email to