Hi, While working on the tree-if-conv.c, I realized that the copy of the contents of a non scalar variable are not correctly done. The copy assignment triggers this error:
error: virtual SSA name for non-VOP decl while verifying SSA_NAME _ifc_.2005_46 in statement # .MEM_394 = VDEF <.MEM_475> _ifc_.2005_46 = ops[j_457]; The array reference looks like this: <array_ref 0x7ffff4bd65a0 type <record_type 0x7ffff4ee2c78 simplify_plus_minus_op_data sizes-gimplified asm_written type_0 BLK For scalar types, the code that creates the copy is working correctly: /* Create a new temp variable of type TYPE. Add GIMPLE_ASSIGN to assign EXP to the new variable. */ static gimple ifc_temp_var (tree type, tree exp) { const char *name = "_ifc_"; tree var, new_name; gimple stmt; /* Create new temporary variable. */ var = create_tmp_var (type, name); add_referenced_var (var); /* Build new statement to assign EXP to new variable. */ stmt = gimple_build_assign (var, exp); /* Get SSA name for the new variable and set make new statement its definition statement. */ new_name = make_ssa_name (var, stmt); gimple_assign_set_lhs (stmt, new_name); SSA_NAME_DEF_STMT (new_name) = stmt; update_stmt (stmt); return stmt; } What is missing in this function to make it handle non scalar types? Thanks, Sebastian Pop -- AMD / Open Source Compiler Engineering / GNU Tools