1883 lines
71 KiB
Plaintext
1883 lines
71 KiB
Plaintext
|
Sun Jan 13 17:48:13 1991 Michael Tiemann (tiemann at cygint.cygnus.com)
|
||
|
|
||
|
* version.c: Bump version number to 1.38.0. Lots of work has been
|
||
|
done on GNU C++ between August and January--but that work has been
|
||
|
done to version 2.0, not to version 1.
|
||
|
|
||
|
Thu Aug 23 10:30:10 1990 Michael Tiemann (tiemann at cygnus.com)
|
||
|
|
||
|
* cplus-tree.h (CLASSTYPE_CID): Key off of TYPE_MAIN_VARIANT.
|
||
|
|
||
|
Sun Aug 19 09:58:16 1990 Michael Tiemann (tiemann at cygnus.com)
|
||
|
|
||
|
* stmt.c: Fixes from 2.0 for fixup_goto incorporated here.
|
||
|
|
||
|
* cplus-decl2.c (write_vtable_entries): Don't test TREE_EXTERNAL
|
||
|
of DECL_CONTEXT (FN). TREE_EXTERNAL is not meaningful for types.
|
||
|
|
||
|
Wed Aug 15 15:50:36 1990 Michael Tiemann (tiemann at cygnus.com)
|
||
|
|
||
|
* dbxout.c (dbxout_type): Skip past const and volatile qualifiers
|
||
|
that might appear in method names.
|
||
|
|
||
|
Mon Aug 13 10:14:37 1990 Michael Tiemann (tiemann at cygnus.com)
|
||
|
|
||
|
* cplus-decl2.c (flag_minimal_debug): Now is default is
|
||
|
-fflag-minimal-debug.
|
||
|
|
||
|
* cplus-tree.c (virtual_member): Return the assoc of a non-virtual
|
||
|
basetype that comes from a virtual baseclass. Changed callers
|
||
|
which used to call `value_member' to call virtual_member instead.
|
||
|
|
||
|
Mon Aug 6 06:44:07 1990 Michael Tiemann (tiemann at cygnus.com)
|
||
|
|
||
|
* dbxout.c (dbxout_symbol): Send out tags before sending out
|
||
|
types. Also, handle getting rtl from inline functions.
|
||
|
* dbxout.c (dbxout_parms): Get rtl from inline functions.
|
||
|
* dbxout.c (dbxout_reg_parms): Ditto.
|
||
|
|
||
|
Sun Aug 5 00:04:08 1990 Michael Tiemann (tiemann at cygnus.com)
|
||
|
|
||
|
* Merged `g++field.tar.Z' from Brown. Thanks to Steve
|
||
|
Reiss (spr@cs.brown.edu) for these changes.
|
||
|
|
||
|
* Merged `g++-for-pmax.diffs' from foobar.colorado.edu.
|
||
|
Thanks to Dirk Grunwald (grunwald@foobar.colorado.edu)
|
||
|
for making G++ work on the PMAX.
|
||
|
|
||
|
* cplus-decl2.c (grokfield): It is no longer legal to specify
|
||
|
the initializer for a static const member in the class
|
||
|
declaration. Dealing with default initializers is basically
|
||
|
impossible.
|
||
|
|
||
|
* cplus-init.c (build_delete): Don't wrap `addr' in a SAVE_EXPR
|
||
|
until it is in fact an address. This allows us to call
|
||
|
destructors on the return values of function calls.
|
||
|
|
||
|
* cplus-typeck.c (commontype): Fixed bug in OFFSET_TYPE case which
|
||
|
led to infinite recursion (since we did not reduce the types
|
||
|
before we recursed).
|
||
|
|
||
|
* cplus-lex.c (check_newline): Make `#pragma implementation' more
|
||
|
forgiving.
|
||
|
|
||
|
* cplus-init.c (expand_aggr_init): Changed Jan 20th change so that
|
||
|
we test whether TYPE has a constructor defined, and we do not test
|
||
|
at all whether INIT was from a GNU constructor expression or not.
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr_1): Don't return
|
||
|
`error_mark_node' unless there really was an error. If there is
|
||
|
no work to do, return `integer_zero_node'.
|
||
|
|
||
|
* cplus-class.c (propagate_basetype_offsets): Count the space
|
||
|
between baseclasses, not just the space they occupy.
|
||
|
|
||
|
* cplus-typeck.c (commontype): Don't drop the exceptions that are
|
||
|
raised by functions and methods.
|
||
|
|
||
|
* cplus-cvt.c (convert_to_real): Fix if/else level problem in
|
||
|
case where EXPR is of aggregate type.
|
||
|
|
||
|
* cplus-decl.c (finish_decl): Give users a chance to set a
|
||
|
breakpoint before the initialization of an object takes place.
|
||
|
|
||
|
* cplus-class.c (build_method_call): If the function we get is not
|
||
|
directly from the object we have, call `convert_pointer_to' if the
|
||
|
object uses multiple inheritance or virtual baseclasses.
|
||
|
|
||
|
* cplus-typeck.c (build_binary_op_nodefault): Don't call
|
||
|
`convert_to_pointer' with an argument that might be
|
||
|
the integer zero.
|
||
|
|
||
|
* cplus-method.c (hack_identifier): Look for DECL_REFERENCE_SLOT
|
||
|
in RESULT_DECLs as well.
|
||
|
|
||
|
* cplus-init.c (build_vec_delete): Don't forget to deallocate the
|
||
|
container if requested. Really use AUTO_DELETE and
|
||
|
AUTO_DELETE_VEC with the same interpretation as `build_delete'
|
||
|
gives to its AUTO_DELETE parameter.
|
||
|
|
||
|
Sat Aug 4 21:24:04 1990 Michael Tiemann (tiemann at cygnus.com)
|
||
|
|
||
|
* varasm.c (assemble_variable): Hack our way around the problem
|
||
|
that static class members look like initialized variables for the
|
||
|
purposes of establishing FIRST_GLOBAL_OBJECT_NAME.
|
||
|
|
||
|
* cplus-lex.c (reinit_parse_for_method): Give error message for
|
||
|
common mistake of forgetting the function body.
|
||
|
|
||
|
* cplus-typeck.c (build_component_ref): Make better error message
|
||
|
when field is not found.
|
||
|
|
||
|
* cplus-class.c (finish_struct): TYPE_GETS_*_INIT_REF comes from
|
||
|
members as well.
|
||
|
|
||
|
* cplus-typeck.c (c_expand_return): Give warning about returning
|
||
|
non-lvalues that come from functional casts.
|
||
|
|
||
|
* cplus-search.c (get_base_distance): Changed to follow leftmost
|
||
|
path only when PARENT == TYPE_MAIN_VARIANT (PARENT).
|
||
|
|
||
|
* cplus-class.c (modify_vtable_entries): Call get_base_distance
|
||
|
with 0 path_ptr, since we do not appear to use the path computed.
|
||
|
|
||
|
Sun Jul 22 12:04:43 1990 Michael Tiemann (tiemann at cygnus.com)
|
||
|
|
||
|
* cplus-except.c (cplus_expand_end_except): If the user gives a
|
||
|
default handler, the exception is considered caught in that
|
||
|
handler.
|
||
|
* cplus-parse.y (except_stmts): Rest of fix went here, in DEFAULT
|
||
|
case.
|
||
|
|
||
|
* cplus-decl.c (finish_decl): Don't emit cleanups twice.
|
||
|
|
||
|
* cplus-class.c (finish_struct_bits): Don't call
|
||
|
`fixup_vbase_offsets'.
|
||
|
* cplus-tree.c (fixup_vbase_offsets): #if 0 this function.
|
||
|
|
||
|
* expr.c (expand_expr): Bug fix from Stephen Pope in LOOP_STMT
|
||
|
handling of local variables.
|
||
|
|
||
|
* cplus-cvt.c (build_default_binary_type_conversion): Handle
|
||
|
arguments which are REFERENCE_TYPE.
|
||
|
|
||
|
* cplus-method.c (prepare_inline): Set DECL_CONTEXT of this
|
||
|
function's parameters.
|
||
|
|
||
|
* cplus-decl.c (grokfndecl): When adding a new virtual function
|
||
|
entry, RAISES may change a second time.
|
||
|
|
||
|
Thu Jul 5 10:44:39 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* cplus-decl2.c (grokfield): Static consts need not be initialized
|
||
|
in the class definition.
|
||
|
|
||
|
Mon Jul 2 06:12:49 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* cplus-init.c (resolve_offset_ref): If BASETYPE is not a base
|
||
|
type for the current class, give error and return.
|
||
|
|
||
|
Sun Jul 1 00:18:47 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* cplus-decl.c (finish_function): Throw away more code if we have
|
||
|
an inline function from the interface.
|
||
|
|
||
|
* dbxout.c (dbxout_tags): Further reduce the amount of debugging
|
||
|
information written out for class types.
|
||
|
|
||
|
* cplus-class.c (add_virtual_function): Set DECL_VINDEX from the
|
||
|
virtual function which comes from the vtable shared by
|
||
|
CURRENT_CLASS_TYPE, if possibe.
|
||
|
|
||
|
* cplus-typeck.c (build_binary_op): Call `default_conversion'
|
||
|
after doing type instantiation.
|
||
|
|
||
|
* cplus-init.c (build_new): New 2.0 interpretation: `new int (10)'
|
||
|
means allocate an int, and initialize it with 10.
|
||
|
|
||
|
* cplus-init.c (emit_base_init): Completion of fix for virtual
|
||
|
function table initialization. @@ BTW, this may now cause extra
|
||
|
virtual function table initializations. They will all be correct,
|
||
|
but they may also be redundant. GCC's optimizer doesn't know how
|
||
|
to remove even the simplest such redundancy.
|
||
|
|
||
|
Sat Jun 30 13:54:30 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* cplus-class.c (finish_base_struct): Store BASETYPE in the
|
||
|
VFIELDS chain (in its TREE_TYPE).
|
||
|
|
||
|
Fri Jun 29 09:26:17 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* cplus-class.c (build_vtable,prepare_fresh_vtable): Stash the
|
||
|
type that caused this vtable to be defined in DECL_CONTEXT
|
||
|
* cplus-search.c (bfs_unmark_finished_struct): Work around
|
||
|
DECL_CONTEXT conflict for vtables. @@ NOT A SOLUTION.
|
||
|
|
||
|
* cplus-lex.c: Extend meaning of `#pragma implementation'
|
||
|
to allow files to `implement' types from general headers.
|
||
|
|
||
|
Thu Jun 28 17:35:04 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-typeck.c (build_vbase_vtables_init): Fixed typo in code
|
||
|
that bashes LHS references.
|
||
|
|
||
|
Wed Jun 27 00:12:24 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* cplus-decl.c (pushdecl): To warn about parameter shadowing, must
|
||
|
look two levels up, not one.
|
||
|
|
||
|
* cplus-search.c (build_vbase_vtables_init): Add new parameter
|
||
|
CTOR_P which says whether we can use computed offsets to store
|
||
|
vtables into virtual sub-objects, or whether we should use
|
||
|
existing vbase pointers.
|
||
|
|
||
|
[Wrong fix: * cplus-cvt.c (convert_from_reference): Don't convert
|
||
|
from a reference to an incomplete type.]
|
||
|
* cplus-typeck.c (build_modify_expr): Give error if using a
|
||
|
reference to an incomplete type.
|
||
|
|
||
|
* cplus-class.c (pushclass): Eliminate fencepost error. Also,
|
||
|
realloc allocation unit is byte, not whatever the type of the
|
||
|
array happens to be!
|
||
|
|
||
|
Tue Jun 26 04:28:00 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* expr.c (expand_expr): Mark all {VAR,FUNCTION,CONST}_DECL nodes
|
||
|
that go through `expand_expr' as used.
|
||
|
|
||
|
* cplus-dem.c (do_type): Handle "long long" (encoded as 'x').
|
||
|
|
||
|
Mon Jun 25 01:39:53 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* dbxout.c (dbxout_type): Fix confusion that was causing
|
||
|
debugging information about constructors (for classes which did
|
||
|
not have destructors) to be omitted. Also, simplify some code.
|
||
|
|
||
|
Sat Jun 23 12:32:38 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* cplus-lex.c (interface_strcmp): Fix braino.
|
||
|
|
||
|
* cplus-decl.c (finish_function): Make all virtual function table
|
||
|
pointers point to CURRENT_CLASS_TYPE's virtual function tables.
|
||
|
|
||
|
Fri Jun 22 08:28:07 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* cplus-init.c (build_member_call): Handle case where NAME refers
|
||
|
to a member (instead of a member function) and try calling
|
||
|
overloaded CALL_EXPR.
|
||
|
|
||
|
* cplus-decl.c (maybe_build_cleanup): If a destructor is defined
|
||
|
for the type, the destructor will take care of deleting all the
|
||
|
virtual baseclasses.
|
||
|
|
||
|
* cplus-init.c (emit_base_init,expand_recursive_init_1):
|
||
|
Initialize virtual function table pointers of non-leftmost,
|
||
|
non-virtual baseclasses.
|
||
|
|
||
|
* cplus-class.c (ideal_candidate): Each TREE_VALUE (TTA) must
|
||
|
be reset from TREE_PURPOSE (TTA), whether or not that particular
|
||
|
TREE_VALUE was the result of a type conversion for the particular
|
||
|
candidate we are returning--the TREE_VALUE may have been trashed
|
||
|
by a (failed) type conversion for some other candidate.
|
||
|
|
||
|
* cplus-typeck.c (c_expand_result): Set TREE_VOLATILE bits of
|
||
|
RESULT when initializing a temporary.
|
||
|
|
||
|
Thu Jun 21 09:14:06 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-lex.c (check_newline): Handle case where #pragma
|
||
|
interface/implementation is given, but no #line precedes it.
|
||
|
|
||
|
* cplus-decl.c (start_function): If DECL1 is an inline function
|
||
|
belonging to an implemenation (as opposed to an interface), make
|
||
|
it public.
|
||
|
|
||
|
Tue Jun 19 13:55:13 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* version.c: Changed version number to 1.37.2 alpha 2.
|
||
|
|
||
|
Fri Jun 15 03:19:50 1990 Michael Tiemann (tiemann at masham)
|
||
|
|
||
|
* cplus-search.c: No longer any need for VBASE_CHAR_STAR. Use
|
||
|
VBASE_DECL_PTR in its stead.
|
||
|
|
||
|
* cplus-search.c (dfs_init_vbase_pointers): Use values computed in
|
||
|
CLASSTYPE_SEARCH_SLOT when casting to virtual baseclasses. Only
|
||
|
call `convert_pointer_to' in this function when we will *not* be
|
||
|
going through a virtual baseclass pointer. The change was needed
|
||
|
because we might have a class hierarchy with multiple virtual
|
||
|
baseclasses, and in an effort to initialize first the most-base
|
||
|
virtual baseclass, the compiler would generate code that would
|
||
|
errantly try to get there via a not-yet-initilized intermediate
|
||
|
virtual baseclass pointer.
|
||
|
|
||
|
* cplus-init.c (build_new): Don't let PENDING_SIZES be expanded
|
||
|
immediately during this function. The result of calling this
|
||
|
function should only build tree nodes, not emit any insns.
|
||
|
|
||
|
* cplus-decl.c (grok_enum_decls): If TYPE is not in scope, give
|
||
|
reasonable default behavior (instead of aborting).
|
||
|
|
||
|
* cplus-class.c (build_method_call): Fix typo in case vtable is
|
||
|
not needed.
|
||
|
|
||
|
Wed Jun 6 10:13:53 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr): Stabilize LHS and RHS if
|
||
|
neccessary.
|
||
|
|
||
|
* cplus-cvt.c (build_type_conversion): Don't convert to `void *'
|
||
|
unless this is a CONVERT_EXPR.
|
||
|
|
||
|
Tue Jun 5 07:52:36 1990 Michael Tiemann (tiemann at gzilla)
|
||
|
|
||
|
* cplus-class.c (finish_struct): Must set CLASSTYPE_INTERFACE_ONLY
|
||
|
and CLASSTYPE_VTABLE_NEEDS_WRITING bits before building the
|
||
|
virtual function table.
|
||
|
|
||
|
* cplus-lex.c (interface_strcmp): Modified to discard path
|
||
|
prefixes before comparing filenames.
|
||
|
|
||
|
Mon Jun 4 06:32:59 1990 Michael Tiemann (tiemann at gzilla)
|
||
|
|
||
|
* cplus-decl.c (finish_function): Test HAVE_return. Now needs
|
||
|
on insn-flags.h.
|
||
|
* Makefile: Depend cplus-decl.o on insn-flags.h.
|
||
|
|
||
|
* cplus-parse.y (except_stmts): Use gotos and labels to implement
|
||
|
default actions instead of wrapping it in an RTL_EXPR and emitting
|
||
|
it at the end. This is intended to cause the debugger less grief.
|
||
|
|
||
|
Sat Jun 2 13:45:45 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-class.c (build_scoped_method_call): Give error if EXP is
|
||
|
not of aggregate type.
|
||
|
|
||
|
* cplus-typeck.c (build_x_function_type): Don't be fooled by case
|
||
|
where parser thinks we have a method involving `this' (when we
|
||
|
really don't).
|
||
|
|
||
|
* cplus-decl.c (pushdecl): Use `lang_printable_name' on T instead
|
||
|
of printing directly from IDENTIFIER_POINTER (NAME).
|
||
|
|
||
|
* cplus-init.c (expand_aggr_init_1): Code which is supposed to
|
||
|
print error message was not, because FLAGS passed to
|
||
|
build_method_call were not in synch with PARMS
|
||
|
(LOOKUP_HAS_IN_CHARGE was accidently missing from FLAGS).
|
||
|
|
||
|
* cplus-init.c (build_new): Fix obscure bug where a object needing
|
||
|
larger than word alignment was getting memory at the wrong
|
||
|
address.
|
||
|
|
||
|
* expr.c (expand_expr): In LET_STMT case, expand initializers for
|
||
|
VARS, whether or not their RTL has already been defined.
|
||
|
|
||
|
* cplus-class.c (instantiate_type): If there's only one function
|
||
|
we know about, and its global, return that.
|
||
|
|
||
|
* cplus-decl.c (finish_decl): Check more cases for uninitialized
|
||
|
consts.
|
||
|
|
||
|
* cplus-method.c (fndecl_as_string): Get past the `in_charge' node
|
||
|
if a constructor uses virtual baseclasses.
|
||
|
|
||
|
* cplus-init.c (build_delete): If we are destroying base part of
|
||
|
the object, call with ADDR and the pointer to the base type
|
||
|
instead of calling with REF and the base type. This is because
|
||
|
REF may not be stable (or seemingly addressable), whereas ADDR is
|
||
|
fine and dandy.
|
||
|
|
||
|
* cplus-decl.c (grokdeclarator): Don't accept friend declarations
|
||
|
not in class definitions.
|
||
|
|
||
|
* cplus-decl2.c (grokbitfield): Don't die if user tries to declare
|
||
|
a bitfield type.
|
||
|
|
||
|
* cplus-decl.c (add_block_current_level): New function.
|
||
|
* cplus-parse.y (except_stmts): In DEFAULT case, if `compstmt' was
|
||
|
empty, cons up a block (a LET_STMT) and add it to the current
|
||
|
level.
|
||
|
|
||
|
* cplus-parse.y (except_stmts): Set TREE_LANG_FLAG_2 of `compstmt'
|
||
|
when in the default section of the catch clauses.
|
||
|
|
||
|
* All GNU C++ files: rename functions from expand_cplus_... to
|
||
|
cplus_expand_...
|
||
|
|
||
|
* dbxout.c (dbxout_{try,ehdecl,catch,end_catch_clauses}): New
|
||
|
functions to write out symbol information for exception handling.
|
||
|
(Based on TREE_LANG_FLAGs of blocks).
|
||
|
|
||
|
* cplus-except.c: Added code to set TREE_LANG_FLAGs of blocks that
|
||
|
are returned from `poplevel'. TREE_LANG_FLAG_1 means a try block;
|
||
|
TREE_LANG_FLAG_2 means a catch block; TREE_LANG_FLAG_3 means an
|
||
|
except block (which also means the end of the catch blocks).
|
||
|
* cplus-parse.y: Ditto.
|
||
|
|
||
|
* cplus-typeck.c (build_binary_op): In addition to NE_EXPR
|
||
|
comparison against INTEGER_ZERO_NODE, also allow EQ_EXPR for
|
||
|
allowable pointer conversions.
|
||
|
|
||
|
* cplus-cvt.c (build_type_conversion): Check that a conversion is
|
||
|
not ambiguous (error_mark_node) before using it immediately.
|
||
|
|
||
|
* cplus-class.c (ideal_candidate): Don't quit immediately if the
|
||
|
parameters of the derived conversion to not match the parameters
|
||
|
of the base conversion.
|
||
|
|
||
|
Tue May 22 06:06:38 1990 Michael Tiemann (tiemann at gzilla)
|
||
|
|
||
|
* cplus-cvt.c (convert_from_reference): No longer try to optimize
|
||
|
case of pulling known value from reference. We may want to do
|
||
|
this later, but it's not worth debugging now.
|
||
|
|
||
|
* cplus-decl.c (grok_reference_init): Only build temporary for
|
||
|
reference initialization if the reference type is `const'.
|
||
|
(New ANSI C++ rules). Also, change interface to return `void',
|
||
|
since it was always returning 0. Change caller to set INIT to 0
|
||
|
after calling `grok_reference_init'.
|
||
|
|
||
|
Fri May 18 14:05:38 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-class.c (build_vbase_path): Avoid crash in case syntax
|
||
|
errors got things confused and we can't find our virtual
|
||
|
baseclass.
|
||
|
|
||
|
Mon May 14 07:52:22 1990 Michael Tiemann (tiemann at gzilla)
|
||
|
|
||
|
* cplus-class.c (build_method_call): Don't use a virtual function
|
||
|
table if INSTANCE is manifestly `this' in constructor or
|
||
|
destructor.
|
||
|
|
||
|
* cplus-init.c (build_delete): Major interface change.
|
||
|
AUTO_DELETE now has additional possible values. If in the
|
||
|
program, (AUTO_DELETE & 1) is non-zero, then call free on our
|
||
|
incoming object. If (AUTO_DELETE & 2) is non-zero, then tear down
|
||
|
virtual baseclasses as well. All callers changed.
|
||
|
|
||
|
Sun May 13 15:57:48 1990 Michael Tiemann (tiemann at gzilla)
|
||
|
|
||
|
* cplus-parse.y (delete cast_expr): If the type of object being
|
||
|
destroyed has a destructor, then give the destructor full
|
||
|
authority to destroy the object. This will include destroying its
|
||
|
virtual base classes. If the type does not have a destructor
|
||
|
(cannot have multiple or virtual baseclasses in this case), then
|
||
|
perform the two-step process of destroying and then deallocating
|
||
|
the object. Also add LOOKUP_HAS_IN_CHARGE to the flags we use in
|
||
|
our call.
|
||
|
|
||
|
* cplus-decl.c (finish_function): Make sure to call the delete
|
||
|
operator when finished inside a destructor.
|
||
|
|
||
|
* cplus-init.c (build_delete): Don't change the vtables of the
|
||
|
object being deleted here.
|
||
|
* cplus-decl.c (finish_function): Change them all here (not just
|
||
|
virtual baseclasses). Uses CLASSTYPE_VFIELDS to find all the
|
||
|
vfield slots.
|
||
|
|
||
|
Sat May 12 08:13:44 1990 Michael Tiemann (tiemann at gzilla)
|
||
|
|
||
|
* cplus-typeck.c (build_x_compound_expr): New function to be
|
||
|
called when syntactic ',' operator is parsed.
|
||
|
* cplus-parse.y (expr): Call `build_x_compound_expr' instead of
|
||
|
build_compound_expr'.
|
||
|
* cplus-lex.c (init_lex): Prepare to handle operator,.
|
||
|
|
||
|
* dbxout.c (dbxout_type_fields): Write out anonymous union
|
||
|
elements.
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr): Handle case of op= where
|
||
|
operands require type conversion to some scalar reference type.
|
||
|
|
||
|
* cplus-parse.y (do_components): Give parse error if type
|
||
|
declaration in structure is not one of ENUMERAL_TYPE, UNION_TYPE,
|
||
|
or RECORD_TYPE.
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr_1): Effort to save a tree node
|
||
|
by copying a subexpression and assigning its type got GNU C++ in
|
||
|
trouble. Code now assigns the baseclasses via `get_base_ref'.
|
||
|
(get_base_ref): New function.
|
||
|
|
||
|
* cplus-lex.c (interface_strcmp): New function. Handle all files
|
||
|
whose prefix matches the initial file's prefix. A prefix in this
|
||
|
case is the string of characters up to the first `.'.
|
||
|
|
||
|
* cplus-decl.c (grok_reference_init): If the type of the
|
||
|
initializer has the same code as the type of the reference,
|
||
|
convert the initializer to the reference's target type. This
|
||
|
permits people to say things like `short &sr = 10;'.
|
||
|
|
||
|
* cplus-cvt.c (convert_to_reference): Don't convert types whose
|
||
|
sizes or codes are different (if both are non-aggr type).
|
||
|
|
||
|
* cplus-typeck (build_binary_op_nodefault): Call
|
||
|
`common_base_type' when comparing pointers with EQ_EXPR or
|
||
|
NE_EXPR.
|
||
|
|
||
|
* cplus-typeck.c (build_conditional_expr): if TYPE1 and TYPE2
|
||
|
share a common ancestor, then convert to this type instead of
|
||
|
giving type mismatch error.
|
||
|
(common_base_type): New function.
|
||
|
|
||
|
Fri May 4 00:13:44 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-decl2.c (finish_file): TREE_PUBLIC is enough to cause
|
||
|
vtable to be written out if WRITE_VIRTUALS > 0.
|
||
|
|
||
|
* cplus-class.c (prepare_fresh_vtable): Set TREE_PUBLIC and
|
||
|
TREE_EXTERNAL here according to CLASSTYPE_VTABLE_NEEDS_WRITING,
|
||
|
etc.
|
||
|
|
||
|
* cplus-typeck.c (commonparms): Free space used by common
|
||
|
parameter list if there were no changes needed to merge P1 and P2.
|
||
|
|
||
|
Thu May 3 22:56:46 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-init.c (expand_member_init): Don't be faked out by names
|
||
|
which are both typedef'd and which are class members. In the
|
||
|
future, we need to handle the whole namespace problem better, but
|
||
|
for now, if it doesn't look like a base type, treat it as a
|
||
|
member.
|
||
|
|
||
|
* cplus-typeck.c (commonparms): New function; consists of code
|
||
|
split out from `commontype'.
|
||
|
* cplus-decl.c (grokfndecl): Call `commonparms' to merge default
|
||
|
parameter information from base class into derived class virtual
|
||
|
function.
|
||
|
|
||
|
Wed May 2 22:28:51 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* dbxout.c (dbxout_type): Don't convert DECL_OFFSET (TYPE_NAME (TYPE))
|
||
|
to bits from bytes--it is already in bits.
|
||
|
|
||
|
Sun Apr 29 00:01:56 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-decl2.c (finish_file): Continue with substitution of
|
||
|
`build' with `build1' where appropriate.
|
||
|
* cplus-init.c (various places): Ditto.
|
||
|
|
||
|
Sat Apr 28 14:32:42 1990 Michael Tiemann (tiemann at gzilla)
|
||
|
|
||
|
* cplus-decl.c (maybe_build_cleanup): Call `build1' instead of
|
||
|
`build'.
|
||
|
* cplus-expr.c (cplus_expand_expr): Ditto.
|
||
|
* expr.c (various places): Ditto.
|
||
|
* cplus-typeck.c (Ditto): Ditto.
|
||
|
|
||
|
* New strategies for saving storage and time:
|
||
|
* cplus-tree.c (list_hash_lookup_or_cons): Look into VALUE to see
|
||
|
if we have a list of the kind we want. If we don't put the list
|
||
|
into HASH_LIST_TABLE.
|
||
|
* cplus-tree.c (build_decl_list_1): Same strategy, but cons
|
||
|
a temporary node if we don't.
|
||
|
* cplus-parse.y: Call `build_decl_list_1' where profitable.
|
||
|
* cplus-decl.c (grokdeclarator): Handle missing declarator names
|
||
|
more gracefully.
|
||
|
* cplus-decl2.c (groktypefield): Handle a RECORD_TYPE in
|
||
|
DECLSPECS.
|
||
|
|
||
|
Thu Apr 26 18:25:31 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* Merged changes to make #pragma dump and -fundump-... work with
|
||
|
#pragma interface and #pragma implementation. Also, use mmap on
|
||
|
Sun instead of reading all bits from a dumped file.
|
||
|
|
||
|
Wed Apr 25 10:06:44 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* toplev.c (rest_of_compilation): Rewire inline logic to avoid
|
||
|
most calls to `save_for_inline'.
|
||
|
* integrate.c (save_for_outline): New function; saves functions
|
||
|
which are normally inline, but may need to be outlined later.
|
||
|
|
||
|
* cplus-tree.c (layout_basetypes): Clear CLASSTYPE_VIA_VIRTUAL if
|
||
|
BASETYPE is incomplete.
|
||
|
|
||
|
* cplus-tree.h: Change respresentation of `type_lang_specific' to
|
||
|
keep conversions in array rather than in separate variables.
|
||
|
* cplus-tree.h: Use enum conversion_type to index into the
|
||
|
conversion array.
|
||
|
* cplus-class.c: Replace random logic with loop that iterates
|
||
|
across conversion types.
|
||
|
|
||
|
Tue Apr 24 00:36:02 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-decl{2}.c: Finally get #pragma interface and #pragma
|
||
|
implemenetation working.
|
||
|
|
||
|
* cplus-{decl2,lex,init,method}.c: "__user_new" is gone. It has
|
||
|
been replaced uniformly with OPERATOR_NEW_FORMAT.
|
||
|
* cplus-init.c (build_new): Parameter USER_PARMS is renamed
|
||
|
PLACEMENT.
|
||
|
|
||
|
* cplus-parse.y (primary): Handle case where `operator_name' is an
|
||
|
here-to-fore unknown operator.
|
||
|
* cplus-class.c (build_instantiated_decl): Pass &EXP instead of
|
||
|
&TREE_VALUE (EXP) to `build_operator_fnname'. All other calls to
|
||
|
that function pass the address of an OP_IDENTIFIER.
|
||
|
|
||
|
* cplus-decl.c (finish_function): Call `convert_pointer_to_vbase'
|
||
|
instead of `convert_pointer_to'; this saves an abort when the
|
||
|
lattice contains both virtual and non-virtual versions of a
|
||
|
baseclass we are looking for.
|
||
|
|
||
|
* cplus-decl2.c (setup_vtable_pointer): Cast initializer to
|
||
|
CURRENT_VTABLE_DECL in case it is more basic than we want it.
|
||
|
|
||
|
* cplus-typeck.c (build_c_cast): Handle casting one reference type
|
||
|
to another.
|
||
|
|
||
|
* cplus-cvt.c (build_type_conversion): More creativity in ways of
|
||
|
finding type conversions.
|
||
|
|
||
|
* cplus-typeck.c (build_binary_op): Code simplified.
|
||
|
|
||
|
* cplus-class.c (build_vbase_path): Incorprate Vasta's fix which
|
||
|
resets CODE to PLUS_EXPR once we have used it. Otherwise, OFFSET
|
||
|
might be twice negated.
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr): Since we don't know about
|
||
|
potential aliases, unless -felide-constructors is set, treat
|
||
|
"x = F(y);" as "t = F(y), x = t" if x's TREE_TYPE is
|
||
|
TREE_ADDRESSABLE.
|
||
|
|
||
|
* cplus-decl.c (finish_function): If CLEANUP_LABEL is non-zero,
|
||
|
effectively do a jump to RETURN_LABEL in case the user has -Wall
|
||
|
turned on. This causes the right things to happen to
|
||
|
NOTE_INSN_FUNCTION_END.
|
||
|
|
||
|
* cplus-decl.c (grokvardecl): Give error if static member is
|
||
|
multiply initialized. `duplicate_decls' will never be called for
|
||
|
this case, hence it cannot warn us.
|
||
|
|
||
|
* cplus-decl.c (grokdeclarator): CONSTP is meaningless for
|
||
|
REFERENCE_TYPEs.
|
||
|
|
||
|
* cplus-typeck.c (actualparameterlist): Don't make an OFFSET_REF
|
||
|
of something that is already an OFFSET_REF.
|
||
|
|
||
|
Sun Apr 22 18:38:35 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-method.c (build_opfncall): ARG3 holds the PLACEMENT of a
|
||
|
user-defined new operator.
|
||
|
|
||
|
* cplus-init.c (build_new): Interface change now takes
|
||
|
USE_GLOBAL_NEW as parameter. All callers changed.
|
||
|
|
||
|
Wed Apr 18 10:10:09 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-search.c (dfs_record_inheritance): Use TYPE_MAIN_VARIANT
|
||
|
of BASECLASS.
|
||
|
|
||
|
* cplus-search.c (report_ambiguous_mi_virtuals): Don't crash if
|
||
|
MI_VMATRIX is not fully populated (i.e., there are zero entries in
|
||
|
between non-zero ones).
|
||
|
|
||
|
Fri Apr 13 09:07:36 1990 Michael Tiemann (tiemann at suntana)
|
||
|
|
||
|
* expr.c (expand_call): Don't defer popping if this is a call to
|
||
|
setjmp, longjmp (or a related function).
|
||
|
|
||
|
Wed Apr 11 09:49:33 1990 Michael Tiemann (tiemann at gzilla)
|
||
|
|
||
|
* cplus-typeck.c (build_component_ref): When taking address of
|
||
|
bound member function, don't forget to convert DATUM to
|
||
|
DECL_VCONTEXT of FIELD.
|
||
|
|
||
|
Sat Apr 7 12:49:13 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-search.c (get_first_matching_virtual): Don't crash if
|
||
|
redeclaring a virtual function `static'.
|
||
|
|
||
|
Thu Apr 5 04:45:13 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-class.c (finish_struct): Remove warning about structures
|
||
|
which have no data members.
|
||
|
|
||
|
* expr.c (expand_expr): Do not call `use_variable' on a TYPE_DECL
|
||
|
of STMT_VARs.
|
||
|
|
||
|
Tue Apr 3 07:48:47 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-typeck.c (c_expand_start_case): Make this function handle
|
||
|
expressions that can be converted to integer types via type
|
||
|
conversion operators.
|
||
|
|
||
|
* cplus-decl.c (start_function): If there was a previous `extern "C"'
|
||
|
declaration when a function is defined in C++ langauge scope, give
|
||
|
error message if argument types line up, but return types do not.
|
||
|
|
||
|
Mon Apr 2 13:38:22 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-lex.c (check_newline): Recognize `#pragma interface'.
|
||
|
* cplus-tree.c (lang_output_debug_info): Implement action for
|
||
|
`#pragma interface'.
|
||
|
* cplus-decl{2}.c: Various hacks to make this work.
|
||
|
|
||
|
* cplus-class.c (finish_struct): Added new slots for
|
||
|
CLASSTYPE_INT_CONVERSION and CLASSTYPE_REAL_CONVERSION to simplify
|
||
|
picking up these conversions when narrower or wider conversions
|
||
|
(than the default type) are provided.
|
||
|
|
||
|
* cplus-cvt.c (build_up_reference): When building `X&' via an
|
||
|
`operator X ()', build it into a temporary, and return the
|
||
|
COMPOUND_EXPR which first computes the conversion and second has
|
||
|
the value of the temporary's address.
|
||
|
|
||
|
Sun Apr 1 17:28:35 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-decl.c (build_enumerator): Handle case where VALUE is a
|
||
|
constant VAR_DECL.
|
||
|
|
||
|
Fri Mar 30 02:16:34 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-class.c (build_{scoped_}method_call): Handle calls to
|
||
|
destructor according to anticipated ANSI C++ rules. p->X::~X ()
|
||
|
should call destructor (without calling `operator delete').
|
||
|
p->~X () should do likewise, but use a virtual lookup (perhaps).
|
||
|
|
||
|
* cplus-class.c (compute_conversion_costs): Permit conversion to
|
||
|
`X&' when only `operator X' exists.
|
||
|
|
||
|
Thu Mar 29 18:14:31 1990 Michael Tiemann (tiemann at rio)
|
||
|
|
||
|
* cplus-init.c (finish_base_init): Function changed to...
|
||
|
* cplus-init.c (emit_base_init): ...this. Emit the base
|
||
|
initializer to BASE_INIT_INSNS, as a sequence.
|
||
|
* cplus-init.c (check_base_init): New function: test that member
|
||
|
variables are not used before they are initialized.
|
||
|
* All callers changed.
|
||
|
|
||
|
Wed Mar 28 17:27:37 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-init.c (build_new): If space is allocated for constructor,
|
||
|
call `build_method_call' with flags saying that the constructor is
|
||
|
in charge.
|
||
|
|
||
|
Tue Mar 27 22:20:37 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-init.c (build_virtual_init): Convert virtual function
|
||
|
table address to type of virtual function table pointer. These
|
||
|
may now compare as different, since array sizes between base and
|
||
|
derived classes may be different.
|
||
|
|
||
|
* cplus-parse.y (init_parse): Make room for ENDFILE, which has the
|
||
|
value (-1).
|
||
|
|
||
|
Mon Mar 26 09:00:27 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* toplev.c (FLAG_INLINE_DEBUG): New flag to control whether
|
||
|
inlines get debugging information or not.
|
||
|
* cplus-decl2.c (LANG_F_OPTIONS): Implemented.
|
||
|
* integerate.c (expand_inline_functions): Implemented.
|
||
|
* cplus-except.c (init_exception_processing): Make it possible for
|
||
|
user to declare `exceptionHandlerStack' her/himself.
|
||
|
|
||
|
Sun Mar 25 05:04:06 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-init.c (build_delete): Remove assertion that
|
||
|
CLASSTYPE_OFFSET of BASETYPE must be non-zero for baseclasses 2
|
||
|
through N. The first non-virtual baseclass need not be the first
|
||
|
baseclass, and it will be the one with a zero offset.
|
||
|
|
||
|
* cplus-except.c (call_to_unhandled_exception): Adjust length
|
||
|
argument to `build_string'.
|
||
|
|
||
|
* cplus-dem.c: Apply James Clark's patches.
|
||
|
|
||
|
* cplus-decl.c (start_decl): If DECL is static and non-permanent,
|
||
|
and DECL needs destroying, make DECL permanent. If there are
|
||
|
components of DECL's type which need to be made permanent, make
|
||
|
them permanent as well.
|
||
|
|
||
|
* cplus-decl.c (grokdeclarator): Fix bugoid in SCOPE_REF case.
|
||
|
|
||
|
* cplus-decl.c (finish_decl): Wait to build CLEANUP from DECL
|
||
|
until after completing its array type.
|
||
|
|
||
|
* cplus-typeck.c (build_unary_op): If ARG is an OFFSET_REF,
|
||
|
resolve it before trying to increment (or decrement) it.
|
||
|
|
||
|
* cplus-class.c (finish_struct_bits): When looking for type
|
||
|
conversion operators, test METHOD_VEC against NULL_TREE (in case
|
||
|
there is a conversion from a base class, and the derived class
|
||
|
defines no methods).
|
||
|
|
||
|
* cplus-cvt.c (build_up_reference): Don't try to build up a
|
||
|
reference to an aggregate type which is not derived from another.
|
||
|
|
||
|
* cplus-type2.c (build_functional_cast): Fixed typo.
|
||
|
|
||
|
* cplus-typeck.c (comptypes): Break out code for ARRAY_TYPE case.
|
||
|
* cplus-typeck.c (comp_array_types): Function for that code.
|
||
|
* cplus-typeck.c (comptypes,comp_target_types): Call
|
||
|
`comp_array_types' for ARRAY_TYPE case.
|
||
|
|
||
|
* cplus-class.c (build_method_call): Don't give error if
|
||
|
LOOKUP_COMPLAIN is not in FLAGS.
|
||
|
|
||
|
* cplus-init.c (expand_aggr_init_1): When looking for
|
||
|
constructors, if XXREF_INIT_POSSIBLE is LOOKUP_SPECULATIVELY,
|
||
|
clear out LOOKUP_COMPLAIN, since failure of a particular
|
||
|
constructor can be managed by performing X(X&) initialization. If
|
||
|
that fails, the caller of that attempted initialization will give
|
||
|
the error message.
|
||
|
|
||
|
* cplus-decl2.c (coerce_delete_type): Simplify code, and make it
|
||
|
work in the presence of delete type with TYPE_ARG_TYPES (type) ==
|
||
|
NULL_TREE.
|
||
|
|
||
|
* tree.c (array_type_nelts): Give error if this function is called
|
||
|
with incomplete type.
|
||
|
|
||
|
Sat Mar 24 19:23:19 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* stmt.c (expand_function_start): Emit note that parms are in
|
||
|
their homes.
|
||
|
|
||
|
* cplus-typeck.c (build_unary_op): Function types can have unary
|
||
|
`!' applied to them.
|
||
|
|
||
|
* stmt.c (expand_expr_stmt): Don't warn about unused expressions
|
||
|
that are explicitly cast to void.
|
||
|
|
||
|
Sat Mar 10 05:23:36 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-lex.c (reinit_parse_for_method): Try to give user some
|
||
|
clue as to where the problem is if method declaration looks wrong.
|
||
|
|
||
|
* Makefile: Better handling of cadillac vs non-cadillac
|
||
|
compilation.
|
||
|
* cplus-cadillac.c: Updates for latest protocol.
|
||
|
|
||
|
* cplus-cvt.c (build_type_conversion): Don't crash if EXPR is
|
||
|
ERROR_MARK_NODE.
|
||
|
|
||
|
* cplus-class.c (build_method_call): Check for return of
|
||
|
`error_mark_node' from call to `build_new'.
|
||
|
|
||
|
Fri Mar 9 11:29:04 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr): Check TREE_READONLY bit if
|
||
|
reference type.
|
||
|
|
||
|
Mon Mar 5 14:54:12 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* integrate.c (expand_inline_function): Forget about register
|
||
|
constancy if somebody clobbers a part of the register via a
|
||
|
STRICT_LOW_PART, SUBREG, SIGN_EXTRACT or ZERO_EXTRACT operation.
|
||
|
|
||
|
* integrate.c (output_inline_function): LAST was unitialized due
|
||
|
to #if 0. Moved #if 0 inside of loop.
|
||
|
|
||
|
Sun Mar 4 04:12:53 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-init.c (build_new): Unless eliding constructors, we must
|
||
|
go through constructors if they are defined.
|
||
|
|
||
|
* cplus-decl.c (start_function): Protect binding level of parms by
|
||
|
calling `pushlevel' in here...
|
||
|
* cplus-decl.c (finish_function): ...instead of here. Make sure
|
||
|
we call corresponding `poplevel' on both constructor paths.
|
||
|
|
||
|
* cplus-init.c (finish_base_init): If handling exceptions for
|
||
|
Spring, must always have IN_CHARGE_IDENTIFIER doing its thing for
|
||
|
constructors.
|
||
|
|
||
|
* cplus-except.c (finish_exception_decl): Don't pretend that CTOR
|
||
|
is not a constructor.
|
||
|
|
||
|
* cplus-decl.c (start_function): Force constructors to `return'
|
||
|
via CTOR_LABEL.
|
||
|
|
||
|
* cplus-decl.c (init_decl_processing): If handling exceptions for
|
||
|
Spring, set FLAG_THIS_IS_VARIABLE to 2.
|
||
|
|
||
|
* cplus-init.c (finish_base_init): Handle exceptions for Spring.
|
||
|
|
||
|
* cplus-decl.c (in_parm_level_p): Function deleted.
|
||
|
* cplus-decl.c (have_exceptions_p): New function.
|
||
|
|
||
|
* Integrate changes for cadillac.
|
||
|
|
||
|
Sat Mar 3 11:52:13 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-parse.y (stmt): Implement `reraise ep;'.
|
||
|
* cplus-except.c (expand_cplus_reraise): Handle case where
|
||
|
EXCEPTIONS is an exception object to be reraised.
|
||
|
|
||
|
* integrate.c (copy_decl_tree): Try latest fixes for GCC 2.0 to
|
||
|
improve GNU C++'s handing of inline functions.
|
||
|
|
||
|
* cplus-init.c (expand_aggr_vbase_init): Delete this function
|
||
|
static.
|
||
|
|
||
|
* cplus-tree.h (TREE_ANON_UNION_ELEM): Use TREE_REGDECL instead of
|
||
|
common.regdecl_attr.
|
||
|
* cplus-tree.h (DECL_ANON_UNION_ELEM): Ditto.
|
||
|
* cplus-tree.h (TREE_PARMLIST): Use `unsigned_attr' instead of
|
||
|
`regdecl_attr'.
|
||
|
* cplus-tree.h (TREE_VIA_PUBLIC): Use `used_attr' instead of
|
||
|
`public_attr'.
|
||
|
* cplus-tree.h (TREE_VIA_PROTECTED): Use `literal_attr' instead of
|
||
|
`public_attr'.
|
||
|
* cplus-tree.h (TREE_VIA_VIRTUAL): Ditto.
|
||
|
|
||
|
Thu Mar 1 19:32:03 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* version.c: version 1.37.1 released.
|
||
|
|
||
|
* integrate.c (expand_inline_function): Round up size of parm_map.
|
||
|
|
||
|
* g++.texinfo: Updated to version 1.37.1, including the addition
|
||
|
of a new chapter on exception handling.
|
||
|
|
||
|
* ld.c: Fixed #ifdef problems introduced by Mark Ullman.
|
||
|
|
||
|
* cplus-parse.y (print_parse_statistics): Modified to work in case
|
||
|
YYDEBUG is not defined.
|
||
|
|
||
|
Wed Feb 28 09:45:09 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* version.c: version 1.37.0 released.
|
||
|
|
||
|
* HINTS: Hacked to look like an RMAIL file.
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr_1): Copy virtual baseclasses
|
||
|
of members.
|
||
|
|
||
|
Mon Feb 26 06:36:50 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-class.c (finish_base_struct): When building B->VFIELDS,
|
||
|
use precisely the right baseclass in the TREE_PURPOSE slot.
|
||
|
* cplus-class.c (modify_vtable_entries): Add additional test of
|
||
|
normalcy, which is that TREE_PURPOSE (VSLOTS) agree with the
|
||
|
basetype that TREE_VALUE (VSLOTS) is.
|
||
|
|
||
|
* cplus-decl.c (finish_decl): If ASMSPEC_TREE is non-zero, then
|
||
|
zero out DECL_RTL (DECL). Otherwise, it won't take.
|
||
|
|
||
|
Sun Feb 25 03:50:08 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr): Fix off-by-one bug in array
|
||
|
assignment case.
|
||
|
|
||
|
* cplus-init.c (cplus_expand_expr_stmt): Move function from here...
|
||
|
* cplus-decl.c (cplus_expand_expr_stmt): ...to here. Now we can
|
||
|
handle binding-level semantics at `exprstmt' boundaries.
|
||
|
|
||
|
* cplus-decl.c (lang_decode_option): Moved function from here...
|
||
|
* cplus-decl2.c (lang_decode_option): ...to here. Also moved
|
||
|
flags around, as neccessary.
|
||
|
|
||
|
* cplus-method.c (various places): Call `dump_readonly_or_volatile'
|
||
|
in many more places (saving 624 bytes object code).
|
||
|
|
||
|
* tree.h (struct tree_common): Add `raises_attr' and define
|
||
|
TREE_RAISES.
|
||
|
* tree.c (build{,1}): Set TREE_RAISES bit.
|
||
|
* cplus-class.c (build_method_call): Set TREE_RAISES bit.
|
||
|
* cplus-cvt.c (convert_to_aggr): Ditto.
|
||
|
* cplus-typeck.c (build_function_call,actualparameterlist): Ditto.
|
||
|
* cplus-init.c (expand_aggr_init_1): Don't know what to do about
|
||
|
TREE_RAISES, so #if 0'd out code to set it.
|
||
|
|
||
|
* cplus-decl.c (struct binding_level): Add new fields
|
||
|
`more_exceptions_ok' and `have_exceptions'.
|
||
|
|
||
|
Sat Feb 24 14:05:01 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-decl.c (finish_function): Move code up that handles named
|
||
|
return values that got kicked out of registers (hard or pseudo).
|
||
|
|
||
|
* stmt.c (expand_function_start): Failed to set TREE_REGDECL in
|
||
|
the case that PARMS_HAVE_CLEANUPS was nonzero.
|
||
|
|
||
|
* stmt.c (expand_goto_internal,fixup_cleanups): After running
|
||
|
cleanups, fixup the stack.
|
||
|
|
||
|
Fri Feb 23 07:40:17 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-cvt.c (build_type_conversion): There is only one void
|
||
|
type, so don't try looking "default" void to see if different.
|
||
|
|
||
|
* cplus-except.c (expand_cplus_end_catch): Call `expand_end_catch'
|
||
|
instead of `expand_escape_except'.
|
||
|
|
||
|
* cplus-except.c (expand_cplus_{end_except,reraise}): In case of
|
||
|
unhandled exceptions, have the program call
|
||
|
`__unhandled_exception' instead of `abort'.
|
||
|
|
||
|
* cplus-class.c (ideal_candidate): If the best candidate requires
|
||
|
a strict subset of the user-defined type conversions of all the
|
||
|
other candidates, pick it as the best.
|
||
|
|
||
|
* cplus-type2.c (build_functional_cast): If both attempts to cast
|
||
|
the argument failed, see why with LOOKUP_NORMAL, not
|
||
|
LOOKUP_COMPLAIN.
|
||
|
|
||
|
Thu Feb 22 03:52:00 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* clpus-decl.c ({push,pop}_decl_level): Now #includes "stack.h"
|
||
|
and uses `{push,pop}_stack_level'.
|
||
|
|
||
|
* cplus-decl.c (hack_incomplete_structures): Now also completes
|
||
|
arrays of incomplete structs.
|
||
|
|
||
|
* cplus-lex.c (build_operator_fnname): Don't get faked out by
|
||
|
ERROR_MARK as the TREE_CODE.
|
||
|
|
||
|
* stor-layout.c (layout_{record,union}): For loops over fields,
|
||
|
skip if TREE_CODE (field) != FIELD_DECL, instead of testing if ==
|
||
|
CONST_DECL or VAR_DECL or TYPE_DECL etc.
|
||
|
|
||
|
* cplus-decl.c (pushtag): Do gratuitous C++ typedefing even when
|
||
|
in C language scope. Sigh.
|
||
|
|
||
|
* cplus-decl.c (xref_tag): Don't assume CODE == TREE_CODE (REF).
|
||
|
It's not when the user redeclares REF as the wrong kind of tag.
|
||
|
|
||
|
* cplus-search.c (dfs_init_vbase_pointers): Use TREE_PURPOSE of
|
||
|
VBASE_INIT_RESULT to hold the type of the virtual baseclass that
|
||
|
was initialized.
|
||
|
* cplus-init.c (expand_aggr_vbase_init): Walk through RESULT and
|
||
|
INIT_LIST in the order of CLASSTYPE_VBASECLASSES.
|
||
|
* cplus-init.c (expand_aggr_vbase_init_1): New function.
|
||
|
|
||
|
* cplus-decl.c (finish_function): Test CLASSTYPE_VSIZE before
|
||
|
calling `build_virtual_init'.
|
||
|
|
||
|
to do: fix protected squeaking through with -fsave-memoized
|
||
|
to do: unify code in expand_vec_init, expand_vec_delete
|
||
|
to do: for-local objects with destructors do not land in the right
|
||
|
cleanup contour.
|
||
|
to do: fix complicated multiple inheritance bugs that strike when
|
||
|
baseclasses are not virtual, and appear at multiple sites within
|
||
|
the lattice.
|
||
|
to do: integrate.c vs GCC.
|
||
|
to do: virtual functions for Convex and Choices
|
||
|
to do: real pointers to members
|
||
|
|
||
|
Mon Feb 19 13:48:30 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-decl.c (grokdeclarator): Fix up ENUMERAL_TYPEs which are
|
||
|
ANON_AGGR_NAME_P.
|
||
|
|
||
|
* cplus-cvt.c (convert): If we know a type conversion applies,
|
||
|
don't try for fancy constructors.
|
||
|
|
||
|
* cplus-decl.c (build_enumerator): TREE_TYPE (VALUE) must always
|
||
|
be INTEGER_TYPE_NODE before calling `build_binary_op_nodefault'.
|
||
|
|
||
|
* cplus-decl.c (complete_array_type): Merged GCC 1.37 code.
|
||
|
* integrate.c (copy_for_inline): Ditto.
|
||
|
* cplus-decl.c (grokdeclarator): Ditto.
|
||
|
* stor-layout.c (layout_type): Ditto.
|
||
|
|
||
|
Sat Feb 17 08:49:21 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-typeck.c (require_instantiated_type): Make non-static.
|
||
|
* cplus-typeck.c (type_unknown_p): New function, returns
|
||
|
truthvalue of whether the TREE_TYPE of its argument is known.
|
||
|
* cplus-class.c (various places): Changed to call these functions.
|
||
|
|
||
|
Fri Feb 16 15:17:54 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-class.c (finish_struct): Cons up default destructors when
|
||
|
T uses virtual baseclasses or multiple inheritance, in addition to
|
||
|
the usual cases.
|
||
|
|
||
|
* integrate.c (copy_rtx_and_substitute): If we were needing an
|
||
|
inline target (for example, a USE of the function return result),
|
||
|
and we don't have one, just cons one up.
|
||
|
|
||
|
* cplus-init.c (expand_vec_init): Comparison of HOST_I against
|
||
|
zero should have been >=, not >.
|
||
|
|
||
|
* cplus-dem.c: Fix #defines to use bcopy, bcmp instead of the str
|
||
|
functions.
|
||
|
|
||
|
* cplus-cvt.c (convert): If converting to void type, check for
|
||
|
possible operator void.
|
||
|
|
||
|
* stmt.c (fixup_cleanups): If cleanups expand to nothing, don't
|
||
|
call `reorder_insns'.
|
||
|
|
||
|
* cplus-search.c ({push,pop}_stack_level): New functions.
|
||
|
Abstracts functionality of pushing/popping objects to/from
|
||
|
obstacks.
|
||
|
* cplus-search.c ({push,pop}_search_level): Use new *_stack_level
|
||
|
functions.
|
||
|
* cplus-search.c ({push,pop}_type_level): Ditto.
|
||
|
|
||
|
Tue Feb 13 11:32:12 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-init.c (build_delete): This function can get visibilities
|
||
|
wrong if default destructors are not built (currently the case).
|
||
|
As a temporary fix, pass FLAGS with LOOKUP_PROTECTED_OK for base
|
||
|
destructor calls, and test LOOKUP_PROTECTED_OK when thinking about
|
||
|
complaining.
|
||
|
|
||
|
Sun Feb 11 11:47:37 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-decl.c (finish_function): Don't call `build_virtual_init'
|
||
|
for types which don't have virtual functions. Similarly, don't
|
||
|
call `build_delete' if it doesn't need a destructor.
|
||
|
|
||
|
* cplus-init.c (finish_base_init,build_delete): When building up
|
||
|
and tearing down objects' bases, build pointers to base objects
|
||
|
directly rather than by calling through `convert_pointer_to',
|
||
|
since ambiguity in the lattice causes it trouble.
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr): Removed unneeded casts when
|
||
|
building sum of base address + offset.
|
||
|
* cplus-class.c (build_vbase_path): Ditto.
|
||
|
* cplus-class.c (build_vfn_ref): Ditto.
|
||
|
* cplus-init.c (resolve_offset_ref): Ditto.
|
||
|
* cplus-init.c (build_delete): Ditto.
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr): Fix parenthesis error for
|
||
|
deciding whether to recurse through aggregates or not
|
||
|
(TYPE_USES_VIRTUAL_BASECLASSES is not enough).
|
||
|
|
||
|
* cplus-parse.y (try): Change type from TTYPE to ITYPE.
|
||
|
* cplus-parse.y (stmt): Call `cplus_expand_end_try' with result of
|
||
|
`try' stmt. Now, if we wanted to, we could pass additional
|
||
|
information about whether this try block is followed by an except
|
||
|
stmt or a reraise clause.
|
||
|
* cplus-parse.y (stmt): When processing a reraise clause, use
|
||
|
ERROR_MARK_NODE as the default handler, to indicate that we
|
||
|
actually have one, rather than NULL_TREE, which claims that we
|
||
|
don't.
|
||
|
* cplus-except.c (cplus_expand_end_except): Always try next
|
||
|
handler before ending the block.
|
||
|
|
||
|
Sat Feb 10 13:57:28 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-init.c (build_delete): Use `convert_pointer_to' when ADDR
|
||
|
is TREE_LITERAL.
|
||
|
|
||
|
* cplus-class.c (build_vfn_ref): Save intermediate result in
|
||
|
SAVE_EXPR so we don't have to compute each component of virtual
|
||
|
function pointer twice. But only do this when BUILDING_CLEANUP
|
||
|
is zero.
|
||
|
* cplus-decl.c (maybe_build_cleanup): New global variable
|
||
|
BUILD_CLEANUP is controlled by this function.
|
||
|
|
||
|
* cplus-expr.c (cplus_expand_expr): Use separate CALL_TARGET and
|
||
|
RETURN_TARGET, in case call to `expand_expr' returns something
|
||
|
different than CALL_TARGET in NEW_EXPR case.
|
||
|
|
||
|
Fri Feb 9 04:00:42 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-lex.c (getch): New function. Encapsulates call to `getc'
|
||
|
macro within function to save space.
|
||
|
* cplus-lex.c (check_newline): Call `getch' instead of `getc' to
|
||
|
get pragma text.
|
||
|
|
||
|
Mon Feb 5 13:55:33 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-decl.c (grokdeclarator): Don't gripe if static member has
|
||
|
incomplete type.
|
||
|
|
||
|
Sun Feb 4 19:51:52 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-class.c (modify_vtable_entries): Fix failure to use
|
||
|
proper initial value for OFFSET.
|
||
|
|
||
|
* cplus-tree.c (layout_vbasetypes): Gross error was accidently
|
||
|
causing storage to be exponentially counted! Fixed...
|
||
|
|
||
|
* cplus-decl.c (duplicate_decls): Catch case where OLDDECLS are
|
||
|
some overloaded functions and NEWDECL is not a FUNCTION_DECL.
|
||
|
|
||
|
* cplus-init.c (finish_base_init): If there are several members
|
||
|
with the same name (from different baseclasses), get the topmost
|
||
|
one.
|
||
|
|
||
|
* cplus-tree.c (lang_simple_cst_equal): New function. Callback
|
||
|
for `simple_cst_equal'.
|
||
|
* tree.c (simple_cst_equal): Needs new treatment for handling
|
||
|
NEW_EXPR and CPLUS_NEW_EXPR. Use call-back for latter.
|
||
|
* tree.c (simple_cst_list_equal): Now non-static.
|
||
|
|
||
|
* integrate.c (expand_inline_function): Use `convert_move' instead
|
||
|
of `emit_move_insn' when we need to copy INLINE_TARGET back to
|
||
|
TARGET.
|
||
|
|
||
|
Sat Feb 3 09:45:47 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* ld.c: integrate changes from Mark Ullman which make linker
|
||
|
suitable for cross linking.
|
||
|
|
||
|
Thu Feb 1 16:27:03 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-expr.c (cplus_expand_expr): If TARGET is 0, generate a new
|
||
|
temporary, unless MODE is BLKmode, in which case we abort.
|
||
|
|
||
|
Tue Jan 30 02:55:20 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* version.c: version 1.36.4 released.
|
||
|
|
||
|
* cplus-decl.c (build_enumerator): Make it impossible to lose if
|
||
|
ENUM_NEXT_VALUE is something like INTEGER_ONE_NODE.
|
||
|
|
||
|
* tree.c (build_int_2): Don't need to set TREE_LITERAL here, it is
|
||
|
set in `make_node'.
|
||
|
* tree.c (make_node): Increment `TREE_NODE_KINDS[C_KIND]' for
|
||
|
INTEGER_CST nodes.
|
||
|
|
||
|
* cplus-init.c (expand_aggr_init_1): NEW_EXPR now encapsulates new
|
||
|
information (due to compiler merging); lossage fixed.
|
||
|
|
||
|
* case.c (various places): Replace calls to `build_int_2 (x, 0)'
|
||
|
(where x == 0 or x == 1) with INTEGER_{ZERO,ONE}_NODE as
|
||
|
appropriate.
|
||
|
|
||
|
* cplus-typeck.c (build_component_addr): Break out code to build
|
||
|
the ADDR_EXPR of a COMPONENT_REF from `build_unary_op'.
|
||
|
* cplus-cvt.c (build_up_reference): Call `build_component_addr' in
|
||
|
case of COMPONENT_REF.
|
||
|
|
||
|
Sun Jan 28 04:39:54 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-init.c (build_vec_delete): Set TREE_VOLATILE on BLOCK,
|
||
|
LOOP, and IF_STMT, to avoid spurious warning messages about
|
||
|
statements not being useful.
|
||
|
* stmt.c (warn_if_unused_value): Don's warn for LOOP_STMT,
|
||
|
IF_STMT, or LET_STMT.
|
||
|
|
||
|
* cplus-decl.c (build_enumerator): Prepare for fact that `fold'
|
||
|
might put NOP_EXPRs around everything that is not an lvalue.
|
||
|
|
||
|
* cplus-method.c (build_opfncall): New parameter FLAGS.
|
||
|
Don't lose unless FLAGS include LOOKUP_COMPLAIN; there's always a
|
||
|
chance that a type conversion will work, after all.
|
||
|
* All callers changed.
|
||
|
|
||
|
* cplus-cvt.c (build_type_conversion): Permit `operator int' to
|
||
|
convert when `unsigned' is wanted (provided no `operator unsigned'
|
||
|
exists). Same for `long' and `unsigned long'.
|
||
|
|
||
|
* cplus-expr.c: New file. Contains definition of new function
|
||
|
`cplus_expand_expr'.
|
||
|
|
||
|
* cplus-lex.c (init_lex): Initialize LANG_EXPAND_EXPR.
|
||
|
|
||
|
* toplev.c (LANG_EXPAND_EXPR): New variable is pointer-to-function
|
||
|
which expands language-specific tree codes. Its default is
|
||
|
`fancy_abort'.
|
||
|
* cplus-tree.def (CPLUS_NEW_EXPR): New tree code.
|
||
|
|
||
|
Sat Jan 27 09:30:13 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* tree.c (decl_type_context): Handle LET_STMT.
|
||
|
|
||
|
* stmt.c (expand_catch): Renaming of function
|
||
|
`expand_start_catch'. This function no longer takes EXITFLAG or
|
||
|
ESCAPEFLAG as parameters (which is just as well, since it never
|
||
|
used them anyway).
|
||
|
* cplus-except.c (expand_cplus_start_catch): Caller changed.
|
||
|
* cplus-parse.y: Removed vestigial call to `expand_end_catch'.
|
||
|
|
||
|
* cplus-decl.c (duplicate_decls): Use FUNCTION_SIZE as measure of
|
||
|
size of FUNCTION_DECL.
|
||
|
|
||
|
* cplus-class.c (finish_base_struct): Get a fresh assoc list for
|
||
|
BASETYPE before calling `propagate_basetype_offsets'. Also, copy
|
||
|
the language-specific parts of BASETYPE.
|
||
|
* cplus-class.c (propagate_basetype_offsets): FOR_TYPE now owns
|
||
|
its assoc list for sure.
|
||
|
|
||
|
* cplus-class.c (build_vbase_path): Convert EXPR at each stage of
|
||
|
the lowering so that we don't get multiple calls to
|
||
|
`build_vbase_path' when we try to build the vbase pointer.
|
||
|
@@ This could probably be solved more cleanly.
|
||
|
|
||
|
@@ Note that COMPONENT_REFs used as instance variables in method
|
||
|
calls lose the fact that they were of fixed type.
|
||
|
|
||
|
* cplus-decl.c (LANG_F_OPTIONS): Add FLAG_NO_INLINE for
|
||
|
-fno-inline.
|
||
|
* cplus-decl.c (grokdeclarator): Implement FLAG_NO_INLINE.
|
||
|
|
||
|
* cplus-decl.c (pushdecl): Only record an incomplete variable if
|
||
|
it is RECORD_TYPE or UNION_TYPE. ARRAY_TYPE does not count.
|
||
|
|
||
|
* cplus-init.c ({value,purpose}_member): Moved to tree.c.
|
||
|
* cplus-decl2.c (FIRST_GLOBAL_OBJECT_NAME): Moved to varasm.c.
|
||
|
|
||
|
* cplus-init.c (build_delete): Fixed code to avoid going through
|
||
|
virtual function tables when some baseclasses are virtual.
|
||
|
Accomplished by changing parameter PROTECT to FLAGS.
|
||
|
* All callers changed.
|
||
|
|
||
|
Fri Jan 26 03:44:15 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-decl.c (xref_tag): For jjg: make typedefs and struct defs
|
||
|
more equivalent.
|
||
|
|
||
|
* cplus-decl.c (xref_tag): Derived unions are invalid.
|
||
|
|
||
|
* cplus-decl.c (finish_function): For destructors, remember to run
|
||
|
base destructors for virtual baseclasses.
|
||
|
|
||
|
* cplus-search.c (get_base_distance): Track leftmost path in chain
|
||
|
whether or not PATH_PTR is non-NULL.
|
||
|
|
||
|
* cplus-init.c (expand_vec_delete): Deleted. Callers now expand
|
||
|
result from `build_vec_delete'.
|
||
|
* Reinstall Jan 23 changes marked `@'.
|
||
|
|
||
|
Thu Jan 25 21:35:27 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* expr.c (expand_expr): Handle expansion of LOOP_STMT and IF_STMT.
|
||
|
|
||
|
* tree.c (build_loop): Bring this function out of its #ifdef.
|
||
|
|
||
|
* stmt.c (expand_decl): Remove CLEANUP argument.
|
||
|
* stmt.c (expand_decl_cleanup): New function, called when cleanup
|
||
|
is needed.
|
||
|
* cplus-decl.c (finish_decl): Use `expand_decl_cleanup'.
|
||
|
|
||
|
Wed Jan 24 07:34:40 1990 Michael Tiemann (tiemann at arkesden)
|
||
|
|
||
|
* cplus-decl.c (maybe_build_cleanup): Never build cleanups on the
|
||
|
MOMENTARY_OBSTACK.
|
||
|
|
||
|
* stmt.c: Merged to 1.36.93.
|
||
|
* expr.c: Merged to 1.36.93.
|
||
|
|
||
|
Tue Jan 23 02:40:42 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-typeck.c (build_binary_op_nodefault): Use
|
||
|
`conver_pointer_to' to convert arguments before comparing
|
||
|
aggregate pointers.
|
||
|
|
||
|
* cplus-class.c (build_vbase_path): Optimize path to virtual bases
|
||
|
through objects with fixed type.
|
||
|
|
||
|
* cplus-typeck.c (build_component_ref_2): Deleted.
|
||
|
* cplus-typeck.c (build_component_ref): When FIELD comes from a
|
||
|
non-"normal" baseclass, go through `convert_to_pointer' to convert
|
||
|
DATUM to the right address.
|
||
|
|
||
|
* cplus-typeck.c (build_unary_op): Handle case where FIELD is
|
||
|
really a TYPE_DECL (which is used just for its DECL_OFFSET).
|
||
|
|
||
|
The following changes are for merged GCC/G++. Changes marked
|
||
|
with `@' had to be backed out.
|
||
|
@ cplus-init.c (expand_delete): Deleted.
|
||
|
@ cplus-decl.c (maybe_build_cleanup): Return tree nodes built by
|
||
|
`build_delete' rather than building up structure with DELETE_EXPR.
|
||
|
* cplus-decl2.c (finish_function): Expand expression returned from
|
||
|
`build_delete' rather than calling `expand_delete'.
|
||
|
* cplus-init.c (expand_vec_delete): Ditto.
|
||
|
@ expr.c (expand_expr): No longer any need to handle
|
||
|
`DELETE_EXPR'.
|
||
|
@ tree.def (DELETE_EXPR): Move this to cplus-tree.def.
|
||
|
|
||
|
Mon Jan 22 00:21:41 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* expr.c (expand_call): Don't reused pending stack space more than
|
||
|
once in a given nest of calls.
|
||
|
|
||
|
* cplus-init.c (build_delete): Don't build COND_EXPRs when we know
|
||
|
we don't have to.
|
||
|
|
||
|
* cplus-decl.c (finish_function): At end of destructor, no need to
|
||
|
cast down the virtual function table if there is no virtual
|
||
|
function table below (i.e., EXPRSTMT is a NOP_EXPR of
|
||
|
INTEGER_ZERO_NODE).
|
||
|
|
||
|
* cplus-init.c (finish_base_init): Move code which sets
|
||
|
CLASSTYPE_MARKED6 of each vbase type to 1 into
|
||
|
`expand_aggr_vbase_init'.
|
||
|
* cplus-init.c (expand_aggr_vbase_init): Now static in this file.
|
||
|
Always set CLASSTYPE_MARKED6 of each vbase type before running the
|
||
|
initialization, since all virtual baseclasses exposed to this
|
||
|
function must be initialized.
|
||
|
|
||
|
* cplus-search.c (build_type_pathname): Fix broken use of
|
||
|
obstacks.
|
||
|
|
||
|
* cplus-typeck.c (c_expand_return): Don't try to call
|
||
|
`expand_return' when DECL_RESULT is of void type.
|
||
|
|
||
|
* cplus-lex.c (build_opid): Rename C++-specific
|
||
|
`build_op_identifier' to `build_opid'.
|
||
|
@@ Suggest changing `build_op_identifier' in tree.o to interface
|
||
|
of `build_opid'.
|
||
|
* All callers changed.
|
||
|
|
||
|
Sun Jan 21 06:00:03 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* dbxout.c (dbxout_function): Put out debug info for a named
|
||
|
return value.
|
||
|
* dbxout.c (dbxout_symbol): Treat a named RESULT_DECL like a
|
||
|
VAR_DECL.
|
||
|
|
||
|
* cplus-decl.c (store_return_init): If named return value comes in
|
||
|
a register, put it in a pseudo.
|
||
|
* cplus-typeck.c (mark_addressable): Simplify handling of
|
||
|
RESULT_DECL--no need for anything fancy.
|
||
|
* cplus-cvt.c (convert_to_reference): Ditto.
|
||
|
|
||
|
* cplus-method.c (build_opfncall): Test FLAGS&LOOKUP_COMPLAIN to
|
||
|
decide whether call to `build_overload_call' should complain.
|
||
|
|
||
|
* cplus-decl.c (FLAG_INT_ENUM_EQUIVALENCE): New variable, controls
|
||
|
how ints and enums should interconvert.
|
||
|
* cplus-class.c (convert_harshness): Implement behavior based on
|
||
|
that flag.
|
||
|
|
||
|
* cplus-class.c (build_method_call): alloca `harshness' field of
|
||
|
CP before calling `build_overload_call'.
|
||
|
* cplus-class.c (build_overload_call): Don't alloca `harshness' of
|
||
|
FINAL_CP, since caller does this. Also, use `oballoc' for
|
||
|
`harshness' arrays of CP array when running the list of functions
|
||
|
to try.
|
||
|
|
||
|
* cplus-method.c (hack_identifier): Use `error', not
|
||
|
`error_with_decl' to report visibility violation for static
|
||
|
members. Also, compute visibility with `compute_visibility'.
|
||
|
|
||
|
Sat Jan 20 04:18:40 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-decl.c (finish_decl [#if MERGED]): Don't build DECL's
|
||
|
cleanups until after it has been laid out.
|
||
|
|
||
|
* cplus-decl.c (maybe_build_cleanup [#if MERGED]): Return an
|
||
|
RTL_EXPR instead of a DELETE_EXPR.
|
||
|
|
||
|
* cplus-class.c (prepare_fresh_vtable): Copy the list of virtual
|
||
|
functions fom ASSOC, not from BASE_ASSOC (whose list is too
|
||
|
short).
|
||
|
@@ Is DECL_VPARENT right at all?
|
||
|
|
||
|
* cplus-class.c (modify_vtable_entries): Handle case where virtual
|
||
|
function comes from baseclass of virtual baseclass.
|
||
|
|
||
|
* cplus-search.c (get_base_distance): Always follow the leftmost
|
||
|
non-virtual path.
|
||
|
|
||
|
* cplus-class.c (finish_struct): When inheriting a base class's
|
||
|
VFIELD, set its DECL_OFFSET to the correct value, for the cases
|
||
|
when we use CLASSTYPE_VFIELD instead of `lookup_field' to get to
|
||
|
the vfield pointer.
|
||
|
|
||
|
* expr.c (expand_expr): Use language-idependent techniques for
|
||
|
handling NEW_EXPR.
|
||
|
|
||
|
* cplus-init.c (expand_aggr_init): When initializing from a
|
||
|
CONSTRUCTOR, it does not matter whether TYPE has a constructor
|
||
|
defined or not: just strip out the elements as though they were
|
||
|
args to a constructor and proceed.
|
||
|
|
||
|
* cplus-class.c (build_method_call): If we need the address of a
|
||
|
CONSTRUCTOR, initialize a fresh temporary, as in the NOP_EXPR
|
||
|
case.
|
||
|
|
||
|
* cplus-decl2.c (grok_method_quals): When building type variants,
|
||
|
build the pointer types to the varaints.
|
||
|
* cplus-decl.c (grokdeclarator): Ditto.
|
||
|
|
||
|
* cplus-class.c (build_method_call): Error message was backwards
|
||
|
when DECL_CONTEXT (FUNCTION) was not a basetype for
|
||
|
CURRENT_CLASS_TYPE.
|
||
|
|
||
|
* cplus-decl.c (grokdeclarator): If QUALS is non-NULL, don't abort
|
||
|
if TYPE is not METHOD_TYPE. The correct error message will be
|
||
|
generated later.
|
||
|
|
||
|
* cplus-method.c (hack_identifier): Check visibility of VAR_DECL
|
||
|
and CONST_DECL nodes.
|
||
|
|
||
|
* cplus-class.c (instantiate_type): Don't smash the operand of an
|
||
|
ADDR_EXPR if the type instantiation fails. Also, only give an
|
||
|
error message in that case if COMPLAIN is nonzero.
|
||
|
|
||
|
Fri Jan 19 15:12:27 1990 Michael Tiemann (tiemann at teacake)
|
||
|
|
||
|
* cplus-decl2.c (grok_method_quals): Don't drop list of exceptions
|
||
|
raised.
|
||
|
|
||
|
Thu Jan 18 00:20:29 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* cplus-lex.c (init_lex): Allocate OPNAME_TAB and ASSIGNOP_TAB.
|
||
|
|
||
|
Wed Jan 17 07:26:05 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* cplus-lex.c (get_time_identifier): Added cast for `alloca'.
|
||
|
* cplus-tree.c (layout_basetypes): Ditto.
|
||
|
|
||
|
* stmt.c (expand_raise): Return nonzero if in exception nesting.
|
||
|
|
||
|
* cplus-lex.c (init_lex): If C compiler doesn't understand the
|
||
|
construct `sizeof ("string")', then fill in initializer for
|
||
|
OPNAME_END by hand.
|
||
|
|
||
|
* cplus-init.c: Move declarations of extern struct rtx_def things
|
||
|
to top of file to keep /bin/cc happy.
|
||
|
|
||
|
* cplus-lex.c (init_lex): Set DECL_PRINTABLE_NAME.
|
||
|
|
||
|
* varasm.c (record_constant_rtx): Save DESC on `current_obstack'
|
||
|
instead of `saveable_obstack'.
|
||
|
|
||
|
* tree.c (set_identifier_size): SIZE is size in bytes.
|
||
|
* cplus-lex.c (init_lex): Call `set_identifier_size' with number
|
||
|
of bytes, not number of slots.
|
||
|
|
||
|
* toplev.c (compile_file): If `bison.simple' is out of date,
|
||
|
consider that an error.
|
||
|
|
||
|
* cplus-cvt.c (convert): Better error message if type conversion
|
||
|
via constructor fails.
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr): Spurious `else' appeared
|
||
|
when LHSTYPE was aggr type. Deleted.
|
||
|
|
||
|
* cplus-decl2.c (finish_file): Make the dummy variable at the end
|
||
|
of the virtual function table chain look defined and used (soas
|
||
|
not to generate spurious warnings).
|
||
|
|
||
|
Tue Jan 16 15:42:30 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* varasm.c (output_constant): Merged latest GCC changes.
|
||
|
* toplev.c: Merged latest GCC changes.
|
||
|
|
||
|
* cplus-decl.c (init_lex): Must call
|
||
|
`set_identifier_size' before allocating any identifiers.
|
||
|
|
||
|
* All files: Changed MEMBER_REF to OFFSET_REF.
|
||
|
* cplus-init.c (build_offset_ref): Rename function
|
||
|
`build_member_ref' to this.
|
||
|
* cplus-init.c (resolve_offset_ref): Rename function
|
||
|
`resolve_member_ref' to this.
|
||
|
|
||
|
* cplus-lex.c (init_lex): Handle language-specific tree codes.
|
||
|
|
||
|
* tree.def (IDENTIFIER_NODE): Default length is 2.
|
||
|
* tree.def ({SCOPE,MEMBER}_REF): Moved definition to
|
||
|
cplus-tree.def.
|
||
|
* tree.def (TYPE_EXPR): Ditto.
|
||
|
|
||
|
* tree.c: Merge language-specific tree code support from GCC
|
||
|
version 1.90.
|
||
|
* tree.c (tree_cons,build_tree_list): Simplify these back to using
|
||
|
`make_node' instead of inline-expansion.
|
||
|
* tree.c (build_parse_node): renamed function `build_nt0' to this.
|
||
|
All callers changed.
|
||
|
|
||
|
* Makefile glitch for collect2 fixed.
|
||
|
|
||
|
Tue Jan 16 00:38:39 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* version.c: Version 1.36.3 released.
|
||
|
|
||
|
* Makefile: Fixed makefile for collect2 (for Convexen) as per
|
||
|
suggesions of <ngo%tammy@harvard.harvard.edu>.
|
||
|
Also fixed a typo.
|
||
|
|
||
|
Mon Jan 15 10:57:43 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* cplus-class.c (build_vbase_path): If path is erroneous (i.e., up
|
||
|
from a virtual baseclass), then set *BASEP = NULL_TREE.
|
||
|
* cplus-cvt.c (convert_to_pointer_force): Test BASETYPE before
|
||
|
testing the DECL_OFFSET of its TYPE_NAME.
|
||
|
|
||
|
* expr.c (store_one_arg): Handle non-PARM_BOUNDARY BLKmode
|
||
|
parameters in a way that is symmetric with `assign_parms'.
|
||
|
|
||
|
* cplus-init.c (expand_vec_init): Allow assignment semantics if
|
||
|
FROM_ARRAY is 2.
|
||
|
* cplus-typeck.c (build_modify_expr): Call `expand_vec_init' with
|
||
|
in this fashion if an array assignment must be performed.
|
||
|
|
||
|
* expr.c (fixed_type_p): New function says whether the compiler
|
||
|
guarantees that it knows the true type of an object.
|
||
|
* expr.c (expand_expr): Call that function for INIT_EXPR and
|
||
|
MODIFY_EXPR. Also, for MODIFY_EXPR, check both RHS and LHS.
|
||
|
|
||
|
* cplus-typeck.c (build_unary_op): When building an ADDR_EXPR of a
|
||
|
COMPONENT_REF, must convert the base to the pointer type of the
|
||
|
DECL_CONTEXT of FIELD, not simply ARGTYPE. Bug triggered when
|
||
|
FIELD has same type as a virtual or non-leftmost baseclass of
|
||
|
TYPE.
|
||
|
|
||
|
Sun Jan 14 07:50:28 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* cplus-typeck.c (actualparameterlist): Convert FUNCTION_DECLs for
|
||
|
virtual functions to their proper representation if they were
|
||
|
instantiated.
|
||
|
|
||
|
* cplus-typeck.c (instantiate_type_1): New function, factors out
|
||
|
common code in calling `instantiate_type'.
|
||
|
* cplus-class.c (instantiate_type): Now permitted to call this
|
||
|
function with OP_IDENTIFIER. (Previously would abort).
|
||
|
|
||
|
* Makefile: Use $(INCLUDES) instead of various random -I options
|
||
|
scattered throughout front-end.
|
||
|
|
||
|
* varasm.c (assemble_variable): Fix bug where NAME has a '*'
|
||
|
prefix.
|
||
|
|
||
|
Sat Jan 13 00:17:25 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* cplus-class.c (compute_conversion_costs): Fixed comments and
|
||
|
rearranged code that handled type instantiation. Also handled
|
||
|
case where type instantiation leaves a parameter ERROR_MARK_NODE
|
||
|
(consequently making ACTUAL_TYPE ERROR_MARK_NODE).
|
||
|
* cplus-method.c (report_type_mismatch): Give better error message
|
||
|
when type instatiation fails and clobbers the argument type.
|
||
|
|
||
|
* cplus-type2.c (basetype_or_else): Code factorization.
|
||
|
* All places with code of the form
|
||
|
|
||
|
if (t1 == t2 || get_base_type (t1, t2, 0))
|
||
|
do something;
|
||
|
else
|
||
|
do something else;
|
||
|
|
||
|
now calls this function.
|
||
|
|
||
|
* cplus-search.c (get_base_type): For jjg@sun.com: let friend
|
||
|
classes TYPE have access to immediate baseclasses of TYPE.
|
||
|
* cplus-search.c (get_base_distance): Same change.
|
||
|
|
||
|
* cplus-method.c (build_opfncall): Give error messages on all
|
||
|
overloaded functions which non-trivially fail except ADDR_EXPR and
|
||
|
MODIFY_EXPR.
|
||
|
* cplus-class.c (build_method_call): Improved error message for
|
||
|
non-const member function called with const object.
|
||
|
|
||
|
* cplus-class.c (build_vbase_path): New function. Multi-level
|
||
|
version of `build_vbase_pointer'. Code was moved from
|
||
|
`convert_to_pointer'.
|
||
|
* cplus-cvt.c (convert_to_pointer): Call `build_vbase_path'.
|
||
|
* cplus-cvt.c (convert_pointer_to): Ditto.
|
||
|
* cplus-cvt.c (convert_to_pointer_force): Remove duplicated code
|
||
|
and call `build_vbase_path'.
|
||
|
|
||
|
* cplus-decl.c (original_result_rtx): New variable. If named
|
||
|
return value starts in register, but needs to be addressable, then
|
||
|
we put the original RESULT_DECL's rtl in here.
|
||
|
* cplus-typeck.c (c_expand_return): Implement this.
|
||
|
* cplus-decl.c (finish_function): At end of function, if
|
||
|
ORIGINAL_RESULT_RTX is non-zero, move DECL_RESULT (FNDECL) there.
|
||
|
* cplus-typeck.c (mark_addressable): Allow this new feature.
|
||
|
* cplus-cvt.c (convert_to_reference): Ditto.
|
||
|
|
||
|
Fri Jan 12 00:20:06 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* cplus-tree.h (TREE_CALLS_NEW): New meaning for TREE_LANG_FLAG_2:
|
||
|
for any kind of _EXPR or _REF node, it means that underneath is a
|
||
|
call to the storage allocator. If we later find out what was
|
||
|
wanting initialization, we can pitch the call to `new', and the
|
||
|
subsequent copy, winning big on things like "return String (foo);".
|
||
|
* cplus-init.c (build_new): Set this bit.
|
||
|
* cplus-class.c (build_method_call): Ditto.
|
||
|
* cplus-method.c (build_opfncall): Ditto.
|
||
|
* cplus-init.c (expand_aggr_init_1): Optimize calls to
|
||
|
constructors.
|
||
|
|
||
|
* cplus-cvt.c (convert_to_reference): If DECL is ERROR_MARK_NODE,
|
||
|
then consider this an implicit conversion; if DECL is NULL_TREE,
|
||
|
it is explicit.
|
||
|
* cplus-typeck.c (convert_for_initialization): Be explicit that
|
||
|
this is an implicit conversion.
|
||
|
|
||
|
* cplus-cvt.c (convert_from_reference): Don't special-case
|
||
|
converting REFERENCE_EXPRs from references.
|
||
|
|
||
|
* cplus-cvt.c (convert_to_*): Factor out checks that EXPR is a
|
||
|
REFERENCE_TYPE object.
|
||
|
* cplus-cvt.c (convert{_force}): Factor it to here.
|
||
|
|
||
|
* cplus-cvt.c (convert_pointer_to): New function. Previously
|
||
|
`convert_to_nonzero_pointer', but now takes converts to pointer-to
|
||
|
TYPE, rather than to TYPE.
|
||
|
* cplus-cvt.c (convert_to_nonzero_pointer): Deleted.
|
||
|
* All callers changed.
|
||
|
|
||
|
* cplus-cvt.c (build_up_reference): If LOOKUP_PROTECTED_OK is set,
|
||
|
let `get_base_type' return an immediate private baseclass without
|
||
|
complaining.
|
||
|
* cplus-cvt.c (convert_to_reference): Don't need to check whether
|
||
|
conversion violates visibilities, since FLAGS is passed to
|
||
|
`convert_to_reference'.
|
||
|
* cplus-search.c (get_base_type): Implement that (if PROTECT == 3).
|
||
|
|
||
|
* stmt.c (*except*): Use ESCAPE_LABEL instead of EXIT_LABEL as
|
||
|
primary means of control over exception handling nestings.
|
||
|
Where EXITFLAG was passed, also pass ESCAPEFLAG.
|
||
|
* All callers changed. ESCAPEFLAG now controls behavior, not
|
||
|
EXITFLAG.
|
||
|
|
||
|
* stmt.c (expand_exit_nonexcept): Delete this function.
|
||
|
* cplus-parse.y (stmt): Back out change which called
|
||
|
`expand_exit_nonexcept' instead of `expand_exit_something'.
|
||
|
|
||
|
* cplus-init.c (expand_recursive_init): Don't forget to initialize
|
||
|
the vbase pointers if FOR_TYPE uses virtual baseclasses.
|
||
|
|
||
|
* cplus-class.c (rank_for_overload): const/non-const disagreement
|
||
|
is between checking EVIL and checking USER.
|
||
|
* cplus-class.c (build_method_call): Don't hastily choose a method
|
||
|
which has const/non-const disagreement.
|
||
|
|
||
|
* cplus-decl.c (build_function_decl): Unify `builtin_function' and
|
||
|
`auto_function'; also make it optional to push the function into
|
||
|
the binding contour.
|
||
|
* cplus-decl.c (init_decl_processing): Build ABORT_FNDECL.
|
||
|
* cplus-decl2.c (grok_function_init): Use ABORT_FNDECL.
|
||
|
* cplus-except.c (init_exception_processing): Ditto.
|
||
|
|
||
|
Thu Jan 11 10:39:31 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* cplus-decl2.c (finish_file): Merge changes from Raeburn
|
||
|
(raeburn@athena.mit.edu) which name file-level initializers
|
||
|
using global names declared instead of the filename containing
|
||
|
the objects needing file-level initialization.
|
||
|
* varasm.c (assemble_{variable,function}): Rest of changes merged.
|
||
|
|
||
|
* cplus-cvt.c (convert_from_reference): When converting a
|
||
|
REFERENCE_EXPR, wrap TREE_OPERAND (VAL, 0) in the NOP_EXPR
|
||
|
instead of VAL--to save work later in `expand_expr'.
|
||
|
|
||
|
* cplus-tree.h (LOOKUP_NO_CONVERSION): New flag which inhibits
|
||
|
looking for user-defined type conversions.
|
||
|
* cplus-type2.c (build_functional_cast): Use LOOKUP_NO_CONVERSION
|
||
|
when calling constructor since if a type conversion applied, we
|
||
|
don't want "two-level" conversions to take place.
|
||
|
* cplus-class.c (build_method_call): Test this flag when PASS == 2
|
||
|
and cp->user is non-zero.
|
||
|
|
||
|
* cplus-decl.c (grokdeclarator): Don't set TYPE_HAS_DESTRUCTOR
|
||
|
here.
|
||
|
* cplus-decl2.c (grokclassfn): Set it here instead.
|
||
|
|
||
|
Wed Jan 10 07:42:39 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* cplus-class.c (build_method_call): -fall-virtual implies that
|
||
|
2nd argument to operator->() is an int, not a T (C::*X)(...).
|
||
|
|
||
|
* cplus-decl.c (finish_function): Keep named return values from
|
||
|
catching warnings from jump.c about functions which appear to not
|
||
|
return a value.
|
||
|
|
||
|
* cplus-type2.c (process_init_constructor): Test INIT before
|
||
|
copying TREE_HAS_CONSTRUCTOR flag to RESULT.
|
||
|
|
||
|
* cplus-decl.c (pushdecl): If we had ANON_AGGRNAME_P in "C"
|
||
|
language scope, and if we get a better name, fix that up as well.
|
||
|
(Was only doing fixup for "C++" language scope).
|
||
|
|
||
|
* cplus-method.c (dump_init): Handle CONSTRUCTOR as
|
||
|
initialization.
|
||
|
* cplus-typeck.c (actualparameterlist): Here, too.
|
||
|
|
||
|
* cplus-decl.c (grokdeclarator): Move test of friend functions
|
||
|
with method qualifiers to `grokfndecl'.
|
||
|
* cplus-decl.c (grokfndecl): If QUALS is non-zero, then the
|
||
|
TREE_CODE of TYPE must be METHOD_TYPE.
|
||
|
|
||
|
* integrate.c (expand_inline_function): Code using
|
||
|
THIS_STRUCT_VALUE_RTX was (blatantly) incorrect in case where
|
||
|
STRUCT_VALUE_INCOMING_RTX was MEM. Code that looked right was
|
||
|
#if 0'd out, but don't know why. Changed back to original code.
|
||
|
|
||
|
Tue Jan 9 22:56:22 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
|
||
|
|
||
|
* cplus-parse.y (stmt): Exception contour is transparent to BREAK
|
||
|
statement. Call `expand_exit_nonexcept' instead of
|
||
|
`expand_exit_something'.
|
||
|
* stmt.c (expand_exit_nonexcept): New function.
|
||
|
|
||
|
* cplus-decl.c (build_enumerator): Accidently shared INTEGER_CST
|
||
|
nodes which should not have been shared.
|
||
|
|
||
|
Sun Jan 7 00:13:39 1990 Michael Tiemann (tiemann at g.oswego.edu)
|
||
|
|
||
|
* cplus-init.c (expand_aggr_init_1): Use CONST0_RTX as TARGET for
|
||
|
call to `expand_expr' in case of COND_EXPR.
|
||
|
Similar changes made elsewhere in compiler where `expand_expr' was
|
||
|
called.
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr_1): When CODE is INIT_EXPR,
|
||
|
and we call a constructor, remember to dereference the result we
|
||
|
return.
|
||
|
|
||
|
* cplus-init.c (expand_vec_init): Goto of init_by_default was
|
||
|
accidently circumventing initialization of variable BASE2.
|
||
|
Also fixed to handle initialization by default in more cases.
|
||
|
|
||
|
* cplus-typeck.c (build_modify_expr_1): Typo. Use "<" instead of
|
||
|
"<=" for CLASSTYPE_N_BASECLASS loop.
|
||
|
* cplus-search.c (get_base_type_1): Same typo (but this function
|
||
|
is never called).
|
||
|
|
||
|
Sat Jan 6 21:55:31 1990 Michael Tiemann (tiemann at g.oswego.edu)
|
||
|
|
||
|
* cplus-tree.h (TREE_HAS_CONSTRUCTOR): For CONSTRUCTOR, means that
|
||
|
it was a GNU C constructor expression.
|
||
|
* cplus-parse.y (cast_expr): Set that bit.
|
||
|
* cplus-type2.c (process_init_constructor): Propagate this bit.
|
||
|
* cplus-init.c (expand_aggr_init_1): Test that bit and call
|
||
|
`store_init_value' if set.
|
||
|
|
||
|
* cplus-lex.c: Handle strrchr/rindex problem in one place instead
|
||
|
of two.
|
||
|
|
||
|
* cplus-init.c (expand_aggr_init_1): Convert INIT to type for EXP
|
||
|
treating INIT as compound expr.
|
||
|
|
||
|
* cplus-decl.c (grokparms): Can't use `error_with_decl' on a
|
||
|
PARM_DECL here because DECL_CONTEXT is not set up yet. Fixed in 2
|
||
|
places.
|
||
|
|
||
|
* cplus-init.c (resolve_member_ref): Check that member is
|
||
|
FIELD_DECL before bothering about use of non-static member in
|
||
|
static function context.
|
||
|
|
||
|
* cplus-init.c (embrace_waiting_friends): If TYPE_NAME (TYPE) is
|
||
|
not a TYPE_DECL, it has no friends waiting.
|
||
|
|
||
|
* cplus-dem.c (optable): Filled in ommissions found by Ron
|
||
|
Guilmette.
|
||
|
|
||
|
* cplus-decl2.c (grokopexpr): If IS_DECL tells us we have a static
|
||
|
member function, but TYPE is a METHOD_TYPE, we must send the right
|
||
|
argument list to build_operator_fnname.
|
||
|
|
||
|
* Makefile: Explicitly link all the gen*.o and insn-*.? files.
|
||
|
Otherwise, we get symbolic links to "gen*.o", etc.
|
||
|
|
||
|
* make-links.g++: Added symout.c to BORROWED_FILES.
|
||
|
|
||
|
Tue Jan 2 00:39:40 1990 (tiemann at calvin)
|
||
|
|
||
|
* cplus-except.c (cplus_expand_end_except): New parameter EXITFLAG
|
||
|
says whether to exit current exception contour and try the next
|
||
|
one.
|
||
|
* cplus-parse.y: Callers changed.
|
||
|
|
||
|
* cplus-decl.c (pushdecl): Clear TREE_PUBLIC only if VAR_DECL is
|
||
|
TREE_READONLY and not DECL_EXTERNAL. DECL_EXTERNAL is meaningless
|
||
|
for other than VAR_DECLs.
|
||
|
* cplus-decl.c (duplicate_decls): Same change.
|
||
|
@@ Maybe we can eliminate some duplicated code here!
|
||
|
|
||
|
* cplus-tree.c (copy_to_permanent): If T is NULL_TREE, return it.
|
||
|
|
||
|
* cplus-cvt.c (convert_to_aggr): Deal with "in charge" parameter
|
||
|
if BASETYPE uses virtual baseclasses.
|
||
|
|
||
|
* cplus-class.c (build_overload_call): Change name of DECL to
|
||
|
OVERLOAD_NAME. Also, append VOID_LIST_NODE to end of PARMTYPES,
|
||
|
to build more accurate overload name.
|
||
|
|
||
|
Mon Jan 1 13:36:07 1990 (tiemann at calvin)
|
||
|
|
||
|
* cplus-decl.c (store_parm_decls): No need for PRESERVE flag, so
|
||
|
deleted. All callers changed.
|
||
|
|
||
|
* cplus-parse.y (member_init): De-implement keeping virtual
|
||
|
baseclass initializers on the permanent obstack. Now handled by
|
||
|
"in charge" parameter to constructor.
|
||
|
|
||
|
* cplus-cvt.c (convert_to_reference): Convert EXPR from reference
|
||
|
if it came in as a reference and its conversion to TYPE& may
|
||
|
change its value (i.e., if it uses MI or VB).
|
||
|
|
||
|
* cplus-class.c (build_method_call): Use DECL_CONTEXT, not
|
||
|
DECL_VCONTEXT of FUNCTION when LOOKUP_NONVIRTUAL is in effect.
|
||
|
Factored out duplicated code in the process.
|
||
|
|
||
|
* cplus-class.c (build_method_call): Constructors called when
|
||
|
`this' is logically zero must perform any virtual baseclass
|
||
|
initialization. Other constructors (which are used for
|
||
|
initialization of sub-ojbects), never perform virtual baseclass
|
||
|
initialization.
|
||
|
|