------- Additional Comments From dberlin at gcc dot gnu dot org 2005-07-23 17:49 ------- I believe something is actually wrong in the field layout for the minimized testcase. We have fields that overlap. Adding mark mitchell.
Mark, if you use the attached aliashelp.diff, and -fdump-tree-alias-all, and look at alias1, you'll see: ;; Function void foo() (_Z3foov) Entering type NULL at offset 0 Adding field i0 at offset 0 Adding field i1 at offset 32 Adding field c at offset 64 Entering type NULL at offset 0 Entering type NULL at offset 0 Adding field _vptr.B at offset 0 Entering type NULL at offset 32 Adding field _vptr.A at offset 32 Adding field i at offset 64 Adding field c0 at offset 96 Adding field c1 at offset 104 Entering type NULL at offset 32 Adding field i0 at offset 32 Adding field i1 at offset 64 Adding field c at offset 96 Entering type NULL at offset 128 Adding field _vptr.A at offset 128 Adding field i at offset 160 Adding field c0 at offset 192 Adding field c1 at offset 200 Entering type NULL at offset 0 Adding field i0 at offset 0 Adding field i1 at offset 32 Adding field c at offset 64 (The NULL is because the type is unnamed). Note that _vptr.A overlaps with i0, etc. Is this right? -- What |Removed |Added ---------------------------------------------------------------------------- CC| |mark at codesourcery dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22488