Implement empty base optimization.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Apr 1998 14:13:24 +0000 (14:13 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Apr 1998 14:13:24 +0000 (14:13 +0000)
commitd729e3b1a1d95cebc497ccff79fb8c934760b59f
tree78b6049387f4015025e8331467e00ee2485df68d
parent1cd80523a7f9b340b7cecbe9d66cd2707d1f0988
Implement empty base optimization.
* class.c (finish_struct_1): Add vbase fields earlier.  Set
CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
* search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
(types_overlap_p): New fn.
* tree.c (avoid_overlap): New fn.
(build_base_fields): Use it to avoid overlapping empty bases.
* cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@18978 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/cp-tree.h
gcc/cp/decl2.c
gcc/cp/lang-options.h
gcc/cp/search.c
gcc/cp/tree.c