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

 <cond_expr 0x4019b140
    type <boolean_type 0x4019f4ac bool public unsigned QI
        size <integer_cst 0x4018d1f8 constant invariant 8>
        unit size <integer_cst 0x4018d210 constant invariant 1>
        align 8 symtab 0 alias set -1 precision 1 min <integer_cst 0x4018d5e8
0> max <integer_cst 0x4018d618 1>>
    side-effects
    arg 0 <eq_expr 0x40195144 type <boolean_type 0x4019f4ac bool>

        arg 0 <var_decl 0x4019a210 value type <integer_type 0x4019f284 int>
            used tree_1 tree_2 tree_3 decl_5 SI file t.C line 3
            size <integer_cst 0x4018d3f0 constant invariant 32>
            unit size <integer_cst 0x4018d180 constant invariant 4>
            align 32 context <function_decl 0x40231e00 foo> initial
<integer_cst 0x4018da08 1>>
        arg 1 <integer_cst 0x4018d9f0 constant invariant 0>>
    arg 1 <throw_expr 0x4020f3a0
        type <void_type 0x4019f8a0 void VOID
            align 8 symtab 0 alias set -1
            pointer_to_this <pointer_type 0x4019f8fc>>
        side-effects
        arg 0 <call_expr 0x4019b0f0 type <void_type 0x4019f8a0 void>
            side-effects
            arg 0 <addr_expr 0x4020f380 type <pointer_type 0x402328fc>
                constant invariant arg 0 <function_decl 0x40231e80
__cxa_rethrow>>>>
    arg 2 <integer_cst 0x4018d618 type <boolean_type 0x4019f4ac bool> constant
invariant 1>>


it pretends to have boolean_type, but the first operand is of void_type!

I don't think we want to "fix" invert_truthvalue here, but rather the C++
frontend generating this crap tree node.


-- 


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

Reply via email to