There's some problem with this tree (on ia64):

 <mult_expr 0x2000000000349fb0
    type <integer_type 0x20000000002ec750 int SI
        size <integer_cst 0x20000000002e8930 constant 32>
        unit size <integer_cst 0x20000000002e8a80 constant 4>
        align 32 symtab 0 alias set 3 precision 32 min <integer_cst 
0x20000000002e8a20 -2147483648> max <integer_cst 0x20000000002e8a50 2147483647>
        pointer_to_this <pointer_type 0x2000000000316630>>
   
    arg 0 <truth_or_expr 0x2000000000349f50
        type <integer_type 0x20000000002ec9c0 long unsigned int unsigned DI
            size <integer_cst 0x20000000002e8ab0 constant 64>
            unit size <integer_cst 0x20000000002e8c00 constant 8>
            align 64 symtab 0 alias set -1 precision 64 min <integer_cst 
0x20000000002e8c90 0> max <integer_cst 0x20000000002e8cc0 18446744073709551615>>
       
        arg 0 <eq_expr 0x2000000000349bf0 type <integer_type 0x20000000002ec9c0 
long unsigned int>
            arg 0 <parm_decl 0x20000000003852b0 block>
            arg 1 <integer_cst 0x2000000000349bc0 constant 1>>
        arg 1 <eq_expr 0x2000000000349c50 type <integer_type 0x20000000002ec9c0 
long unsigned int>
            arg 0 <parm_decl 0x20000000003852b0 block>
            arg 1 <integer_cst 0x2000000000349c20 constant 3>>>
    arg 1 <integer_cst 0x2000000000349b90 type <integer_type 0x20000000002ec750 
int> constant 8>>

expand_mult eventually gets passed (reg:DI XXX) and (const_int 8) and
doesn't like the result mode being different from arg0's mode. I'm not
sure whether it is supposed to. Also, shouldn't the type of eq_expr
and truth_or_expr always be int? Maybe somebody more knowledgeable can
comment on this...

-- 
        Falk


Reply via email to