--- Comment #12 from cvs-commit at gcc dot gnu dot org 2005-10-20 15:19
---
Subject: Bug 24439
CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED] 2005-10-20 15:19:03
Modified files:
gcc: ChangeLog fold-const.c
gcc/testsuite
--- Comment #11 from mark at codesourcery dot com 2005-10-19 22:14 ---
Subject: Re: [3.4/4.0/4.1 Regression] ICE with invert conditional
containing throw
rguenth at gcc dot gnu dot org wrote:
> --- Comment #10 from rguenth at gcc dot gnu dot org 2005-10-19 21:51
> ---
> Ok,
--- Comment #10 from rguenth at gcc dot gnu dot org 2005-10-19 21:51
---
Ok, I'll see how big the middle-end change would get. The easiest way would
be to change invert_truthvalue to ignore void types and do nothing for them.
Like
+ if (VOID_TYPE_P (TREE_TYPE (arg)))
+return arg;
--- Comment #9 from mark at codesourcery dot com 2005-10-19 20:58 ---
Subject: Re: [3.4/4.0/4.1 Regression] ICE with invert conditional
containing throw
> Mark did you look how long this bug as been here, it predates tree-ssa
> by a year. So I don't think we should change TRUTH_NOT
--- Comment #8 from pinskia at gcc dot gnu dot org 2005-10-19 20:55 ---
Subject: Re: [3.4/4.0/4.1 Regression] ICE with invert conditional containing
throw
On Oct 19, 2005, at 4:50 PM, mark at codesourcery dot com wrote:
>
>
> --- Comment #7 from mark at codesourcery dot com 200
On Oct 19, 2005, at 4:50 PM, mark at codesourcery dot com wrote:
--- 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 fro
--- 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
> ---
> Unfor
--- 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.
So the other solution is to
--- Comment #5 from mmitchel at gcc dot gnu dot org 2005-10-19 20:11
---
If you don't want to fix this in the middle-end, the right way to handle this
is in the C++ gimplifier.
At that point, create a COMPOUND_EXPR whose second argument is "*((T*) 0)" for
non-pointer types, or just "((
--- Comment #4 from rguenth at gcc dot gnu dot org 2005-10-19 10:06 ---
Like so:
Index: cp/call.c
===
RCS file: /cvs/gcc/gcc/gcc/cp/call.c,v
retrieving revision 1.560
diff -c -3 -p -r1.560 call.c
*** cp/call.c 18 Oct 2005
--- Comment #3 from rguenth at gcc dot gnu dot org 2005-10-19 09:52 ---
Of course we _can_ fix this in the middle-end, simply by allowing COND_EXPRs
that satisfy the needs of C++
/* [expr.cond]
One of the following shall hold:
--The second or the third operand
--- Comment #2 from rguenth at gcc dot gnu dot org 2005-10-19 09:45 ---
Ho humm, we had this before. invert_truthvalue is supposed to be called
with sth that passes the truth_value_p check...
But the real problem is the COND_EXPR has wrong types:
unit size
align 8 s
--- Comment #1 from pinskia at gcc dot gnu dot org 2005-10-18 23:07 ---
Confirmed, I am deciding if we can declare this as a regression as this did not
ICE in 2.95.3 but was rejected which is just as bad. But since we decided
before ICE from any thing is a regression, we can declare thi
13 matches
Mail list logo