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.