Commit Graph

24082 Commits

Author SHA1 Message Date
Mark Mitchell
9bfadf57a2 Remove support for assigning to `this'.
* NEWS: Note that fact.
	* class.c (build_vbase_path): Don't check flag_this_is_variable.
	* cp-tree.h (EXPR_STMT_ASSIGNS_THIS): Remove.
	(language_function): Remove assigns_this, just_assigned_this, and
	x_base_init_expr.  Add x_vcalls_possible_p.  Add vtbls_set_up_p.
	(base_init_expr): Remove.
	(current_vcalls_possible_p): New macro.
	(vtbls_set_up_p): Likewise.
	(emit_base_init): Change prototype.
	* decl.c (finish_destructor_body): New function, split out from
	finish_function.
	(current_function_assigns_this): Remove.
	(current_function_just_assigned_this): Likewise.
	(start_function): Don't set them.
	(finish_function): Don't check them.  Don't emit
	base-initialization code here.  Generate code for destructors when
	doing semantic analysis.
	(finish_stmt): Don't check current_function_just_assigned_this.
	* decl2.c (lang_f_options): Remove this-is-variable.
	(lang_decode_option): Likewise.
	(grokclassfn): Don't check flag_this_is_variable.
	* init.c (emit_base_init): Return the expression generated.
	(construct_virtual_bases): Don't push/pop obstacks.  Fix
	typo.
	(build_new_1): Don't check flag_this_is_variable.
	(get_temp_regvar): Don't set DECL_REGISTER.
	(build_vec_init): Don't call use_variable.
	* lang-options.h: Remove "-fthis-is-variable" and
	"-fno-this-is-variable".
	* pt.c (tsubst_expr): Don't check EXPR_STMT_ASSIGNS_THIS.
	* search.c (expand_upcast_fixups): Use finish_expr_stmt, not
	expand_expr_stmt.
	* semantics.c (finish_expr_stmt_real): Rename to ...
	(finish_expr_stmt): This.  Remove assigned_this parameter.
	(begin_if_stmt): Call do_pushlevel before starting the statement.
	(begin_compound_stmt): Don't declare __FUNCTION__ in scope-less
	blocks.
	(setup_vtbl_ptr): Emit initialization code for bases and members
	at semantic-analysis time.  Emit code to initialize vtables in
	destructors here.
	(expand_stmt): Use finish_expr_stmt, not finish_expr_stmt_real.
	Don't handle CTOR_INITIALIZER any more.
	* typeck.c (build_modify_expr): Don't check for assignments to
	this.
	(c_expand_return): Don't suggest assigning to `this'.

	* Makefile.in (decl.o): Depend on RTL_H.
	(decl2.o): Likewise.
	(class.o): Likewise.
	(call.o): Likewise.
	(method.o): Likewise.
	(search.o): Likewise.
	(tree.o): Likewise.
	(pt.o): Likewise.

	* decl.c (duplicate_decls): When a builtin function is redeclared
	as static, make sure it is mangled correctly.

	* ir.texi (CTOR_INITIALIZER): Remove mention.  Fix typo.  Add
	detail about the statement-tree.

From-SVN: r29531
1999-09-20 20:19:04 +00:00
Richard Henderson
2307e37238 basic-block.h (compute_bb_for_insn): Declare.
* basic-block.h (compute_bb_for_insn): Declare.
        * flow.c (compute_bb_for_insn): Export.  Don't accept the varray
        to use; set size of basic_block_for_insn directly.
        (find_basic_blocks): Update.

