This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/24351] [4.1 Regression] ICE in do_simple_structure_copy with some C++ code
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 24 Oct 2005 10:46:52 -0000
- Subject: [Bug tree-optimization/24351] [4.1 Regression] ICE in do_simple_structure_copy with some C++ code
- References: <bug-24351-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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