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: "dberlin at dberlin dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 24 Oct 2005 12:55:43 -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 #8 from dberlin at gcc dot gnu dot org 2005-10-24 12:55 -------
Subject: Re: [4.1 Regression] ICE in
do_simple_structure_copy with some C++ code
On Mon, 2005-10-24 at 11:55 +0000, rguenth at gcc dot gnu dot org wrote:
>
> ------- Comment #7 from rguenth at gcc dot gnu dot org 2005-10-24 11:55 -------
> All of the fixes are wrong. The only safe thing papering over the problem is
> disallowing this case with
If you look, you'll note that while the assignments have the same type,
one is embedded in a structure and the other isn't.
If you stare at that structure it is embedded in, you'll discover the
empty base for one of the classes seems to appear twice, which is where
we get the fullsize of 16.
Thus, we end up with an extra "field" on one side of the assignment.
We reasonably expect that an assignment between two of the same types
will have the same fields on both sides.
This is really another effect of the problem in 24288, AFAICT. The
empty base for struct adaptor_base appears twice in one of the
structures, even though it's "not really there" twice.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24351