diff options
| author | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-10-29 01:16:05 +0000 |
|---|---|---|
| committer | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-10-29 01:16:05 +0000 |
| commit | 80303fa75ba1fcf68ed355ac5361b33769712867 (patch) | |
| tree | 456914960b33f804e0e0a01a2caaa7e312150c73 /libjava/classpath/lib/gnu/java/beans/decoder/PersistenceParser$ArrayHandlerCreator.class | |
| parent | 16c514027c01ecb36a9ca39b3bf3ef4334183738 (diff) | |
| download | ppe42-gcc-80303fa75ba1fcf68ed355ac5361b33769712867.tar.gz ppe42-gcc-80303fa75ba1fcf68ed355ac5361b33769712867.zip | |
Make gengtype more robust against user error
* doc/gty.texi ("Inheritance and GTY"): Make it clear that
to use autogenerated markers for a class-hierarchy, every class
must have a GTY marker.
* gengtype.h (struct type): Add linked list of subclasses to
the "s" member of the union.
(add_subclass): New decl.
* gengtype-state.c (read_state_struct_type): Set up subclass
linked list.
* gengtype.c (get_ultimate_base_class): New.
(add_subclass): New.
(new_structure): Set up subclass linked list.
(set_gc_used_type): Propagate usage information to subclasses.
(output_mangled_typename): Use get_ultimate_base_class.
(walk_subclasses): Use the subclass linked list, avoiding an
O(N^2) when writing out all types.
(walk_type): Issue an error if the base class is missing a tag,
rather than generating bogus C code. Add a gcc_unreachable
default case, in case people omit tags from concrete subclasses,
or get the values wrong.
(write_func_for_structure): Issue an error for subclasses for
which the base doesn't have a "desc", since otherwise the
autogenerated routines for the base would silently fail to visit
any subclass fields.
(write_root): Use get_ultimate_base_class, tweaking constness of
tp to match that function's signature.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@204148 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/classpath/lib/gnu/java/beans/decoder/PersistenceParser$ArrayHandlerCreator.class')
0 files changed, 0 insertions, 0 deletions

