c++/2352: inheritance on solaris

alan_gonzalez@iname.com alan_gonzalez@iname.com
Thu Mar 22 20:16:00 GMT 2001

>Number:         2352
>Category:       c++
>Synopsis:       inheritance on solaris
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 22 20:16:01 PST 2001
>Originator:     Alan Gonzalez
>Release:        gcc-2.95.2 and gcc-2.95.3 (pre-release)
solaris 2.7
Hi, I just recently happened upon an oddity in gcc when compiling a simple
inheritance tree. 

I had been using gcc version 2.95.2 19991024 (release) and tried gcc
version 2.95.3 20010
125 (prerelease) to see if anything has changed, but same
situation occurs. 

In the attached test.cc file i get:

on solaris with sunsoft 5.0 compilers i get a size of 8.

This is what i expect.  but...

on solaris with gcc-2.95.2 i get a size of 16 ??

If i make mefoo a non inherited class, then the size on solaris with gcc-2.95.2 is 8.

For some reason the inheritance makes the size go from 8 to 16. 

Also when the double is in the base class instead of being in the inherited class, the size is 8 (what i expect). 

Can someone explain this one to me?   Thanks. 
compile the attached file and run once on solaris.  Then edit file and remove inheritance of mefoo from foo, making mefoo just a class.  Re-run.  In the first run the size is 16, in the second the size is 8.  Seems strange that sunsoft 5.0 compiler can correctly make this inherited class a size 8 as expected while gcc makes it 16.

Content-Type: application/octet-stream; name="test.cc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test.cc"


More information about the Gcc-bugs mailing list