------- Comment #5 from pault at gcc dot gnu dot org 2010-03-25 21:59 ------- I am a bit lost :-(
(gdb) print ssa_name->common $6 = {base = {code = SSA_NAME, side_effects_flag = 0, constant_flag = 0, addressable_flag = 0, volatile_flag = 0, readonly_flag = 0, unsigned_flag = 0, asm_written_flag = 0, nowarning_flag = 0, used_flag = 0, nothrow_flag = 0, static_flag = 0, public_flag = 0, private_flag = 0, protected_flag = 0, deprecated_flag = 0, saturating_flag = 0, default_def_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, visited = 0, packed_flag = 0, user_align = 0, spare = 0, address_space = 0}, chain = 0x0, type = 0x7f9172eced20} (gdb) print ssa_name->ssa_name.var->common $7 = {base = {code = VAR_DECL, side_effects_flag = 0, constant_flag = 0, addressable_flag = 0, volatile_flag = 0, readonly_flag = 0, unsigned_flag = 0, asm_written_flag = 0, nowarning_flag = 0, used_flag = 1, nothrow_flag = 0, static_flag = 1, public_flag = 0, private_flag = 0, protected_flag = 0, deprecated_flag = 0, saturating_flag = 0, default_def_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, visited = 0, packed_flag = 0, user_align = 0, spare = 0, address_space = 0}, chain = 0x0, type = 0x7f9172eced20} I presume that one being an SSA_NAME and the other being a VAR_DECL is how it is supposed to be? Other than that, the types are identical, aren't they? Equally, eliminating if (TREE_TYPE (ssa_name) != TREE_TYPE (SSA_NAME_VAR (ssa_name))) { error ("type mismatch between an SSA_NAME and its symbol"); return true; } in tree-ssa.c:verify_ssa_name fixes the problem. So, we have a sanity check that has no effect that I can see. Where do these things get set in the first place? Paul -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43505