Tom Tromey [Tue, 21 Sep 1999 21:35:41 +0000 (21:35 +0000)]
OutputStreamWriter.java (OutputStreamWriter): Reverted previous patch; it too was incorrect.
* java/io/OutputStreamWriter.java (OutputStreamWriter): Reverted
previous patch; it too was incorrect.
* java/io/PrintStream.java (PrintStream): Likewise.
Martin v. Löwis [Tue, 21 Sep 1999 19:49:04 +0000 (19:49 +0000)]
typeck.c (get_member_function_from_ptrfunc): Allow extraction of function pointer from pmfs with no object given.
* typeck.c (get_member_function_from_ptrfunc): Allow extraction of
function pointer from pmfs with no object given.
(convert_for_assignment): Do not return error when converting
pmfs.
Andrew MacLeod [Tue, 21 Sep 1999 18:54:34 +0000 (18:54 +0000)]
flow.c (remove_edge): New function to remove an edge from the flow graph.
Tue Sep 21 14:51:23 EDT 1999 Andrew MacLeod <amacleod@cygnus.com>
* flow.c (remove_edge): New function to remove an edge from the
flow graph.
(remove_fake_successors): New function to remove fake successor edges.
(remove_fake_edges): New function to remove all fake edges from the
flow graph.
(add_fake_exit_edges): New function to add fake edges from all blocks
with no successors to the exit block.
* basic-block.h (remove_fake_edges, add_fake_exit_edges): Add
prototypes for new functions.
Alex Samuel [Tue, 21 Sep 1999 18:14:26 +0000 (18:14 +0000)]
Replace string const "<internal>" with dynamic allocation.
* lex.c (internal_filename): New variable.
(INTERNAL_FILENAME): New macro.
(init_parse): Allocate internal_filename and mark as root. Use it
instead of a string constant.
Alex Samuel [Tue, 21 Sep 1999 18:09:54 +0000 (18:09 +0000)]
Replace string const "<built-in>" with dynamic allocation.
* tree.c (built_in_filename): New variable.
(BUILT_IN_FILENAME): New macro.
(init_tree_codes): Allocate built_in_filename.
(make_node): Use built_in_filename instead of string constant.
* g++.old-deja/g++.other/dyncast1.C: New test.
* g++.old-deja/g++.other/dyncast2.C: New test.
* g++.old-deja/g++.other/dyncast3.C: New test.
* g++.old-deja/g++.other/dyncast4.C: New test.
* g++.old-deja/g++.other/dyncast5.C: New test.
* g++.old-deja/g++.eh/catch3.C: New test.
* g++.old-deja/g++.eh/catch3p.C: New test.
* g++.old-deja/g++.eh/catch4.C: New test.
* g++.old-deja/g++.eh/catch4p.C: New test.
* g++.old-deja/g++.eh/catch5.C: New test.
* g++.old-deja/g++.eh/catch5p.C: New test.
* g++.old-deja/g++.eh/catch6.C: New test.
* g++.old-deja/g++.eh/catch6p.C: New test.
* g++.old-deja/g++.eh/catch7.C: New test.
* g++.old-deja/g++.eh/catch7p.C: New test.
* g++.old-deja/g++.eh/catch8.C: New test.
* g++.old-deja/g++.eh/catch8p.C: New test.
* g++.old-deja/g++.eh/catch9.C: New test.
* g++.old-deja/g++.eh/catch9p.C: New test.
* config/i386/sol2.h (PREFERRED_DEBUGGING_TYPE): Use stabs.
(ASM_SPEC): Moved from sol2dbg.h. Added work-around for gas.
* config/i386/sol2dbg.h: Removed.
* config/i386/sol2gas.h: New file, to enable gas work-around.
* configure.in: Use i386/sol2gas.h on Solaris/x86 --with-gas.
Don't use sol2dbg.h.
* configure: Rebuilt.
Jeffrey A Law [Mon, 20 Sep 1999 12:34:26 +0000 (12:34 +0000)]
flow.c (merge_blocks_move_predecessor_nojumps): New function.
* flow.c (merge_blocks_move_predecessor_nojumps): New function.
(merge-blocks_move_successor_nojumps): Likewise.
(merge_blocks): Allow merging of some blocks, even if it requires
physical movement of the blocks, but not if it requires new jumps.
Mark Mitchell [Sat, 18 Sep 1999 23:56:18 +0000 (23:56 +0000)]
decl.c (layout_var_decl): Change prototype.
* decl.c (layout_var_decl): Change prototype. Call layout_decl
even when the declaration is external.
(cp_finish_decl): Adjust call to layout_var_decl.
* pt.c (tsubst_expr): Make sure to initialize stmt before using it.
* config/i386/sol2.h (CPP_SPEC): Support -[p]threads
(LIB_SPEC): Likewise.
(LINK_SPEC): Do not assert -z text with -shared -mimpure-text.
Reindent -YP/-p/-pg.
Copied from config/sparc/sol2.h.
Mark Mitchell [Sat, 18 Sep 1999 01:23:20 +0000 (01:23 +0000)]
Turn on function-at-a-time processing.
* cp-tree.h (doing_semantic_analysis_p): New macro.
(SF_DEFAULT): Define to zero, not SF_EXPAND.
(start_handler_parms): Change prototype.
(expand_start_catch_block): Likewise.
(expand_end_catch_block): Likewise.
(expand_start_eh_spec): Likewise.
(expand_end_eh_spec): Declare.
(finish_handler_parms): Change prototype.
(begin_catch_block): Declare.
(finish_handler): Change prototype.
(do_pushlevel): Declare.
(do_poplevel): Likewise.
* decl.c (pushlevel): Don't create
binding levels when not doing semantic analysis.
(poplevel): Don't pop them.
(pushdecl): Assert that we are never called when not doing
semantic analysis.
(pushdecl_top_level): Use push_to_top_level.
(make_label_decl): Don't fiddle with obstacks. Make RTL For the
label when expanding.
(cp_finish_decl): Only inject for-scope variables when doing
semantic analysis. Add comments.
(start_handler_parms): Return the handler parm.
(start_function): Reorganize. Don't clear DECL_INITIAL if it is
already set. Reinitialize from saved function data if available.
Don't pushlevel when not doing semantic analysis.
(store_parm_decls): Only generate RTL when expanding. Only
pushdecl when doing semantic analysis. Set
current_eh_spec_try_block if appropriate.
(finish_function): Simplify. Use do_pushlevel and do_poplevel.
Combine common code. Don't poplevel when not doing semantic
analysis.
(push_cp_function_context): Don't expand functions without an
explicit call to expand_body.
(mark_lang_function): Make eh_spec_try_block and
x_scope_stmt_stack.
* except.c (expand_end_eh_spec): Don't
declare.
(process_start_catch_block): Likewise.
(push_eh_cleanup): Use finish_decl_cleanup.
(initialize_handler_parm): New function.
(expand_start_catch_block): Use it.
(expand_end_catch_block): Use tree-generation functions, not
RTL-generation functions.
(expand_start_eh_spec): Likewise.
(expand_end_eh_spec): Likewise.
(expand_exception_blocks): Simplify.
(start_anon_func): Use do_pushlevel.
(end_anon_func): Use do_poplvel. Call expand_body for the
function.
* expr.c (do_case): Don't call define_case_label.
* init.c (create_temporary_var): Set DECL_CONTEXT for local
variables.
* method.c (emit_thunk): Call expand_body for the
thunk.
(sythesize_method): Likewise.
* parse.y (handler_args): Give it ttype.
(eat_saved_input): Call expand_body.
(base_init): Use do_pushlevel.
(pending_inline): Call expand_body.
(handler): Adjust calls to finish_handler_parms and
finish_handler.
(handler_args): Don't call expand_start_catch_block. Return the
catch parameter. * pt.c (tsubst_expr): Adjust HANDLER handling.
* parse.c: Regenerated.
* rtti.c (synthesize_tinfo_fn): Call finish_function.
* semantics.c (do_pushlevel): Give it external linkage. Build
SCOPE_STMTs.
(do_poplevel): Likewise.
(finish_case_label): Call define_case_label when doing semantic
analysis.
(finish_goto_stmt): Create RTL for labels.
(finish_function_try_block): Set in_function_try_handler
unconditionally.
(finish_function_handler_sequence): Unset it.
(finish_handler_parms): Use expand_start_catch_block even when
building a statement-tree.
(begin_catch_block): New function.
(finish_handler): Move a little RTL-generation logic here.
(finish_decl_cleanup): Allow cleanups for empty declarations.
(finish_named_return_value): Don't pushdecl when not doing
semantic analysis.
(expand_stmt): Don't do semantic analysis for variable
declarations. Handle START_CATCH_STMT. Call expand_label
directly for a LABEL_STMT. Tweak handling of GOTO_STMT. Adjust
HANDLERs. Handle SCOPE_STMT, CTOR_INITIALIZER, and RETURN_INIT.
(expand_body): Let expand_stmt handle CTOR_INITIALIZER,
RETURN_INIT and function try blocks.
Mark Mitchell [Fri, 17 Sep 1999 23:14:49 +0000 (23:14 +0000)]
cp-tree.def (CLEANUP_STMT): Fix spelling in dumps.
* cp-tree.def (CLEANUP_STMT): Fix spelling in dumps.
(TRY_BLOCK): Likewise.
(HANDLER): Likewise.
(START_CATCH_STMT): New tree node.
(SCOPE_STMT): Likewise.
* cp-tree.h (SCOPE_BEGIN_P): New macro.
(SCOPE_NULLIFIED_P): Likewise.
(struct lang_decl_flags): Add pending_inline_p. Adjust dummy.
(struct lang_decl): Add saved_language_function.
(DECL_PENDING_INLINE_INFO): Adjust documentation.
(DECL_PENDING_INLINE_P): New macro.
(TYPE_TI_ARGS): Fix typo in comment.
(DECL_SAVED_TREE): Add to documentation.
(DECL_SAVED_FUNCTION_DATA): New macro.
(START_CATCH_TYPE): Likewise.
(SCOPE_END_P): New macro.
(declare_parm_level): Don't declare.
* decl.c (mark_lang_function): New function, split out from
mark_cp_function_context.
(save_function_data): New function.
(declare_parm_level): Remove.
(finish_function): Use save_function_data to squirrel away
important stuff for later use.
(mark_cp_function_context): Use mark_function_data.
(lang_mark_tree): Likewise.
* lex.c (begin_definition_of_inclass_inline): Set
DECL_PENDING_INLINE_P.
(store_pending_inline): Clear it.
* pt.c (tsubst_decl): Likewise.
* functiion.h (struct function): Add x_whole_function_mode_p.
(retrofit_block): Declare.
* function.c (retrofit_block): New function.
(identify_blocks): Add assertions. Allow an incomplete set of
block notes if we're still generating code for the function.
* integrate.c: Include loop.h.
(expand_inline_function): Call find_loop_tree_blocks to map block
notes to blocks when in whole-function mode. Use retrofit_block
to insert new BLOCKs for the inlined function, rather than
insert_block.
* stmt.c (expand_fixup): Likewise. Don't use pushlevel/polevel.
* Makefile.in (integrate.o): Depend on loop.h.
Mark Mitchell [Fri, 17 Sep 1999 22:01:23 +0000 (22:01 +0000)]
stmt.c (expand_start_bindings): Allow callers to pass a flag indicating that no NOTE_INSN_BLOCK_BEG note is...
* stmt.c (expand_start_bindings): Allow callers to pass a flag
indicating that no NOTE_INSN_BLOCK_BEG note is required.
(expand_start_target_temps): Use it.
* except.c (expand_eh_region_start_for_decl): Likewise.
* expr.c (expand_expr): Likewise.
Gabriel Dos Reis [Fri, 17 Sep 1999 01:49:29 +0000 (01:49 +0000)]
error.c: Reduce code duplication.
1999-09-17 Gabriel Dos Reis <gdr@codesourcery.com>
* error.c: Reduce code duplication.
(dump_template_value): New function.
(dump_type_real): Use it.
(dump_decl): Likewise.
(dump_function_name): Likewise.
(dump_function_decl): Don't be too talkative about function return
type variety.