------- Comment #7 from mark at codesourcery dot com  2005-10-19 20:50 -------
Subject: Re:  [3.4/4.0/4.1 Regression] ICE with  invert conditional
 containing throw

rguenth at gcc dot gnu dot org wrote:
> ------- Comment #6 from rguenth at gcc dot gnu dot org  2005-10-19 20:40 
> -------
> Unfortunately we call into the middle-ends invert_truthvalue right in
> cp/typeck.c:build_unary_op as we build the TRUTH_NOT_EXPR, so at the time we
> reach the gimplifier we already crashed.

In that case, I think we should fix the middle end to handle this case;
it's not a very major change to the semantics of GIMPLE/GENERIC to
handle this case.  (I'm assuming that aren't massive ripple effects
throughout the middle-end...)

In the longer term, the solution of just creating a TRUTH_NOT_EXPR in
the C++ front end might be the right one; all this folding-on-the-fly
stuff is a mistake.  But, it's too risky to try to do that now.  And,
changing the type of the operands to the COND_EXPR in the C++ front-end
before gimplification is just wrong; the language says those operands
have void type.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24439

Reply via email to