------- 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