(build_signature_table_constructor): Use DECL_CONTEXT instead of...
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 23 Jun 1995 02:42:04 +0000 (22:42 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 23 Jun 1995 02:42:04 +0000 (22:42 -0400)
commitb532e7f1dc84b4045b5f2d7cfe4a571bb575b22e
tree65a4c9d4828dffec9c1e4ace0d8b06f8f613b564
parente1b7b0cb2e688fac7793af38a4d805a13e36056b
(build_signature_table_constructor): Use DECL_CONTEXT instead of...

(build_signature_table_constructor): Use DECL_CONTEXT instead of
DECL_CLASS_CONTEXT for calculating the vfield offset so abstract
virtual functions are handled correctly.
(build_signature_table_constructor): Store the correct delta in signature table
entries.  It does not yet work for classes with virtual base classes as
implementations of signatures.
(build_signature_method_call): Add the delta to the object_ptr before
generating the function call.
(build_signature_method_call): Dereference the optr for the direct and virtual
calls.
(build_signature_table_constructor): Make the tag for default
implementations -1 instead of 2.
(build_signature_method_call): Change the generated conditional expression
correspondingly.
(build_signature_pointer_constructor): Deleted the sorry message that said we
can't handle multiple inheritance for implementations of signatures
(build_signature_method_call): Use the offset from the sigtable entry instead
of the vptr field from the signature pointer for building a virtual function
call.
(build_vptr_ref): Deleted.
(build_signature_pointer_or_reference_type): Deleted construction of the vptr
field.
(build_signature_pointer_constructor): Deleted initialization of/assignment to
the vptr field.
(build_signature_table_constructor): Convert the signature table entry fields
to their correct types.
(build_signature_table_constructor): Don't call digest_init for the fields of
a sigtable entry, it's wasted time.
(build_signature_table_constructor): Correctly set the offset and index fields
of a sigtable entry.  Build the constructor the way digest_init does,
digest_init can't handle initializing an anonymous union inside a struct.
(build_signature_method_call): Use the index field instead of the delta field
to get the vtable index.
(build_signature_table_constructor): Rename code and offset to tag and delta,
respectively.
(build_signature_method_call): Ditto.  Use above variables.

From-SVN: r10046
gcc/cp/sig.c