Hi!

During type checking of the middle-end in the tree-optimizers
we run into type mismatches like

fold_binary (code=PLUS_EXPR, type=0x4037e438,
    op0=0x404a6940, op1=0x404a6d40)

with the types

(gdb) call debug_tree (type)
 <integer_type 0x4037e438 gcov_position_t sizes-gimplified asm_written
public unsigned SI
    size <integer_cst 0x40142408 type <integer_type 0x4014a288
bit_size_type> constant invariant 32>
    unit size <integer_cst 0x40142198 type <integer_type 0x4014a21c
unsigned int> constant invariant 4>
    align 32 symtab 1077408160 alias set -1 precision 32 min <integer_cst
0x40142480 0> max <integer_cst 0x40142468 4294967295>>

(gdb) call debug_tree (op0)
 <ssa_name 0x404a6940
    type <integer_type 0x4037e438 gcov_position_t sizes-gimplified
asm_written public unsigned SI
        size <integer_cst 0x40142408 constant invariant 32>
        unit size <integer_cst 0x40142198 constant invariant 4>
        align 32 symtab 1077408160 alias set -1 precision 32 min
<integer_cst 0x40142480 0> max <integer_cst 0x40142468 4294967295>>
    visited var <var_decl 0x403be21c D.5122> def_stmt <modify_expr
0x403bc57c>
    version 19>
(gdb) call debug_tree (op1)
 <ssa_name 0x404a6d40
    type <integer_type 0x4014a57c unsigned int sizes-gimplified
asm_written public unsigned SI
        size <integer_cst 0x40142408 constant invariant 32>
        unit size <integer_cst 0x40142198 constant invariant 4>
        align 32 symtab 1075589640 alias set -1 precision 32 min
<integer_cst 0x40142480 0> max <integer_cst 0x40142468 4294967295>
        pointer_to_this <pointer_type 0x402b93cc>>
    visited var <var_decl 0x403be0d8 D.5119> def_stmt <modify_expr
0x403bc4ec>
    version 5>

which do not match, but still only differ in "name" -- so the
question is can we / do we want to lower types like gcov_position_t
to their (correctly qualified) main variant (or whatever else is
suitable) f.i. during gimplification to allow the optimizers create
strictly typed trees?

Richard.

Reply via email to