From-SVN: r29530
1999-09-20 13:11:36 -07:00
Tom Tromey
8801244b4f configure: Rebuilt.
* configure: Rebuilt.
	* configure.in: Send output of `-fuse-divide-subroutine' test
	compilation to /dev/null.

From-SVN: r29529
1999-09-20 20:09:42 +00:00
Kaveh R. Ghazi
b8024b5942 * flow.c (verify_flow_info): Fix typo, "abort;" -> "abort ();".
From-SVN: r29528
1999-09-20 19:14:48 +00:00
Kaveh R. Ghazi
451fbdf217 crtstuff.c (ON_EXIT): Delete empty macro definition.
* crtstuff.c (ON_EXIT): Delete empty macro definition.
       (__do_global_ctors_aux): Call atexit(), not ON_EXIT().

From-SVN: r29527
1999-09-20 18:59:09 +00:00
Jeffrey A Law
8d02813512 Revert this change. Gavin's patch to operand_equal_p is a better fix.
* fold-const.c (fold_range_test): Do not try to fold the range
         test if the rhs or lhs has side effects.

From-SVN: r29526
1999-09-20 11:12:03 -06:00
Andreas Schwab
7161fcc7c5 Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
1999-09-15  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (parse.o): Depend on $(JAVA_TREE_H).

From-SVN: r29525
1999-09-20 16:27:29 +00:00
Nathan Sidwell
ebaacb57d2 * parse.y (primary): Use build_functional_cast for CV_QUALIFIER.
From-SVN: r29524
1999-09-20 16:19:26 +00:00
Jeffrey A Law
bb457bd901 basic-block.h (compute_flow_dominators): Declare.
* basic-block.h (compute_flow_dominators): Declare.

        * gcse.c (alloc_code_hoist_mem): New function.
        (free_code_hoist_mem, compute_code_hoist_vbeinout): Likewise.
        (compute_code_hoist_data, hoist_expr_reaches_here_p): Likewise.
        (hoist_code, one_code_hoisting_pass): Likewise.
        (gcse_main): If optimizing for size, then hoist expressions
        computed in multiple dominated basic blocks.

From-SVN: r29523
1999-09-20 08:53:51 -06:00
Nick Clifton
03d32d1a08 Add comment saying that lang_decode_options should not complain about
unrecognised options.

From-SVN: r29522
1999-09-20 14:26:59 +00:00
Jeffrey A Law
dfdb644f4f gcse.c (invalid_nonnull_info): New function.
* gcse.c (invalid_nonnull_info): New function.
        (delete_null_pointer_checks): Likewise.
        * rtl.h (delete_null_pointer_checks): Declare.
        * toplev.c (rest_of_compilation): Call delete_null_pointer_checks.

From-SVN: r29521
1999-09-20 07:58:33 -06:00
Nick Clifton
39dd8003d3 Pass all command line options to both language dependent and language independent
decoders.

From-SVN: r29520
1999-09-20 13:48:12 +00:00
Jeffrey A Law
558389e375 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.

From-SVN: r29519
1999-09-20 06:34:26 -06:00
Jeffrey A Law
bfd384967d bitmap.c (debug_bitmap_file): Renmaed from bitmap_debug_file.
* bitmap.c (debug_bitmap_file): Renmaed from bitmap_debug_file.
        Callers and prototype changed.
        * bitmap.h: Fix debug_bitmap and debug_bitmap_file prototypes.

From-SVN: r29518
1999-09-20 05:52:22 -06:00
Alexandre Oliva
c97c62ef68 sol2.h (LINK_SPEC): Avoid the duplication of -YP when both -p and -pg are present.
* config/sparc/sol2.h (LINK_SPEC): Avoid the duplication of
-YP when both -p and -pg are present.  From i386/sol2.h.

From-SVN: r29516
1999-09-20 10:08:10 +00:00
Bernd Schmidt
a091679a29 Make it possible to prototype port-specific functions (and convert i386 to use this)
From-SVN: r29515
1999-09-20 10:05:28 +00:00
Bernd Schmidt
6baf1cc8f8 Make it possible to prototype port-specific functions (and convert i386 to use this)
From-SVN: r29514
1999-09-20 10:00:03 +00:00
Jeff Law
34a24f1806 Daily bump.
From-SVN: r29513
1999-09-20 01:45:08 -06:00
Richard Henderson
2cccc34002 * c-pragma.c (mark_align_stack): Dereference the void* properly.
From-SVN: r29512
1999-09-19 14:19:38 -07:00
Richard Henderson
c911d5ebf6 Forgot to commit last time.
From-SVN: r29511
1999-09-19 14:10:58 -07:00
Mark Mitchell
7015a8146a Fix typo in last change
From-SVN: r29510
1999-09-19 17:00:01 +00:00
Mark Mitchell
3b10cf4be7 rtl.h (insns_safe_to_move_p): New function.
* rtl.h (insns_safe_to_move_p): New function.
	* loop.c (find_and_verify_loops): Use it.
	* rtlanal.c (insns_safe_to_move_p): Define it.

From-SVN: r29509
1999-09-19 16:04:01 +00:00
Mark Mitchell
47d7090eeb * ir.texi: New file.
From-SVN: r29508
1999-09-19 15:50:40 +00:00
Richard Henderson
da9da1341c c-pragma.c: Include ggc.h.
* c-pragma.c: Include ggc.h.
        * Makefile.in (c-pragma.o): Update.

From-SVN: r29507
1999-09-19 02:56:11 -07:00
Jeff Law
aadf648665 Daily bump.
From-SVN: r29506
1999-09-19 01:45:10 -06:00
Mark Mitchell
88848bdeab gxxint.texi: G++ now implements namespaces.
* gxxint.texi: G++ now implements namespaces.

	* decl.c (pop_label): Don't warn about unused labels more than
	once.
	* semantics.c (finish_goto_stmt): Always marked used labels as
	used.

From-SVN: r29505
1999-09-19 00:33:09 +00:00
Mark Mitchell
57b524174e 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.

From-SVN: r29504
1999-09-18 23:56:18 +00:00
Alexandre Oliva
b534921ac0 sol2.h (CPP_SPEC): Support -[p]threads
* 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.

From-SVN: r29503
1999-09-18 19:09:32 +00:00
Richard Henderson
568767a62c c-pragma.c (mark_align_stack): New.
* c-pragma.c (mark_align_stack): New.
        (init_pragma): New.
        * c-pragma.h (init_pragma): Declare it.
        * c-lex.c (init_parse): Call it.

From-SVN: r29502
1999-09-18 11:54:36 -07:00
Alexandre Oliva
4a8021dcbd configure.in: Pick up thread library on Solaris/x86 just like on Solaris/sparc.
* configure.in: Pick up thread library on Solaris/x86 just
like on Solaris/sparc.
* configure: Rebuilt.

From-SVN: r29501
1999-09-18 18:25:50 +00:00
Alex Samuel
5da077de9b rtl.h (global_rtx_index): New enum.
* rtl.h (global_rtx_index): New enum.
        (global_rtl): Change to array of rtx.
        (pc_rtx, cc0_rtx): Redefine accordingly.
        (cc0_rtx, stack_pointer_rtx, frame_pointer_rtx): Likewise.
        (hard_frame_pointer_rtx, arg_pointer_rtx): Likewise.
        (virtual_incoming_args_rtx, virtual_stack_vars_rtx): Likewise.
        (virtual_outgoing_args_rtx, virtual_cfa): Likewise.
        (const_int_rtx): Change to array of rtx.
        (const0_rtx, const1_rtx, const2_rtx, constm1_rtx): Redefine
        accordingly.
        * emit-rtl.c (global_rtl): Change to array of rtx.
        (const_int_rtx): Change to aray of rtx.
        (gen_rtx_CONST_INT): Redefine accordingly.
        (init_emit_once): Allocate and initialize global_rtl.  Likewise
        for const_int_rtx.  Add both as GC roots.
        * genattrtab.c (global_rtl): Update declaration.

From-SVN: r29500
1999-09-18 11:16:44 -07:00
Alexandre Oliva
711b552c22 * overload1.C: New test.
From-SVN: r29499
1999-09-18 18:06:20 +00:00
Ulrich Drepper
7cd33af0c5 Update.
From-SVN: r29498
1999-09-18 18:06:11 +00:00
Ulrich Drepper
4c457b6be7 (USER_H): Add iso646.h back.
From-SVN: r29497
1999-09-18 18:05:59 +00:00
Jeffrey A Law
2a780534dd haifa-sched.c (sched_analyze): Use free_INSN_LIST_list instead of zapping the LOG_LINKS of sched_before_next_call.
* haifa-sched.c (sched_analyze): Use free_INSN_LIST_list instead of
        zapping the LOG_LINKS of sched_before_next_call.

From-SVN: r29496
1999-09-18 06:06:24 -06:00
Alexandre Oliva
7b318668a3 * inline1.C: New test.
From-SVN: r29495
1999-09-18 11:23:55 +00:00
Martin v. Löwis
03b256e4c6 typeck.c (get_member_function_from_ptrfunc): Always consider virtuality inside member pointer.
* typeck.c (get_member_function_from_ptrfunc): Always consider
	virtuality inside member pointer.

From-SVN: r29494
1999-09-18 10:46:07 +00:00
Martin v. Löwis
e9013db204 New test case.
From-SVN: r29493
1999-09-18 10:45:56 +00:00
Jeff Law
f3310c0da3 Daily bump.
From-SVN: r29492
1999-09-18 01:46:13 -06:00
Jeffrey A Law
2561a923d0 pa.h (INSN_SETS_ARE_DELAYED): Delete.
* pa.h (INSN_SETS_ARE_DELAYED): Delete.
        * pa.c (insn_refs_are_delayed): Renamed from
        insn_sets_and_refs_are_delayed.

From-SVN: r29491
1999-09-18 01:13:31 -06:00
Mark Mitchell
b35d4555e6 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.

From-SVN: r29490
1999-09-18 01:23:20 +00:00
Mark Mitchell
2c146a769f cp-tree.h (language_function): Add x_eh_spec_try_block.
* cp-tree.h (language_function): Add x_eh_spec_try_block.  Add
	x_scope_stmt_stack.  Add x_in_charge_parm.
	(current_eh_spec_try_block): New macro.
	(current_scope_stmt_stack): Likewise.
	(current_in_charge_parm): Likewise.
	* decl.c (start_function): Initialize current_in_charge_parm.
	(finish_function): Use current_in_charge_parm rather than looking
	up __in_chrg.
	* search.c (expand_indirect_vtbls_init): Likewise.

From-SVN: r29489
1999-09-17 23:45:52 +00:00
Mark Mitchell
59026e7963 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.

From-SVN: r29488
1999-09-17 23:14:49 +00:00
Mark Mitchell
e6fd097efc functiion.h (struct function): Add x_whole_function_mode_p.
* 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.

From-SVN: r29487
1999-09-17 22:18:59 +00:00
Mark Mitchell
ba7166773b tree.h (warn_about_unused_variables): Declare.
* tree.h (warn_about_unused_variables): Declare.
	* stmt.c (warn_about_unused_variables): New function, split out
	from ...
	(expand_end_bindings): Here.

From-SVN: r29486
1999-09-17 22:13:07 +00:00
Mark Mitchell
086925d8cc stmt.c (preserve_subexpressions_p): Don't crash when current_function->stmt is unset.
* stmt.c (preserve_subexpressions_p): Don't crash when
	current_function->stmt is unset.

From-SVN: r29485
1999-09-17 22:04:28 +00:00
Mark Mitchell
8e91754ed4 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.

From-SVN: r29484
1999-09-17 22:01:23 +00:00
Gavin Romig-Koch
05ca599071 * fold-const.c (operand_equal_p): Pay attention to side effects.
From-SVN: r29483
1999-09-17 19:06:50 +00:00
Jason Merrill
3f94eee685 typo
From-SVN: r29482
1999-09-17 14:54:29 -04:00
Jason Merrill
f75e894618 libgcc2.c (L_exit): Check for ON_EXIT, not HAVE_ON_EXIT.
* libgcc2.c (L_exit): Check for ON_EXIT, not HAVE_ON_EXIT.
	* sparc/sunos4.h (HAVE_ON_EXIT): Remove.

From-SVN: r29481
1999-09-17 14:37:48 -04:00