Correct many new ABI issues regarding vbase and vcall offset layout. * cp-tree.h (BINFO_VTABLE): Document. (struct lang_type): Tweak formatting. (BINFO_PRIMARY_BINFO): Add to documentation. (CLASSTYPE_VSIZE): Fix typo in comment. (CLASSTYPE_VBASECLASSES): Update documentation. (BINFO_VBASE_MARKED): Remove. (SET_BINFO_VBASE_MARKED): Likewise. (CLEAR_BINFO_VBASE_MARKED): Likewise. (BINFO_FIELDS_MARKED): Remove. (SET_BINFO_FIELDS_MARKED): Likewise. (CLEAR_BINFO_FIELDS_MARKED): Likewise. (enum access_kind): New enumeration. (num_extra_vtbl_entries): Remove declaration. (size_extra_vtbl_entries): Likewise. (get_vtbl_decl_for_binfo): New function. (dfs_vbase_unmark): Remove declaration. (mark_primary_bases): Likewise. * class.c (SAME_FN): Remove. (struct vcall_offset_data_s): Move definition. (build_vbase_pointer): Use `build', not `build_binary_op', to access the vbase pointer under the new ABI. (build_vtable_entry_ref): Use get_vtbl_decl_for_binfo. (build_primary_vtable): Likewise. (dfs_mark_primary_bases): Move here from search.c. (mark_primary_bases): Likewise. (determine_primary_bases): Under the new ABI, don't make a base class a primary base just because we don't yet have any virtual functions. (layout_vtable_decl): Use get_vtbl_decl_for_binfo. (num_vfun_entries): Remove. (dfs_count_virtuals): Likewise. (num_extra_vtbl_entries): Likewise. (size_extra_vtbl_entries): Likewise. (layout_virtual_bases): Iterate in inheritance graph order under the new ABI. (finish_struct_1): Use TYPE_VFIELD, not CLASSTYPE_VSIZE, to indicate that a vfield is present. (init_class_processing): Initialize access_public_node, etc., from ak_public, etc. (get_vtbl_decl_for_binfo): New function. (dump_class_hierarchy_r): Likewise. (dump_class_hierarchy): Use it. (finish_vtbls): Build the vtbls in inheritance graph order. (dfs_finish_vtbls): Adjust call to build_vtbl_initializer. (initialize_vtable): Use get_vtbl_decl_for_binfo. (accumulate_vtbl_inits): Add comments explaining why a pre-order walk is required. (dfs_accumulate_vtbl_inits): Set BINFO_VTABLE to the location where the vptr points, even for primary vtables. (build_vtbl_initializer): Adjust handling of vbase and vcall offsets. (build_vcall_and_vbase_vtable_entries): New function. (dfs_build_vbase_offset_vtbl_entries): Remove. (build_vbase_offset_vtbl_entries): Reimplement. (dfs_build_vcall_offset_vtbl_entries): Don't include virtuals that were already handled in a primary base class vtable. (build_vcall_offset_vtbl_entries): Adjust. (build_rtti_vtbl_entries): Adjust. * decl2.c (output_vtable_inherit): Use get_vtbl_decl_for_binfo. * init.c (expand_virtual_init): Simplify. * repo.c (repo_get_id): Use get_vtbl_decl_for_binfo. * rtti.c (create_pseudo_type_info): Adjust calculation of vptr. * search.c (BINFO_ACCESS): New macro. (SET_BINFO_ACCESS): Likewise. (dfs_access_in_type): Manipulate access_kinds, not access nodes. (access_in_type): Likewise. (dfs_accessible_p): Likewise. (protected_accessible_p): Likewise. (lookup_fnfields_1): Adjust documentation. (dfs_mark_primary_bases): Move to class.c (mark_primary_bases): Likewise. (dfs_vbase_unmark): Remove. (virtual_context): Use BINFO_FOR_VBASE. (dfs_get_vbase_types): Simplify. (dfs_build_inheritance_graph_order): New function. (get_vbase_types): Use it. * tree.c (debug_binfo): Use get_vtbl_decl_for_binfo. * tinfo.cc (get_vbase_offset): New function. (__vmi_class_type_info::do_find_public_src): Use it. (__vmi_class_type_info::do_dyncast): Likewise. (__vmi_class_type_info::do_upcast): Likewise. From-SVN: r32905
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| ch | Loading commit data... | |
| config | Loading commit data... | |
| cp | Loading commit data... | |
| f | Loading commit data... | |
| fixinc | Loading commit data... | |
| ginclude | Loading commit data... | |
| intl | Loading commit data... | |
| java | Loading commit data... | |
| objc | Loading commit data... | |
| po | Loading commit data... | |
| testsuite | Loading commit data... | |
| .cvsignore | Loading commit data... | |
| .gdbinit | Loading commit data... | |
| ABOUT-GCC-NLS | Loading commit data... | |
| ABOUT-NLS | Loading commit data... | |
| BUGS | Loading commit data... | |
| COPYING | Loading commit data... | |
| COPYING.LIB | Loading commit data... | |
| ChangeLog | Loading commit data... | |
| ChangeLog.0 | Loading commit data... | |
| ChangeLog.1 | Loading commit data... | |
| ChangeLog.lib | Loading commit data... | |
| FSFChangeLog | Loading commit data... | |
| FSFChangeLog.10 | Loading commit data... | |
| FSFChangeLog.11 | Loading commit data... | |
| INSTALL | Loading commit data... | |
| LANGUAGES | Loading commit data... | |
| Makefile.in | Loading commit data... | |
| NEWS | Loading commit data... | |
| PROBLEMS | Loading commit data... | |
| README | Loading commit data... | |
| README-bugs | Loading commit data... | |
| README-fixinc | Loading commit data... | |
| README.ACORN | Loading commit data... | |
| README.ALTOS | Loading commit data... | |
| README.APOLLO | Loading commit data... | |
| README.AVR | Loading commit data... | |
| README.C4X | Loading commit data... | |
| README.DWARF | Loading commit data... | |
| README.FRESCO | Loading commit data... | |
| README.NS32K | Loading commit data... | |
| README.RS6000 | Loading commit data... | |
| README.TRAD | Loading commit data... | |
| README.X11 | Loading commit data... | |
| README.gnat | Loading commit data... | |
| SERVICE | Loading commit data... | |
| TESTS.FLUNK | Loading commit data... | |
| acconfig.h | Loading commit data... | |
| aclocal.m4 | Loading commit data... | |
| alias.c | Loading commit data... | |
| assert.h | Loading commit data... | |
| basic-block.h | Loading commit data... | |
| bb-reorder.c | Loading commit data... | |
| bitmap.c | Loading commit data... | |
| bitmap.h | Loading commit data... | |
| build-make | Loading commit data... | |
| builtins.c | Loading commit data... | |
| builtins.def | Loading commit data... | |
| c-aux-info.c | Loading commit data... | |
| c-common.c | Loading commit data... | |
| c-common.h | Loading commit data... | |
| c-convert.c | Loading commit data... | |
| c-decl.c | Loading commit data... | |
| c-gperf.h | Loading commit data... | |
| c-iterate.c | Loading commit data... | |
| c-lang.c | Loading commit data... | |
| c-lex.c | Loading commit data... | |
| c-lex.h | Loading commit data... | |
| c-parse.c | Loading commit data... | |
| c-parse.gperf | Loading commit data... | |
| c-parse.h | Loading commit data... | |
| c-parse.in | Loading commit data... | |
| c-parse.y | Loading commit data... | |
| c-pragma.c | Loading commit data... | |
| c-pragma.h | Loading commit data... | |
| c-tree.h | Loading commit data... | |
| c-typeck.c | Loading commit data... | |
| caller-save.c | Loading commit data... | |
| calls.c | Loading commit data... | |
| cccp.1 | Loading commit data... | |
| cccp.c | Loading commit data... | |
| cexp.c | Loading commit data... | |
| cexp.y | Loading commit data... | |
| collect2.c | Loading commit data... | |
| collect2.h | Loading commit data... | |
| combine.c | Loading commit data... | |
| conditions.h | Loading commit data... | |
| config.guess | Loading commit data... | |
| config.in | Loading commit data... | |
| configure | Loading commit data... | |
| configure.bat | Loading commit data... | |
| configure.frag | Loading commit data... | |
| configure.in | Loading commit data... | |
| configure.lang | Loading commit data... | |
| convert.c | Loading commit data... | |
| convert.h | Loading commit data... | |
| cpp.1 | Loading commit data... | |
| cpp.texi | Loading commit data... | |
| cpperror.c | Loading commit data... | |
| cppexp.c | Loading commit data... | |
| cppfiles.c | Loading commit data... | |
| cpphash.c | Loading commit data... | |
| cpphash.h | Loading commit data... | |
| cppinit.c | Loading commit data... | |
| cpplex.c | Loading commit data... | |
| cpplib.c | Loading commit data... | |
| cpplib.h | Loading commit data... | |
| cppmain.c | Loading commit data... | |
| cppspec.c | Loading commit data... | |
| cppulp.c | Loading commit data... | |
| cross-make | Loading commit data... | |
| crtstuff.c | Loading commit data... | |
| cse.c | Loading commit data... | |
| cselib.h | Loading commit data... | |
| cstamp-h.in | Loading commit data... | |
| dbxout.c | Loading commit data... | |
| dbxout.h | Loading commit data... | |
| dbxstclass.h | Loading commit data... | |
| defaults.h | Loading commit data... | |
| diagnostic.c | Loading commit data... | |
| doprint.c | Loading commit data... | |
| doschk.c | Loading commit data... | |
| dostage2 | Loading commit data... | |
| dostage3 | Loading commit data... | |
| dwarf.h | Loading commit data... | |
| dwarf2.h | Loading commit data... | |
| dwarf2out.c | Loading commit data... | |
| dwarf2out.h | Loading commit data... | |
| dwarfout.c | Loading commit data... | |
| dwarfout.h | Loading commit data... | |
| dyn-string.c | Loading commit data... | |
| dyn-string.h | Loading commit data... | |
| eh-common.h | Loading commit data... | |
| emit-rtl.c | Loading commit data... | |
| enquire.c | Loading commit data... | |
| errors.c | Loading commit data... | |
| errors.h | Loading commit data... | |
| except.c | Loading commit data... | |
| except.h | Loading commit data... | |
| exgettext | Loading commit data... | |
| explow.c | Loading commit data... | |
| expmed.c | Loading commit data... | |
| expr.c | Loading commit data... | |
| expr.h | Loading commit data... | |
| extend.texi | Loading commit data... | |
| final.c | Loading commit data... | |
| fix-header.c | Loading commit data... | |
| fixproto | Loading commit data... | |
| flags.h | Loading commit data... | |
| floatlib.c | Loading commit data... | |
| flow.c | Loading commit data... | |
| fold-const.c | Loading commit data... | |
| fp-test.c | Loading commit data... | |
| frame.c | Loading commit data... | |
| frame.h | Loading commit data... | |
| function.c | Loading commit data... | |
| function.h | Loading commit data... | |
| future.options | Loading commit data... | |
| gansidecl.h | Loading commit data... | |
| gbl-ctors.h | Loading commit data... | |
| gcc.1 | Loading commit data... | |
| gcc.c | Loading commit data... | |
| gcc.h | Loading commit data... | |
| gcc.hlp | Loading commit data... | |
| gcc.texi | Loading commit data... | |
| gccbug.in | Loading commit data... | |
| gccspec.c | Loading commit data... | |
| gcov-io.h | Loading commit data... | |
| gcov.c | Loading commit data... | |
| gcov.texi | Loading commit data... | |
| gcse.c | Loading commit data... | |
| gen-protos.c | Loading commit data... | |
| genattr.c | Loading commit data... | |
| genattrtab.c | Loading commit data... | |
| gencheck.c | Loading commit data... | |
| gencodes.c | Loading commit data... | |
| genconfig.c | Loading commit data... | |
| genemit.c | Loading commit data... | |
| genextract.c | Loading commit data... | |
| genflags.c | Loading commit data... | |
| gengenrtl.c | Loading commit data... | |
| genmultilib | Loading commit data... | |
| genopinit.c | Loading commit data... | |
| genoutput.c | Loading commit data... | |
| genpeep.c | Loading commit data... | |
| genrecog.c | Loading commit data... | |
| ggc-callbacks.c | Loading commit data... | |
| ggc-common.c | Loading commit data... | |
| ggc-none.c | Loading commit data... | |
| ggc-page.c | Loading commit data... | |
| ggc-simple.c | Loading commit data... | |
| ggc.h | Loading commit data... | |
| glimits.h | Loading commit data... | |
| global.c | Loading commit data... | |
| gmon.c | Loading commit data... | |
| graph.c | Loading commit data... | |
| graph.h | Loading commit data... | |
| gstab.h | Loading commit data... | |
| gsyms.h | Loading commit data... | |
| gsyslimits.h | Loading commit data... | |
| gthr-dce.h | Loading commit data... | |
| gthr-posix.h | Loading commit data... | |
| gthr-single.h | Loading commit data... | |
| gthr-solaris.h | Loading commit data... | |
| gthr-vxworks.h | Loading commit data... | |
| gthr-win32.h | Loading commit data... | |
| gthr.h | Loading commit data... | |
| haifa-sched.c | Loading commit data... | |
| halfpic.c | Loading commit data... | |
| halfpic.h | Loading commit data... | |
| hard-reg-set.h | Loading commit data... | |
| hash.c | Loading commit data... | |
| hash.h | Loading commit data... | |
| hwint.h | Loading commit data... | |
| input.h | Loading commit data... | |
| install.texi | Loading commit data... | |
| install1.texi | Loading commit data... | |
| integrate.c | Loading commit data... | |
| integrate.h | Loading commit data... | |
| intl.c | Loading commit data... | |
| intl.h | Loading commit data... | |
| invoke.texi | Loading commit data... | |
| jump.c | Loading commit data... | |
| lcm.c | Loading commit data... | |
| libgcc1-test.c | Loading commit data... | |
| libgcc1.c | Loading commit data... | |
| libgcc2.c | Loading commit data... | |
| libgcc2.h | Loading commit data... | |
| limitx.h | Loading commit data... | |
| limity.h | Loading commit data... | |
| listing | Loading commit data... | |
| lists.c | Loading commit data... | |
| local-alloc.c | Loading commit data... | |
| longlong.h | Loading commit data... | |
| loop.c | Loading commit data... | |
| loop.h | Loading commit data... | |
| machmode.def | Loading commit data... | |
| machmode.h | Loading commit data... | |
| make-l2.com | Loading commit data... | |
| makefile.vms | Loading commit data... | |
| mbchar.c | Loading commit data... | |
| mbchar.h | Loading commit data... | |
| md.texi | Loading commit data... | |
| mips-tdump.c | Loading commit data... | |
| mips-tfile.c | Loading commit data... | |
| mkdeps.c | Loading commit data... | |
| mkdeps.h | Loading commit data... | |
| mkinstalldirs | Loading commit data... | |
| move-if-change | Loading commit data... | |
| optabs.c | Loading commit data... | |
| output.h | Loading commit data... | |
| patch-apollo-includes | Loading commit data... | |
| pcp.h | Loading commit data... | |
| predict.c | Loading commit data... | |
| prefix.c | Loading commit data... | |
| prefix.h | Loading commit data... | |
| print-rtl.c | Loading commit data... | |
| print-tree.c | Loading commit data... | |
| profile.c | Loading commit data... | |
| protoize.c | Loading commit data... | |
| pself.c | Loading commit data... | |
| pself1.c | Loading commit data... | |
| pself2.c | Loading commit data... | |
| pself3.c | Loading commit data... | |
| pself4.c | Loading commit data... | |
| pself5.c | Loading commit data... | |
| real.c | Loading commit data... | |
| real.h | Loading commit data... | |
| recog.c | Loading commit data... | |
| recog.h | Loading commit data... | |
| reg-stack.c | Loading commit data... | |
| regclass.c | Loading commit data... | |
| regmove.c | Loading commit data... | |
| regs.h | Loading commit data... | |
| reload.c | Loading commit data... | |
| reload.h | Loading commit data... | |
| reload1.c | Loading commit data... | |
| reorg.c | Loading commit data... | |
| resource.c | Loading commit data... | |
| resource.h | Loading commit data... | |
| rtl.c | Loading commit data... | |
| rtl.def | Loading commit data... | |
| rtl.h | Loading commit data... | |
| rtl.texi | Loading commit data... | |
| rtlanal.c | Loading commit data... | |
| sbitmap.c | Loading commit data... | |
| sbitmap.h | Loading commit data... | |
| scan-decls.c | Loading commit data... | |
| scan-types.sh | Loading commit data... | |
| scan.c | Loading commit data... | |
| scan.h | Loading commit data... | |
| sdbout.c | Loading commit data... | |
| sdbout.h | Loading commit data... | |
| sibcall.c | Loading commit data... | |
| simplify-rtx.c | Loading commit data... | |
| sort-protos | Loading commit data... | |
| ssa.c | Loading commit data... | |
| stab.def | Loading commit data... | |
| stack.h | Loading commit data... | |
| stmt.c | Loading commit data... | |
| stor-layout.c | Loading commit data... | |
| sys-protos.h | Loading commit data... | |
| sys-types.h | Loading commit data... | |
| system.h | Loading commit data... | |
| texinfo.tex | Loading commit data... | |
| tlink.c | Loading commit data... | |
| tm.texi | Loading commit data... | |
| toplev.c | Loading commit data... | |
| toplev.h | Loading commit data... | |
| tree.c | Loading commit data... | |
| tree.def | Loading commit data... | |
| tree.h | Loading commit data... | |
| tsystem.h | Loading commit data... | |
| typeclass.h | Loading commit data... | |
| unprotoize.c | Loading commit data... | |
| unroll.c | Loading commit data... | |
| varasm.c | Loading commit data... | |
| varray.c | Loading commit data... | |
| varray.h | Loading commit data... | |
| version.c | Loading commit data... | |
| version.h | Loading commit data... | |
| vmsconfig.com | Loading commit data... | |
| xcoffout.c | Loading commit data... | |
| xcoffout.h | Loading commit data... |