------- Comment #5 from rguenth at gcc dot gnu dot org 2005-10-24 10:46 ------- We are trying to copy 16 bits of
$5 = {id = 8, name = 0x896d7d0 "D.1877", decl = 0x4019ae18, offset = 8, size = 8, fullsize = 16, next = 0x0, node = 8, address_taken = 0, indirect_target = 0, is_artificial_var = 0, is_special_var = 0, is_unknown_size_var = 0, has_union = 0, is_heap_var = 0, solution = 0x8999708, variables = 0x8999718, complex = 0x0} to $1 = {id = 6, name = 0x898aaf7 "a", decl = 0x4019a7e8, offset = 8, size = 8, fullsize = 24, next = 0x899ca54, node = 6, address_taken = 1, indirect_target = 0, is_artificial_var = 0, is_special_var = 0, is_unknown_size_var = 0, has_union = 0, is_heap_var = 0, solution = 0x89996c8, variables = 0x89996d8, complex = 0x0} $2 = {id = 7, name = 0x896d7c4 "a.bound_", decl = 0x4019a7e8, offset = 16, size = 8, fullsize = 24, next = 0x0, node = 7, address_taken = 1, indirect_target = 0, is_artificial_var = 0, is_special_var = 0, is_unknown_size_var = 0, has_union = 0, is_heap_var = 0, solution = 0x89996e8, variables = 0x89996f8, complex = 0x0} not counting the non-existant 8 bits padding(?) static void do_simple_structure_copy (const struct constraint_expr lhs, const struct constraint_expr rhs, const unsigned HOST_WIDE_INT size) { varinfo_t p = get_varinfo (lhs.var); unsigned HOST_WIDE_INT pstart, last; pstart = p->offset; last = p->offset + size; for (; p && p->offset < last; p = p->next) not adding p->offset to last would fix that. Hmm, too obvious? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24351