Commit Graph

692 Commits

Author SHA1 Message Date
Mark Mitchell
64dc53f34d function.c (free_temps_for_rtl_expr): Don't free slots that have been pushed into a higher level.
* function.c (free_temps_for_rtl_expr): Don't free slots
	that have been pushed into a higher level.

	* expr.c (cplus_expand_expr, case STMT_EXPR): Don't set
	RTL_EXPR_HAS_NO_SCOPE after all.

From-SVN: r32355
2000-03-06 09:50:17 +00:00
Mark Mitchell
9f93702662 tree.def (RTL_EXPR): Update documentation.
* tree.def (RTL_EXPR): Update documentation.
	* tree.h (RTL_EXPR_HAS_NO_SCOPE): New macro.
	* expr.c (expand_expr): Handle RTL_EXPR_HAS_NO_SCOPE.
	* function.c (preserve_rtl_expr_temp): New function.
	(preserve_rtl_expr_temps): Likewise.
	(preserve_rtl_expr_result): Use it.

From-SVN: r32344
2000-03-05 20:43:44 +00:00
Mark Mitchell
591ccf92b3 Revert this patch:
2000-03-04  Mark Mitchell  <mark@codesourcery.com>

From-SVN: r32343
2000-03-05 19:34:29 +00:00
Mark Mitchell
7470e8d74c function.h (struct sequence_stack): Remove rtl_expr.
* function.h (struct sequence_stack): Remove rtl_expr.
	(struct emit_staus): Likewise.
	(seq_rtl_expr): Remove.
	* tree.h (free_temps_for_rtl_expr): Don't declare.
	(start_sequence_for_rtl_expr): Likewise.
	* rtl.h (preserve_rtl_expr_result): Likewise.
	* emit-rtl.c (start_sequence): Don't set sequence_rtl_expr.
	(start_sequence_for_rtl_expr): Remove.
	(push_topmost_sequence): Don't save sequence_rtl_expr.
	(pop_topmost_sequence): Remove comment about not restoring it.
	(end_sequence): Don't set seq_rtl_expr.
	(init_emit): Don't initialize it.
	(mark_sequence_stack): Don't mark it.
	(mark_emit_status): Likewise.
	* except.c (protect_with_terminate): Use
	start_sequence_for_rtl_expr, not start_sequence.
	* expr.c (expand_expr, case RTL_EXPR): Don't call
	preserve_rtl_expr_result or free_temps_for_rtl_expr.
	* function.c (assign_stack_temp_for_type): Don't set rtl_expr.
	(preserve_rtl_expr_result): Remove.
	(free_temps_for_rtl_expr): Likewise.
	(pop_temp_slots): Likewise.
	(mark_temp_slot): Don't mark the rtl_expr.
	* stmt.c (expand_start_stmt_expr): Use start_sequence, not
	start_sequence_for_rtl_expr.

From-SVN: r32335
2000-03-05 03:43:58 +00:00
Richard Kenner
b0e3a65853 function.c (number_blocks): Reset next_block_index based on what debugging format is used, not what is defined.
* function.c (number_blocks): Reset next_block_index based on
	what debugging format is used, not what is defined.

From-SVN: r32235
2000-02-28 07:41:36 -05:00
Mark Mitchell
18c038b9ca emit-rtl.c (remove_unncessary_notes): Remove notes for empty blocks.
* emit-rtl.c (remove_unncessary_notes): Remove notes for empty
	blocks.
	* final.c (next_block_index): Remove.
	(max_block_depth): Likewise.
	(pending_blocks): Likewise.
	(init_final): Don't initialize them.
	(final_start_function): Don't set next_block_index.  Set up
	BLOCK_NUMBER.
	(final_scan_insn): Use BLOCK_NUMBER, not next_block_index.
	* function.h (number_blocks): New function.
	* function.c (get_block_vector): New function.
	(identify_blocks): Use it.
	(reorder_blocks): Set NOTE_BLOCK.
	(number_blocks): New function.
	* tree.def (BLOCK): Add documentation for TREE_ASM_WRITTEN flag.
	* tree.h (BLOCK_NUMBER): New macro.
	(tree_block): Add block_num field.
	* dbxout.c (next_block_number): Remove.
	(dbxout_init): Don't set it.
	(dbxout_block): Only output blocks that have TREE_ASM_WRITTEN
	set.  Use BLOCK_NUMBER, rather than next_block_num, to determine
	block numbers.
	* toplev.c (rest_of_compilation): Always call
	find_loop_tree_blocks.  Fix indentation.
	* dwarf2out.c (next_block_number): Remove.
	(gen_lexical_block_die): Use BLOCK_NUMBER, not next_block_number,
	to determine block numbers.
	(gen_inlined_subroutine_die): Likewise.
	(gen_block_die): Only output blocks that have TREE_ASM_WRITTEN set.
	(decls_for_scope): Don't increment next_block_number.
	* dwarfout.c (next_block_number): Remove.
	(output_lexical_block_die): Use BLOCK_NUMBER, not next_block_number,
	to determine block numbers.
	(output_inlined_subroutine_die): Likewise.
	(output_block): Only output blocks that have TREE_ASM_WRITTEN set.
	(output_decls_for_scope): Don't increment next_block_number.
	* sdbout.c (next_block_number): Remove.
	(sdbout_block): Use BLOCK_NUMBER.
	(sdbout_begin_block): Simplify.
	* xcoffout.c (next_block_number): Remove.
	(xcoffout_block): Use BLOCK_NUMBER, not next_block_number.
	(xcoffout_begin_block): Don't set next_block_number.
	(xcoffout_begin_function): Likewise. Use BLOCK_NUMBER, not
	next_block_number.

From-SVN: r32228
2000-02-28 09:51:42 +00:00
Richard Kenner
fed3cef0db builtins.c (c_strlen): Use size_diffop and return ssizetype value.
* builtins.c (c_strlen): Use size_diffop and return ssizetype value.
	(expand_builtin_strcpy): Pass correct type to size_binop.
	(expand_builtin_strcmp): Likewise.
	Clean up conditional structure.
	* c-decl.c (init_decl_processing): Don't call set_sizetype twice.
	(complete_array_type): Don't use size_binop for MAXINDEX.
	* c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT.
	(c_sizeof_nowarn, c_size_in_bytes): Likewise.
	(c_alignof): Use size_one_node.
	(build_unary_op): Pass arg of proper type to size_binop.
	(really_start_incremental_init, push_init_level): Use sizetype for
	constructor{,_bit,_unfilled}_index.
	(pop_init_label, output_init_element): Likewise.
	(output_pending_init_elements, process_init_element): Likewise.
	* calls.c (compute_argument_block_size): Field VAR is ssizetype.
	* expr.c (store_expr): Use size_int.
	(store_constructor): Use proper types for size_binop args.
	(get_inner_reference, expand_expr, case ARRAY_REF): Likewise.
	(expand_expr_unaligned): Likewise.
	(string_contant): Return object of sizetype.
	* expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types.
	(ARGS_SIZE_RTX): Call ARGS_SIZE_TREE.
	(ARGS_SIZE_TREE): Pass proper types to size_binop.
	* fold-const.c (int_const_binop): Refine when size_int is called.
	(fold_convert): Likewise.
	(size_int_wide): Rework to take KIND as arg, only take low order
	bits, handle new sizetype_tab datatype, and chain entries in
	size_table.
	(size_int_type_wide): New function.
	(size_binop): Validate types of arguments.
	(ssize_binop): Deleted.
	(size_diffop): New function.
	(extract_muldiv): Only fold division into multiplication for sizetypes.
	* function.c (assign_parms): Use size_diffop and make sure
	VAR field is of ssizetype; also pass proper type to size_binop.
	(locate_and_pad_parm, pad_to_arg_alignment): Likewise.
	(round_down): Deleted from here.
	* store-layout.c (sizetype_tab): Now an array.
	(sizetype_set, early_root_list): New variables.
	(variable_size): Use size_one_node.
	(round_up): Pass proper type to size_binop.
	(round_down): Moved to here and corrected as above.
	(layout_record): Pass proper arg types to size_binop.
	(layout_type): Likewise.
	If sizetype_set is zero, record the type just laid out.
	(make_unsigned_type): Don't call set_sizetype;
	(make_signed_type): Likewise; also, call fixup_signed_type.
	(initialize_sizetypes): New function.
	(set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and
	set name of bitsizetype to "bit_size_type".
	Fix up type of sizes of all types made before call.
	* tm.texi (ROUND_TYPE_SIZE_UNIT): New macro.
	* tree.c (fix_sizetype): Deleted.
	(build_common_tree_nodes): Call initialize_sizetypes.
	(build_common_tree_nodes_2): Don't call fix_sizetype.
	* tree.h (TYPE_IS_SIZETYPE): New macro.
	(initialize_sizetype): New declaration.
	(enum size_type_kind): New type.
	(struct sizetype_tab): Deleted.
	(sizetype_tab): Now array; adjust sizetype macros.
	(size_diffop, size_int_type_wide): New functions.
	(size_int_wide): Change number of args and type; access macros changed.
	(ssize_int, sbitsize_int): New macros.
	* config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int.
	(ROUND_TYPE_SIZE_UNIT): New macro.
	* ch/actions.c (chill_convert_for_assignment): Don't use size_binop
	for things that aren't sizes.
	(expand_varying_length_assignment): Likewise.
	* ch/convert.c (digest_array_tuple, convert): Likewise.
	* ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise.
	(build_chill_slice_with_range): Likewise.
	(build_chill_slice_with_length): Likewise.
	(build_array_from_set): Adjust types for size_binop.
	* ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise.
	(build_chill_sizeof): Use TYPE_SIZE_UNIT.
	* ch/tree.c (build_string_type): Pass proper type to size_binop.
	* cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use
	size_binop on things that are not sizes; ssize_binop deleted.
	Call size_diffop when appropriate.
	(dfs_build_vcall_offset_vtbl_entries): Likewise.
	(build_primary_vtable, build_secondary_vtable): Likewise.
	(dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
	Variable I is HOST_WIDE_INT.
	(get_vfield_offset): Pass proper types to size_binop.
	(size_extra_vtbl_entries, layout_virtual_bases): Likewise.
	(finish_struct_1): Likewise.
	(skip_rtti_stuff): Arg N is now pointer to signed.
	(layout_class_type): Use size_zero_node.
	* cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
	* cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
	* cp/decl.c (complete_arry_type): Pass proper types to size_binop.
	(xref_basetypes): BINFO_OFFSET is sizetype.
	* cp/error.c (dump_expr): Don't use size_binop non-sizes.
	* cp/expr.c (cplus_expand_constant): Pass proper types to size_binop.
	* cp/init.c (construct_virtual_bases): Fix type error.
	(build_vec_delete_1): Pass proper type to size_binop and don't
	fold result.
	* cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
	* cp/rtti.c (get_base_offset): Pass proper type to size_binop.
	* cp/search.c (dfs_find_vbases): Fix type error.
	(expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
	(dfs_get_vbase_types): BINFO_OFFSET is sizetype.
	* cp/tree.c (debug_binfo): Variable N is signed.
	Use HOST_WIDE_INT_PRINT_DEC.
	* cp/typeck.c (comptypes): sizetype is same as equivalent integer type.
	(c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
	size_one_node and size_zero_node.
	(c_alignof): Use size_one_node.
	(build_component_addr): Pass proper types to size_binop.
	(expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
	* f/com.c (ffecom_arrayref_): Convert args to size_binop to proper
	type.
	(ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes.
	(ffecom_tree_canonize_ref_): Likewise.
	(type_for_mode): Handle TImode.
	* f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT.
	(ffeste_io_ciclist_): Likewise.
	* java/expr.c (build_java_ret): Pass proper type to size_binop.

From-SVN: r32225
2000-02-27 16:39:40 -05:00
Jeff Law
af841dbdcc Fix copyrights.
From-SVN: r32179
2000-02-26 07:26:24 -07:00
Richard Kenner
c8d8ed65a5 bitmap.c (bitmap_operation): Avoid using -1 for index since unsigned.
* bitmap.c (bitmap_operation): Avoid using -1 for index since unsigned.
	* cppinit.c (new_pending_define): Add cast to avoid warning.
	* expmed.c (extract_bit_field): Likewise.
	* flow.c (enum reorder_skip_type): New type.
	(skip_insns_between_blcok): New it.
	Rework to avoid warning about possibly undefined variable.
	* function.c (assign_parms): Make thisparm_boundary unsigned.
	* genrecog.c (write_switch): Cast XWINT result to int.
	* lcm.c: Many static fcns and vars now #ifdef OPTIMIZE_MODE_SWITCHING.
	* mips-tfile.c (init_file): Make two versions of FDR intializer:
	one for MIPS and one for Alpha.
	(get_tag, copy_object): Add casts to avoid warnings.
	* optabs.c (init_one_libfunc): Cast NAME to (char *).
	* reload.c (find_reloads): Make TYPE enum reload_type.
	* sbitmap.c (dump_sbitmap): J is unsigned; don't use "1L".
	* unroll.c (unroll_loop): Initialize UNROLL_NUMBER.
	* varasm.c (compare_constant_1): Add cast to avoid warning.
	* config/alpha/alpha.c (alpha_emit_xfloating_libcall): Cast FUNC
	to (char *).
	(alpha_expand_unaligned_load, alpha_expand_unaligned_store):
 	Cast switch operand of size to int.
	(alpha_expand_epilogue): Always initialize fp_offset and sa_reg.
	* config/alpha/alpha.h (INITIAL_ELIMINATION_OFFSET): Add abort
	in unhandled case.

From-SVN: r32060
2000-02-18 20:27:00 -05:00
Mark Mitchell
9185a8d526 function.c (thread_prologue_and_epilogue_insns): Put a line note after the prologue.
* function.c (thread_prologue_and_epilogue_insns): Put a line note
	after the prologue.

From-SVN: r32037
2000-02-17 20:15:50 +00:00
Geoff Keating
2dd8bc0166 function.c (thread_prologue_and_epilogue_insns): Don't insert a RETURN insn into a block which already ends with a jump.
* function.c (thread_prologue_and_epilogue_insns): Don't insert
	a RETURN insn into a block which already ends with a jump.

From-SVN: r31928
2000-02-11 19:31:55 +00:00
Jan Hubicka
44affdae26 function.c (assign_temp): Change zero-sized arrays to size 1.
* function.c (assign_temp): Change zero-sized arrays to size 1.
	* integrate.c (expand_inline_function): Do not update
	stack_alignment_needed
	* i386.c (compute_frame_size): Remove #ifdef PREFERRED_FRAME_BOUNDARY,
	add some sanity checking, remove optimization for function with
	zero frame size.

From-SVN: r31898
2000-02-10 17:43:55 +00:00
Clinton Popetz
98b7bb3848 function.c (thread_prologue_and_epilogue_insns): Uncomment last change.
* function.c (thread_prologue_and_epilogue_insns): Uncomment
	last change.

From-SVN: r31890
2000-02-10 09:16:33 -05:00
Clinton Popetz
3a75e42e81 function.c (thread_prologue_and_epilogue_insns): Don't delete the edge from a block that both jumps and falls through to the...
* function.c (thread_prologue_and_epilogue_insns): Don't delete
	the edge from a block that both jumps and falls through to the
	fallthru block.

From-SVN: r31878
2000-02-09 19:20:41 -05:00
Clinton Popetz
a617c13f06 function.c (thread_prologue_and_epilogue_insns): Don't replace jumps with returns unless they are jumps to the fallthru block.
* function.c (thread_prologue_and_epilogue_insns): Don't replace
        jumps with returns unless they are jumps to the fallthru block.

From-SVN: r31852
2000-02-08 11:32:20 -05:00
Hans-Peter Nilsson
73ef99fbd6 * function.c (emit_return_into_block): Wrap in #ifdef HAVE_return.
From-SVN: r31847
2000-02-08 06:09:17 +00:00
Jan Hubicka
c2f8b49149 calls.c (compute_argument_block_size): New argument preferred_stack_boundary.
* calls.c (compute_argument_block_size): New argument
	preferred_stack_boundary.
	(expand_call): update cfun->preferred_stack_boundary, update call of
	compute_argument_block_size
	(emit_library_call): Increate cfun->preferred_stack_boundary
	to PREFERRED_STACK_BOUNDARY
	(emit_library_call_value): Likewise.
	* explow.c (allocate_dynamic_stack_spave): Likewise.
	* function.c (prepare_function_start): Set
	cfun->preferred_stack_boundary
	* function.h (struct function): Add preferred_stack_boundary field.
	* integrate.c (expand_inline_function): Update
	cfun->preferred_stack_boundary and cfun->stack_alignment_needed.
	(copy_rtx_and_substitute): Align frame to stack_alignment_needed only.
	* i386.c (compute_frame_size): Use cfun->preferred_stack_boundary.

From-SVN: r31831
2000-02-07 17:39:40 +00:00
Richard Henderson
69732dcb9c flow.c (flow_delete_insn, [...]): Export.
* flow.c (flow_delete_insn, make_edge, remove_edge): Export.
        * basic-block.h: Declare them.
        * emit-rtl.h (active_insn_p): New.
        (next_active_insn, prev_active_insn): Use it.
        * rtl.h: Declare it.
        * function.c (emit_return_into_block): New.
        (thread_prologue_and_epilogue_insns): Insert return insns instead
        of epilogues when possible.
        * jump.c (jump_optimize_1): Remove code to insert a return insn
        on the fallthru to the exit block.

From-SVN: r31826
2000-02-06 05:01:03 -08:00
Richard Henderson
c13fde0599 function.c (diddle_return_value): Rework to use a callback function.
* function.c (diddle_return_value): Rework to use a callback function.
        Use current_function_return_rtx if it's been set up.
        (do_clobber_return_reg, clobber_return_register): New.
        (do_use_return_reg, use_return_register): New.
        (expand_function_end): Use them.
        * stmt.c (expand_null_return): Likewise.
        * function.h: Declare them.
        * flow.c (mark_regs_live_at_end): Use diddle_return_value.
        (mark_reg): Change arguments as appropriate for callback.
        * integrate.c (expand_inline_function): Revert 19 Jan change.

From-SVN: r31791
2000-02-04 13:30:22 -08:00
Richard Henderson
19d3c25c9a flow.c (find_basic_blocks): Remove do_cleanup argument.
* flow.c (find_basic_blocks): Remove do_cleanup argument.
        Break out that code ...
        (cleanup_cfg): ... here.
        (commit_one_edge_insertion): Detect a return instruction being
        emitted to an edge.  Emit a barrier following; clear fallthru.
        (commit_edge_insertions): Verify CFG consistency.
        * function.c (expand_function_start): Kill unused variable.
        (expand_function_end): Likewise.
        (thread_prologue_and_epilogue_insns): Use insert_insn_on_edge
        to insert the epilogue.

        * gcse.c (gcse_main): Adjust for find_basic_blocks change.
        (delete_null_pointer_checks): Likewise.
        * output.h: Likewise.
        * reg-stack.c (reg_to_stack): Likewise.
        * toplev.c (rest_of_compilation): Likewise.  Run
        thread_prologue_and_epilogue_insns after rebuilding the CFG.

From-SVN: r31676
2000-01-28 14:22:50 -08:00
Geoff Keating
d1b8177961 emit-rtl.c (unshare_all_rtl): Unshare virtual parameters too.
* emit-rtl.c (unshare_all_rtl): Unshare virtual parameters too.
Use unshare_all_rtl_1.
(unshare_all_rtl_again): New function.
(unshare_all_rtl_1): New function split out of unshare_all_rtl.

* function.c (purge_addressof_1): Use unshare_all_rtl_again
rather than resetting the 'used' flags ourself.

* toplev.c (rest_of_compilation): Add current_function_decl
to the unshare_all_rtl call.
* tree.h: Prototype unshare_all_rtl.
* rtl.h: Prototype unshare_all_rtl_again here.

From-SVN: r31651
2000-01-27 20:46:26 +00:00
Richard Henderson
d29c259b71 stupid.c: Die die die.
* stupid.c: Die die die.
	* Makefile.in (OBJS): Remove stupid.o.
	(stupid.o): Likewise.

	* except.c (emit_eh_context): Don't emit USEs for stupid.
	* explow.c (probe_stack_range): Likewise.
	* flags.h (obey_regdecls): Remove.
	* flow.c (find_basic_blocks): Don't run try_merge_blocks
	when not optimizing.
	(life_analysis): Limit data collection when not optimizing.
	(mark_regs_live_at_end): Always mark the return value registers.
	(mark_used_regs): Remove dummy RETURN case.
	(print_rtl_with_bb): Don't consult obey_regdecls.
	* function.c (use_variable, use_variable_after): Remove.
	(assign_parms): Consult optimize not obey_regdecls.
	(expand_function_start): Don't emit USEs for stupid.
	(expand_function_end): Likewise.
	* global.c (build_insn_chain): Export.
	* integrate.c (expand_inline_function): Kill return-value USE
	handling code.
	* jump.c (jump_optimize_1): Do simple jump optimizations and
	dead code elimination.
	(calculate_can_reach_end): Remove check_deleted argument.
	(delete_insn): Patch out insns even when not optimizing.
	* local-alloc.c (block_alloc): Don't do tying when not optimizing.
	* rtl.h (use_variable, use_variable_after): Remove declarations.
	(build_insn_chain): Declare.
	* stmt.c (expand_value_return): Don't emit USEs for stupid.
	(expand_end_bindings): Likewise.
	(expand_decl): Likewise.  Consult optimize not obey_regdecls.
	* toplev.c (obey_regdecls): Remove.
	(rest_of_compilation): Don't set it.  Kill stupid in favour of
	flow1, local-alloc, and reload.
	(main): Don't set obey_regdecls.

	* config/nextstep.c (handle_pragma): Likewise.

	* alpha/alpha.md (allocate_stack): Don't emit USEs for stupid.

	* arm/arm.h (CONDITIONAL_REGISTER_USAGE): Don't fix reg 0 for stupid.

From-SVN: r31499
2000-01-19 01:42:11 -08:00
Kaveh R. Ghazi
711d877c9e eh-common.h: PROTO -> PARAMS.
* eh-common.h: PROTO -> PARAMS.
	* emit-rtl.c: Likewise.
	* errors.c: Likewise.
	* errors.h: Likewise.
	* except.c: Likewise.
	* except.h: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* expr.h: Likewise.
	* final.c: Likewise.
	* fix-header.c: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* function.h: Likewise.
	* gcc.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.

From-SVN: r31419
2000-01-14 17:14:43 +00:00
Kaveh R. Ghazi
57bed15271 calls.c (emit_call_1): Wrap varaible `struct_value_size_rtx' in macro conditionals guarding use.
* calls.c (emit_call_1): Wrap varaible `struct_value_size_rtx' in
        macro conditionals guarding use.

        * dwarf2out.c: Include "tm_p.h".

        * function.c (locate_and_pad_parm): Mark parameter with
        ATTRIBUTE_UNUSED.
        (expand_function_end): Likewise for variable `context'.

        * reorg.c (make_return_insns): Wrap prototype in macro HAVE_return.

cp:
        * call.c: If GATHER_STATISTICS, declare `n_build_method_call'.

From-SVN: r31398
2000-01-13 23:43:55 +00:00
Kaveh R. Ghazi
0ce8a59c2b elfos.h (ASM_OUTPUT_LIMITED_STRING): Add parentheses around assignment used as truth value.
* elfos.h (ASM_OUTPUT_LIMITED_STRING): Add parentheses around
	assignment used as truth value.

	* function.c (assign_temp): Mark parameter `dont_promote' with
	ATTRIBUTE_UNUSED.  Wrap variable `unsignedp' with macro
	PROMOTE_FOR_CALL_ONLY.

	* genrecog.c (write_subroutine): Mark variable `operands' with
	ATTRIBUTE_UNUSED.

	* optabs.c (prepare_cmp_insn): Mark parameter `align' with
	ATTRIBUTE_UNUSED.

	* sdbout.c (sdbout_init): Likewise for parameter `asm_file'.
	(sdbout_begin_block, sdbout_end_block): Likewise for `file'.

	* toplev.c (note_deferral_of_defined_inline_function): Likewise
	for `decl'.

From-SVN: r31293
2000-01-09 14:23:35 +00:00
Kaveh R. Ghazi
a544cfd201 builtins.c (expand_builtin_strlen): Initialize variable `icode'.
* builtins.c (expand_builtin_strlen): Initialize variable `icode'.

	* calls.c (expand_call): Likewise for
	`old_stack_arg_under_construction'.

	* cpphash.c (macroexpand): Likewise for `args' and `rest_zero'.

	* function.c (pad_to_arg_alignment): Likewise for `save_var' and
	`save_constant'.

	* gcc.c (execute): Likewise for `ut' and `st'.

	* genattrtab.c (attr_rtx): Likewise for `rt_val'.

	* genopinit.c (gen_insn): Likewise for `m1', `m2' and `op'.

	* jump.c (jump_optimize_1): Likewise for `temp2'.

	* local-alloc.c (block_alloc): Likewise for `r1'.

	* loop.c (recombine_givs): Likewise for `life_start' and `life_end'.

	* reg-stack.c (check_asm_stack_operands): Likewise for `clobber_reg'.
	(subst_asm_stack_regs): Likewise for `clobber_reg' and `clobber_loc'.

	* regmove.c (fixup_match_1): Likewise for `insn_const', `dst_node'
	and `set2'.

	* reload.c (find_reloads): Likewise for `goal_alternative_number'
	and `goal_earlyclobber'.

	* scan-decls.c (scan_decls): Likewise for `prev_id_end'.

	* sdbout.c (sdbout_one_type): Likewise for `member_scl'.

	* stupid.c (stupid_life_analysis): Likewise for `chain'.

	* unroll.c (copy_loop_body): Likewise for `copy'.

	* varasm.c (output_constructor): Likewise for `byte'.

ch:
	* actions.c (update_else_range_for_int_const): Initialize
	variables `lowval' and `highval'.
	(update_else_range_for_range): Likewise for `low_range_val' and
	`high_range_val'.

cp:
	* class.c (warn_hidden): Initialize variable `fndecl'.

From-SVN: r31207
2000-01-04 16:29:41 +00:00
Richard Kenner
700f19f09f function.c (update_temp_slot_address): Handle case where sum of temporary address plus offset in register is a valid...
* function.c (update_temp_slot_address): Handle case where sum of
	temporary address plus offset in register is a valid address.

From-SVN: r31153
1999-12-31 19:07:54 -05:00
Christophe Jaillet
d4757e6a5d alias.c (nonlocal_reference_p): Add else for disjoint ifs.
* alias.c (nonlocal_reference_p): Add else for disjoint ifs.
        * flow.c (find_use_as_address): Likewise.
        * function.c (fixup_var_refs_1): Likewise.
        (walk_fixup_memory_subreg, fixup_stack_1): Likewise.
        * jump.c (invert_exp, redirect_exp): Likewise.
        * loop.c (replace_call_address): Likewise.
        (count_nonfixed_reads): Likewise.
        * rtlanal.c (modified_between_p): Likewise.
        (modified_in_p, volatile_insn_p, volatile_refs_p): Likewise.
        (side_effects_p, replace_regs, jmp_uses_reg_or_mem): Likewise.
        * unroll.c (remap_split_bivs): Likewise.

From-SVN: r31103
1999-12-27 15:01:12 -08:00
Bernd Schmidt
01d939e8fb current_function -> cfun
From-SVN: r31033
1999-12-20 13:18:17 +00:00
Mark Mitchell
a97901e608 Makefile.in (INTREGRATE_H): Rename to INTEGRATE_H.
* Makefile.in (INTREGRATE_H): Rename to INTEGRATE_H.
	* function.c (insert_block_after_note): Remove.
	(retrofit_block): Likewise.
	(identify_blocks): Fix indentation.
	(reorder_blocks): Don't NULL out NOTE_SOURCE_FILE for a
	NOTE_INSN_BLOCK_BEG or NOTE_INSN_BLOCK_END.
	* function.h (insert_block_after_note): Remove prototype.
	(retrofit_block): Likewise.
	* integrate.c (expand_inline_function): Don't call
	find_loop_tree_blocks.  Use expand_start_bindings_and_block, not
	just expand_start_bindings.  Use the block_map to remap old
	NOTE_BLOCKs to new ones.
	(integrate_decl_tree): Keep track of remapped blocks.
	* integrate.h (struct inline_remap): Add block_map.
	* stmt.c (expand_fixup): Don't try to retrofit_blocks.  Just set
	NOTE_BLOCK on the notes.
	(expand_start_bindings): Rename to ...
	(expand_start_bindings_and_block): Add parameter.  Set NOTE_BLOCK.
	(expand_end_bindings): Set NOTE_BLOCK.
	* toplev.c (rest_of_compilation): In function-at-a-time-mode,
	reconstruct the BLOCK tree.
	* tree.h (expand_start_bindings): Macroize.  Call ...
	(expand_start_bindings_and_block): New function.

	* optimize.c (struct inline_data): Remove scope_stmt.
	(remap_block): Don't use insert_block_after_note.  Don't update
	scope_stmt.
	(expand_call_inline): Don't update scope_stmt.
	(optimize_function): Don't initialize scope_stmt.
	* semantics.c (expand_stmt): Set NOTE_BLOCK for newly emitted
	NOTE_INSN_BLOCK_BEG/NOTE_INSN_BLOCK_END notes.

From-SVN: r30982
1999-12-16 17:50:29 +00:00
Jason Merrill
5afb79e7f8 function.c (retrofit_block): Abort if we don't find a suitable insn.
* function.c (retrofit_block): Abort if we don't find a suitable insn.
        (insert_block_after_note): Abort if we don't have a previous block.
        Remove FN parameter.
        * function.h: Adjust.

        * tree.c (walk_tree): Walk operand subtrees in forward order.
        * optimize.c (expand_call_inline): Likewise.
        (optimize_function): Initialize id->scope_stmt to something useful.
        (remap_block): Assume id->scope_stmt has a useful value.

From-SVN: r30965
1999-12-15 19:09:35 -05:00
Jan Hubicka
a087165623 function.c (PREFERRED_STACK_BOUDNARY): Provide default value.
* function.c (PREFERRED_STACK_BOUDNARY): Provide default value.
	(assign_stack_local_1): Limit alignment to PREFERRED_STACK_BOUNDARY,
	update stack_alignment_needed.
	(prepare_function_start): Initialize stack_alignment_needed
	* function.h (struct function): Add field stack_alignment_needed.

From-SVN: r30958
1999-12-15 15:34:03 +00:00
Mark Mitchell
4ce8936485 function.h (insert_block_after_note): Declare.
* function.h (insert_block_after_note): Declare.
	* function.c (insert_block_after_note): Split out from ...
	(retrofit_block): ... here.

From-SVN: r30776
1999-12-05 00:13:53 +00:00
Geoff Keating
a157febd0c c-common.c (enum attrs): Add A_NO_LIMIT_STACK.
* c-common.c (enum attrs): Add A_NO_LIMIT_STACK.
(init_attributes): Add A_NO_LIMIT_STACK.
(decl_attributes): Handle A_NO_LIMIT_STACK.
* c-decl.c (duplicate_decls): Handle DECL_NO_LIMIT_STACK.
* explow.c (allocate_dynamic_stack_space) [!HAVE_allocate_stack]:
Handle stack bounds checking.
* flags.h (flag_stack_check): Use the word 'probe' rather than
'check', because the flag doesn't actually cause any checking to
be done.
* function.c (expand_function_start): Set
current_function_limit_stack.
* function.h (struct function): Add limit_stack.
(current_function_limit_stack): Define.
* invoke.texi (Code Gen Options): Document new options.
* rtl.h: Declare stack_limit_rtx.
* toplev.c (stack_limit_rtx): New variable.
(decode_f_option): Handle new options -fstack-limit-register=REG,
-fstack-limit-symbol=IDENT, -fno-stack-limit.
(main): Add stack_limit_rtx as GC root.
* tree.h (DECL_NO_LIMIT_STACK): New macro.
(struct tree_decl): New member no_limit_stack.

* config/rs6000/rs6000.c (rs6000_allocate_stack_space): Handle
stack_limit_rtx.
* config/rs6000/rs6000.md (allocate_stack): Handle stack_limit_rtx.
(conditional_trap+1): Get new mnemonic correct.
(conditional_trap+2): New pattern for DImode traps.

* config/m68k/m68k.c (output_function_prologue): Handle
stack_limit_rtx.
* config/m68k/m68k.md (trap): New insn.
(conditional_trap): New insn.
* md.texi (Standard Names): Document `trap' and
`conditional_trap'.
* optabs.c (gen_cond_trap): Use start_sequence()/end_sequence()
so a cc0 setter doesn't get emitted at some random place in the
function.

* config/i960/i960.md (trap): New insn.
(conditional_trap): New expander.
(conditional_trap+1, conditional_trap+2): New insns for signed
and unsigned cases.
* config/i960/i960.c (i960_function_prologue): Use
STARTING_FRAME_OFFSET.  Handle stack_limit_rtx.

Co-Authored-By: Greg McGary <gkm@gnu.org>

From-SVN: r30771
1999-12-04 03:00:04 +00:00
Mark Mitchell
1e4ceb6f9e except.h (struct eh_entry): Add goto_entry_p.
* except.h (struct eh_entry): Add goto_entry_p.
	(eh_region_from_symbol): Remove prototype.
	* except.c (find_func_region_from_symbol): New function.
	(emit_cleanup_handler): Likewise.
	(eh_region_from_symbol): Make it static.
	(add_new_handler): Verify the argument.
	(find_func_region): Update comment.
	(expand_eh_region_end): Expand handlers here, rater than waiting
	until expand_leftover_cleanups or start_all_catch.
	(expand_leftover_cleanups): Don't expand here.
	(expand_start_all_catch): Or here.
	(expand_rethrow): Check the return value from find_func_region.
	* function.c (expand_function_end): Emit the catch_clauses.

From-SVN: r30576
1999-11-18 17:50:56 +00:00
Jakub Jelinek
4dc07bd7c1 explow.c (hard_function_value): Add outgoing argument.
* explow.c (hard_function_value): Add outgoing argument.
        * expr.h (hard_function_value): Declare it.
        * calls.c (expand_call, emit_library_call_value): Update callers.
        * function.c (aggregate_value_p): Ditto.
        (diddle_return_value): Must look at the outgoing registers
        on archs with register windows.

From-SVN: r30550
1999-11-16 09:43:40 -08:00
Jeffrey A Law
2cfcc23e7f function.c (diddle_return_value): Set REG_FUNCTION_VALUE_P as needed.
* function.c (diddle_return_value): Set REG_FUNCTION_VALUE_P as
        needed.

From-SVN: r30519
1999-11-12 20:54:56 -07:00
Jeffrey A Law
cfb0346d03 function.c (diddle_return_value): Only clal hard_function_value when the return value is supposed to be in a register.
* function.c (diddle_return_value): Only clal hard_function_value
        when the return value is supposed to be in a register.

From-SVN: r30497
1999-11-12 00:38:32 -07:00
Jeffrey A Law
d3f2edaeb9 function.c (diddle_return_value): Use hard_function_value to get an rtx suitable for use in the USE/CLOBBER insn.
* function.c (diddle_return_value): Use hard_function_value to
        get an rtx suitable for use in the USE/CLOBBER insn.

From-SVN: r30494
1999-11-11 20:46:21 -07:00
Mark Mitchell
4da896b292 cse.c (delete_trivially_dead_insns): Replace alloca with xmalloc/xcalloc.
* cse.c (delete_trivially_dead_insns): Replace alloca with
	xmalloc/xcalloc.
	* except.c (update_rethrow_references): Likewise.
	(init_eh_nesting_info): Likewise.
	* function.c (identify_blocks): Likewise.
	* gcse.c (dump_hash_table): Likewise.
	* graph.c (print_rtl_graph_with_bb): Likewise.
	* loop.c (combine_movables): Likewise.
	(move_movables): Likewise.
	(count_loop_regs_set): Likewise.
	(strength_reduce): Likewise.
	* profile.c (compute_branch_probabilities): New function, split
	out from ...
	(branch_prob): Here.  Replace alloca with xmalloc/xcalloc.
	* regclass.c (regclass): Likewise.
	* regmove.c (regmove_optimize): Likewise.
	* toplev.c (compile_file): Likewise.
	(main): Don't mess with the stack rlimit.

From-SVN: r30445
1999-11-08 04:56:18 +00:00
Nick Clifton
aa608fe69c oops - add missing return values
From-SVN: r30416
1999-11-05 12:08:09 +00:00
Nick Clifton
8c36698e52 If purge_addressof_1 fails to remove addressofs in notes, remove the notes
instead.

From-SVN: r30414
1999-11-05 10:11:40 +00:00
Jeffrey A Law
9399d5c63f function.c (pad_to_arg_alignment): Only update argument_pad if the argument's alignment is greater than STACK_BOUNDARY.
* function.c (pad_to_arg_alignment): Only update argument_pad
        if the argument's alignment is greater than STACK_BOUNDARY.

From-SVN: r30405
1999-11-04 23:49:38 -07:00
Richard Henderson
bd695e1e9d function.c (diddle_return_value): New.
* function.c (diddle_return_value): New.
        (expand_function_end): Use it.
        * stmt.c (expand_null_return): Likewise.
        (expand_value_return): Likewise.

        * reg-stack.c (subst_stack_regs_pat): Handle clobbers at top-level.

        * reload1.c (reload): Don't remove return value clobbers.

From-SVN: r30401
1999-11-04 16:35:10 -08:00
Richard Kenner
14a774a9d2 [multiple changes]
Fri Oct 29 15:25:07 1999  Arnaud Charlet  <charlet@ACT-Europe.FR>

	* gcov.c (DIR_SEPARATOR): Provide default.
	(output_data): Add test for MS-DOS format absolute filename.
	(fancy_abort): Correct program name.
	(open_files): Open all files in binary mode.
	* libgcc2.c (__bb_exit_func): Likewise.

	* profile.c (init_branch_prob): Specify binary when opening files.

	* flags.h (flag_unwind_tables): New decl.
	* toplev.c (flag_unwind_table): New definition.
	(f_options): Add -funwind-tables.
	(decode_g_option): Clarify warning when unknown -g option is given.
	(rest_of_compilation): If inside an inlined external function,
	pretend we are just being declared.

	* dwarf2out.c (dwarf2out_do_frame): Check -funwind_tables.
	(dwarf2out_frame_finish): Likewise.

Fri Oct 29 06:32:44 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* flow.c (propagate_block): When the last reference to a label
 	before an ADDR_VEC is deleted because the reference is a dead
 	store, delete the ADDR_VEC.

Fri Oct 29 07:44:26 1999  Vasco Pedro  <vp@di.fct.unl.pt>

	* fold-const.c (merge_ranges): In not in0, but in1, handle
	upper bounds equal like subset case.

Thu Oct 28 19:22:24 1999  Douglas Rupp <rupp@gnat.com>

	* dbxout.c (dbxout_parms): Generate a second stabs line for parameters
	passed in a register but moved to the stack.

Thu Oct 28 19:12:57 1999  Sam Tardieu  <tardieu@act-europe.fr>

	* gcc.c (pass_exit_codes, greatest_status): New variables.
	(struct option_map): Add entry for "--pass-exit-codes".
	(execute): Update greatest_status if error.
	(display_help): Add documentation for -pass-exit-codes.
	(process_command): Handle -pass-exit-codes.
	(main): Look at pass_exit_codes and greatest_status on call to exit.

Thu Oct 28 18:06:50 1999  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload.c (find_reloads): Refine test for no input reload
	case to not includes reloads emitted after insn.

	* function.c (find_temp_slots_from_address): Handle sum involving
	a register that points to a temp slot.
	(update_temp_slot_address): Make recursive call if both old and
	new are PLUS with a common operand.
	* calls.c (expand_call): Mark temp slot for result as having
	address taken.

	* rtlanal.c (reg_referenced_p, case IF_THEN_ELSE): New case.

	* gcc.c (process_command): Add standard_exec_prefix with "GCC"
	component as well as "BINUTILS".

	* integrate.h (copy_rtx_and_substitute): New arg, FOR_LHS.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	(expand_inline_function, integrate_parm_decls, integrate_decl_tree):
	All callers changed.
	* unroll.c (inital_reg_note_copy, copy_loop_body): Likewise.

	* dbxout.c (dbxout_type, case INTEGER_TYPE_NODE): If can use
	gdb extensions, write size of type; also be more consistent
	in using references when this is a subtype.

	* pa.md (extv, extzv, insv): Use define_expand to reject constant
	that is out of range.

	* loop.c (unknown_constant_address_altered): New variable.
	(prescan_loop): Initialize it.
	(note_addr_stored): Set it for RTX_UNCHANGING_P MEM.
	(invariant_p, case MEM): Remove handling for volatile and readony;
	check new variable if readonly.
	(check_dbra_loop): Chdeck unknown_constant_address_altered.

	* cse.c (canon_hash, case MEM): Do not record if BLKmode.
	(addr_affects_sp_p): Removed from note_mem_written and only
	define #ifdef AUTO_INC_DEC.

	* alpha.c (input_operand, case ADDRESSOF): Treat as REG.

	* regclass.c (record_reg_classes): Properly handle register move
	directions.

	* varasm.c (initializer_constant_valid_p, case MINUS_EXPR):
	Don't think valid if both operands are invalid.
	(struct constant_descriptor): New field RTL.
	(mark_const_hash_entry): Mark it.
	(record_constant{,_rtx}): Initialize it.
	(output_constant_def): Allocate RTL in permanent obstack and
	save in table.
	({record,compare}_constant_1): Modes must match for
	CONSTRUCTOR of ARRAY_TYPE.

	* c-common.h (initializer_constant_valid_p): Delete decl from here.
	* output.h (initializer_constant_valid_p): Move decl to here.
	* c-common.c (initializer_constant_valid_p): Delete function from here.
	* varasm.c (initializer_constant_valid_p): Move function to here.

	* tree.h (STRIP_SIGN_NOPS): New macro.
	* fold-const.c (optimize_minmax_comparison): New function.
	(invert_truthvalue, case WITH_RECORD_EXPR): New case.
	(fold): Use STRIP_SIGN_NOPS instead of STRIP_TYPE_NOPS.
	(fold, case EQ_EXPR): Call optimize_minmax_comparison and add
	cases with ABS_EXPR, NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR, and
	widening conversions.
	(fold, case LE_EXPR): Rework changing unsigned to signed comparisons
	to look at size of mode, not precision of type; also add missing cases.
	(optimize_bit_field_compare, decode_field_reference): Don't try to
	optimize COMPONENT_REF of a PLACEHOLDER_EXPR.

	* dwarf2out.c (ctype.h): Include.
	(dwarf2out_set_demangle_name_func): New function.
	(size_of_line_info): Deleted.
	(output_line_info): Compute size of line info table from difference
	of labels.
	(base_type_die, add_name_attribute): Call demangle function, if any.
	(field_byte_offset): Use bits per word for variable length fields.
	(gen_array_type_die): Add array name.
	(gen_subprogram_die): Ignore DECL_INLINE if -fno-inline.
	(dwarf2out_add_library_unit_info): New function.

	* explow.c (set_stack_check_libfunc): New function.
	(stack_check_libfunc): New static variable.
	(probe_stack_range): Allow front-end to set up a libfunc to call.

	* combine.c (simplify_comparison): When making comparison in wider
	mode, check for having commuted an AND and a SUBREG.
	(contains_muldiv): New function.
	(try_combine): Call it when dividing a PARALLEL.
	(simplify_rtx, case TRUNCATE): Don't remove for umulsi3_highpart.
	(simplify_comparison, case ASHIFTRT): Recognize sign-extension of
	a PLUS.
	(record_value_for_reg): If TEM is a binary operation with two CLOBBERs,
	use one of the CLOBBERs instead.
	(if_then_else_cond): If comparing against zero, just return thing
	being compared.

	* optabs.c (expand_abs): If machine has MAX, ABS (x) is MAX (x, -x).
	Don't generate shifts and subtract if have conditional arithmetic.

	* rtl.h (delete_barrier): New declaration.
	* jump.c (jump_optimize): Set up to handle conditional call.
	In conditional arithmetic case, handle CALL_INSN followed by a BARRIER.
	(delete_barrier): New function.

	* rtl.c (read_rtx): Call fatal if bad RTL code; check for bad mode.

	* recog.c (nonmemory_operand): Accept ADDRESSOF.

	* tree.c (build_type_attribute_variant): Push to obstack of
	ttype around type_hash_canon call.

	* expr.c (placeholder_list): Move decl to file scope.
	(expand_expr): Don't force access to volatile just because its
	address is taken.
	If ignoring reference operations, just expand the operands.
	(expand_expr, case COMPONENT_REF): Propagate
	EXPAND_CONST_ADDRESS to recursive call when expanding inner.
	Refine test for using bitfield operations vs pointer punning.
	(expand_expr, case CONVERT_EXPR): If converting to
	BLKmode UNION_TYPE from BLKmode, just return inner object.
	Use proper mode in store_field call.
	Properly set sizes of object to store and total size in store_field
	call for convert to union.
	(expand_expr, case ARRAY_REF): If OP0 is in a register, put it in
	memory (like for ADDR_EXPR).  Also, don't put constant in register if
	we'll want it in memory.
	(readonly_fields_p): New function.
	(expand_expr, case INDIRECT_REF): Call it if LHS.
	(expand_assignment): Handle a RESULT_DECL where
	DECL_RTL is a PARALLEL.
	(do_jump, case WITH_RECORD_EXPR): New case.
	(get_inner_reference): Always go inside a CONVERT_EXPR
	and NOP_EXPR if both modes are the same.
	(store_field): Use bitfield operations if size of bitsize is not same
	as size of RHS's type.
	Check for bitpos not a multiple of alignment in BLKmode case.
	Do block move in largest possible alignment.
	(store_constructor): Set BITSIZE to -1 for variable size and properly
 	in case of array of BLKmode.
	(expand_expr_unaligned): New function.
	(do_compare_and_jump): Call it.

	* mips/iris5.h (SWITCHES_NEED_SPACES): New macro.
	* collect2.c (main): Only allow -ofoo if SWITCHES_NEED_SPACES
	does not include 'o'.

	* function.c (instantiate_virtual_regs_1, case SET): Handle case where
	both SET_DEST and SET_SRC reference a virtual register.
	(gen_mem_addressof): Copy RTX_UNCHANGING_P from new REG to old REG.

	* integrate.c (expand_inline_function): Handle case of setting
	virtual stack vars register (from built in setjmp); when parameter
	lives in memory, expand virtual_{stack_vars,incoming_args}_rtx early.
	(subst_constant): Add new parm, MEMONLY.
	(expand_inline_function, integrate_parm_decls): Pass new parm.
	(integrate_decl_tree): Likewise.
	(copy_rtx_and_substitute, case MEM): Do copy RTX_UNCHANGING_P.
	(try_constants): Call subst_constants twice, with MEMONLY 0 and 1.
	(copy_rtx_and_substitute, case SET): Add explicit calls to
	copy_rtx_and_substitute for both sides.

	* stmt.c (expand_asm_operands): Don't use TREE_STRING_LENGTH for
	constraints.
	(pushcase{,_range}): Convert to NOMINAL_TYPE after checking for
	within INDEX_TYPE, instead of before.
	(fixup_gotos): Use f->target_rtl, not the next insn,
	since latter may be from a later fixup.
	(expand_value_return): Correctly convert VAL when promoting function
	return; support RETURN_REG being a PARALLEL.
	(expand_return): When checking for result in regs and having
	cleanup, consider PARALLEL in DECL_RTL as being in regs.

From-SVN: r30299
1999-10-31 20:11:22 -05:00
Marc Lehmann
8fbe10354e toplev.c (rest_of_compilation): Seperate the setjmp/vfork clobber warning from -Wuninitialized and put it under -W.
Sun Oct 31 13:32:15 CET 1999  Marc Lehmann <pcg@goof.com>

	* toplev.c (rest_of_compilation): Seperate the setjmp/vfork clobber
        warning from -Wuninitialized and put it under -W.
        * function.c (uninitialized_vars_warning): Warn only when the
        corresponding flag is set.

From-SVN: r30294
1999-10-31 21:52:00 +00:00
Catherine Moore
fbb57b2a94 Fix up last patch.
From-SVN: r30265
1999-10-29 14:49:29 -04:00
Catherine Moore
7ed6230077 Remove stray comment.
From-SVN: r30260
1999-10-29 13:11:16 -04:00
Catherine Moore
4fc026cde9 expr.c (emit_push_insn): New argument alignment_pad.
* expr.c (emit_push_insn): New argument alignment_pad.
        Update all callers.  Adjust stack pointer based on alignment pad.
        * function.c (pad_to_arg_alignment):  New argument alignment_pad.
        Update all callers.  Track alignment_pad if boundary > PARM_BOUNDARY.
        (locate_and_pad_parm): New argument alignment_pad.  Update all
        callers.
        * expr.h (emit_push_insn): Update prototype.
        (locate_and_pad_parm): Update prototype.
        * calls.c (arg_data):  Add new field alignment_pad.
        (initialize_argument_information): Initialize alignment_pad.

From-SVN: r30257
1999-10-29 11:23:41 -04:00
Mark Mitchell
5faf03ae77 except.c (free_eh_nesting_info): Free the info itself.
* except.c (free_eh_nesting_info): Free the info itself.
	* function.c (free_after_compilation): Don't free NULL.
	* gcse.c (alloc_pre_mem): Free the temp_bitmap, too.
	(pre_edge_insert): Free inserted.
	* stmt.c (free_stmt_status): Don't free NULL.

From-SVN: r30255
1999-10-29 09:49:23 +00:00
Jan Hubicka
a05924f91b Reorg reg-stack to use the standard CFG.
Co-Authored-By: Richard Henderson <rth@cygnus.com>

From-SVN: r30201
1999-10-26 18:25:13 -07:00
Kaveh R. Ghazi
b1474bb79e calls.c: Include tm_p.h later, so everything we need is defined.
* calls.c: Include tm_p.h later, so everything we need is defined.
        * expr.c: Likewise.
        * function.c: Likewise.

        * except.c: Include tm_p.h.

        * sparc.c: Likewise.
        (dwarf2out_cfi_label): Don't prototype.
        (check_return_regs, epilogue_renumber,
        ultra_cmove_results_ready_p, ultra_fpmode_conflict_exists,
        ultra_find_type, ultra_build_types_avail, ultra_flush_pipeline,
        ultra_rescan_pipeline_state, set_extends, ultra_code_from_mask,
        ultra_schedule_insn): Add static prototype.
        (data_segment_operand, text_segment_operand): Call itself with the
        proper number of arguments.
        (sparc_flat_save_restore, sparc_v8plus_shift): Constify a char*.

        * sparc.h: Move all declarations to sparc-protos.h.
        (SELECT_RTX_SECTION):  Pass a missing MODE argument to
        symbolic_operand.

        * sparc/sysv4.h (SELECT_RTX_SECTION): Likewise.

        * config/svr4.h (text_section, ctors_section, dtors_section): Add
        Prototypes.
        (ASM_OUTPUT_SECTION_NAME, UNIQUE_SECTION,
        ASM_FINISH_DECLARE_OBJECT, ASM_OUTPUT_LIMITED_STRING,
        ASM_OUTPUT_ASCII): Constify a char*.

        * sparc-protos.h: New file for sparc prototypes.

cp:
        * expr.c: Include tm_p.h.

From-SVN: r30122
1999-10-21 16:58:33 +00:00
Kaveh R. Ghazi
ec97b83a1c function.c (record_insns, contains): Always declare and define.
* function.c (record_insns, contains): Always declare and define.
       (record_insns): Mark with ATTRIBUTE_UNUSED.

From-SVN: r30121
1999-10-21 16:26:42 +00:00
Kaveh R. Ghazi
ca3075bd73 cpplib.c (if_directive_nameo): Add static prototype.
* cpplib.c (if_directive_nameo): Add static prototype.

	* cse.c (cse_insn): Remove unused variable `p'.

	* except.c (create_rethrow_ref, push_entry,
	receive_exception_label, new_eh_region_entry, find_func_region,
	clear_function_eh_region, process_nestinfo): Add static prototypes.
	(get_reg_for_handler): Hide definition.
	(process_nestinfo): Initialize variable `extra_handlers'.

	* expr.h (expand_builtin_longjmp): Add extern prototype.

	* final.c (final_addr_vec_align, align_fuzz): Add static prototypes.

	* function.c (prepare_function_start): Likewise.
	(pop_function_context_from): Mark parameter `context' with
	ATTRIBUTE_UNUSED.
	(push_temp_slots_for_block, flush_addressof): Hide definition.

	* gcov.c (init_arc, reverse_arcs, create_program_flow_graph,
	solve_program_flow_graph, calculate_branch_probs,
	function_summary, main, fancy_abort): Add prototypes.

	* gen-protos.c (add_hash, parse_fn_proto, main): Likewise.
	(add_hash): Constify a char*.

	* ggc-common.c (ggc_mark_rtx_ptr, ggc_mark_tree_ptr,
	ggc_mark_tree_varray_ptr, ggc_mark_tree_hash_table_ptr,
	ggc_mark_string_ptr, ggc_mark_tree_hash_table_entry): Add prototypes.

	* integrate.c (expand_inline_function_eh_labelmap): Likewise.

	* lists.c (free_list, zap_lists): Likewise.

From-SVN: r29783
1999-10-03 16:28:33 +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
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
21204d3437 function.c (identify_blocks): Don't shadow a variable in an outer scope.
* function.c (identify_blocks): Don't shadow a variable in an
	outer scope.
	* integrate.c (integrate_decl_tree): Don't use pushlevel,
	pushdecl, or poplevel to build up the new BLOCK tree.
	(expand_inline_function): Likewise.
	(integrate_parm_decls): Likewise.

From-SVN: r29453
1999-09-16 04:39:52 +00:00
Richard Henderson
fa51b01b55 emit-rtl.c (free_emit_status): Don't check DECL_DEFER_OUTPUT.
* emit-rtl.c (free_emit_status): Don't check DECL_DEFER_OUTPUT.
        Free the struct.
        (mark_emit_status): Renamed from mark_emit_state.
        * except.c (mark_eh_status): Renamed from mark_eh_state.
        Check not null before marking.
        (free_eh_status): New.
        * expr.c (mark_expr_status, free_expr_status): New.
        * function.c (free_machine_status): New.
        (free_after_parsing): New.
        (free_after_compilation): Move bits to free_after_parsing; call
        free_eh_status, free_expr_status; zero the marked members of the
        function state.
        (prepare_function_start): No can_garbage_collect.
        Call init_eh_for_function.
        (expand_dummy_function_end): Free up current_function state.
        (mark_function_status): Renamed from mark_function_state.
        (mark_function_chain): No can_garbage_collect.  Call mark_expr_status.
        * function.h (struct function): No can_garbage_collect.
        (free_machine_status, free_after_parsing): Declare.
        (free_eh_status, free_expr_status): Declare.
        * ggc.h (mark_expr_status): Declare.
        * stmt.c (free_stmt_status): Free the struct.
        (mark_stmt_status): Renamed from mark_stmt_state.
        (init_stmt): Don't call init_eh.
        (init_stmt_for_function): Don't call init_eh_for_function.
        * toplev.c (compile_file): Call init_eh.
        (rest_of_compilation): Free basic block info before ggc_collect.
        Call free_after_parsing; conditionally call free_after_compilation.
        * varasm.c (mark_varasm_status): Renamed from mark_varasm_state.
        Check not null before marking.

From-SVN: r29448
1999-09-15 18:12:25 -07:00
Mark Mitchell
1a4450c78f rtl.h (NOTE_BLOCK_NUMBER): Replace with ...
* rtl.h (NOTE_BLOCK_NUMBER): Replace with ...
	(NOTE_BLOCK): New macro.
	(NOTE_BLOCK_LIVE_RANGE_BLOCK): Remove.
	* function.h (identify_blocks): CHange prototype.
	* function.c (identify_blocks): Simplify.
	(reorder_blocks): Likewise.
	* ggc-common.c (ggc_mark_rtx): Mark the BLOCK associated with a
	NOTE_INSN_BLOCK_{BEG,END}.
	* haifa-sched.c (sched_analyze): Don't put NOTE_BLOCK_NUMBER on
	the list of saved notes if the note isn't a
	NOTE_INSN_BLOCK_{BEG,END}.
	(move_insn1): Use NOTE_EH_HANDLER in comment, rather than
	NOTE_BLOCK_NUMBER.
	(reemit_notes): Adjust recreation of notes to reflect new saved
	note structure.
	* print-rtl.c (print_rtx): Print the address of the BLOCK when
	printing a block note.
	* stmt.c (block_vector): Remove.
	(find_loop_tree_blocks): Simplify.
	(unroll_block_trees): Likewise.

From-SVN: r29441
1999-09-15 23:05:05 +00:00
Bernd Schmidt
0d1416c6a2 Remove second arg from assign_parms
From-SVN: r29431
1999-09-15 10:07:22 +00:00
Richard Henderson
a995e389c4 Replace insn_foo with insn_data.foo.
From-SVN: r29358
1999-09-12 05:46:08 -07:00
Richard Henderson
3b71623bf3 function.c (assign_stack_local_1): Allocate from function->x_frame_offset, not frame_offset.
* function.c (assign_stack_local_1): Allocate from
        function->x_frame_offset, not frame_offset.

From-SVN: r29248
1999-09-09 16:04:12 -07:00
Mark Mitchell
0a8a198ceb function.h (free_after_compilation): Remove decl parameter.
* function.h (free_after_compilation): Remove decl parameter.
	(free_varasm_status0: Likewise.
	(free_emit_status): Likewise.
	(free_stmt_status): Likewise.
	(free_after_compilation): Likewise.
	(init_lang_status): New variable.
	(free_lang_status): Likewise.
	* emit-rtl.c (free_emit_status): Make decl parameter implicit.
	* function.c (init_lang_status): New variable.
	(free_lang_status): Likewise.
	(push_function_context_to): Don't set function::decl here.
	(free_after_copmilation): Make decl parameter implicit.  Call
	free_lang_status if defined.
	(prepare_function_start): Call init_lang_status if defined.
	(init_function_start): Set function::decl here.
	* profile.c (output_func_start_profiler): Don't call pushdecl
	until we've actually started the function.
	* stmt.c (free_stmt_status): Make decl parameter implicit.
	* toplev.c (rest_of_compilation): Don't pass decl to
	free_after_compilation.
	* varasm.c (free_varasm_status): Likewise.

From-SVN: r29239
1999-09-09 18:55:37 +00:00
Richard Henderson
76095e2f54 combine.c (SUBST): Break out to a real function do_SUBST.
* combine.c (SUBST): Break out to a real function do_SUBST.
        (SUBST_INT): Likewise.
        * gcse.c (free_pre_mem): Free `temp_bitmap'.
        (pre_insert): Free `inserted'.
        * loop.c (basic_induction_var): Always set `location'.

        * function.c (expand_function_end): Add initial_trampoline as a root.
        * rtl.h (init_varasm_once): Declare.
        * toplev.c (compile_file): Call it.
        * ggc-simple.c (ggc_mark_string_ptr): New.
        (ggc_add_string_root): New.
        (ggc_collect): Disable collection avoidance temporarily.
        * ggc.h (ggc_add_string_root): Declare.
        * except.c (create_rethrow_ref): Use ggc_alloc_string.
        * optabs.c (init_libfuncs): Likewise.
        * varasm.c (named_section): Use ggc_alloc_string.
        (make_function_rtl): Likewise.
        (make_decl_rtl): Likewise.
        (assemble_static_space): Likewise.
        (assemble_trampoline_template): Likewise.
        (output_constant_def): Likewise.
        (force_const_mem): Likewise.
        (mark_const_hash_entry): New.
        (mark_pool_sym_hash_table): New.
        (mark_varasm_state): Use it.
        (init_varasm_once): New.

        * expr.h (init_one_libfunc): Declare.
        * optabs.c (init_one_libfunc): New.
        (init_optabs): Use it.
        * config/gofast.h: Likewise.
        * config/sparc/sol2.h (INIT_SUBTARGET_OPTABS): Likewise.
        * config/sparc/sparc.h (INIT_TARGET_OPTABS): Likewise.

From-SVN: r29226
1999-09-09 00:07:41 -07:00
Mark Mitchell
21cd906efe emit-rtl.c (free_emit_status): Take decl as a parameter.
* emit-rtl.c (free_emit_status): Take decl as a parameter.
	(init_emit_once): Add more GC roots.
	* except.c (mark_func_eh_entry): New function.
	(mark_eh_node): Mark false_label and rethrow_label.
	(init_eh): Add more GC roots.
	* function.c (free_after_compilation): Take decl as a paramter.
	Call free_stmt_status.
	(mark_function_state): Don't assume x_parm_reg_stack_loc is
	non-NULL.
	* function.h (free_after_compilation): Change prototype.
	(free_varasm_status): Likewise.
	(free_emit_status): Likewise.
	(free_stmt_status): New function.
	* ggc-simple.c (rtx, vecs, trees, strings, bytes_alloced_since_gc):
	Remove, replacing with ...
	(ggc_status): New structure.
	(ggc_chain): New variable.
	(init_gcc): Define.
	(ggc_push_context): New function.
	(ggc_pop_context): Likewise.
	(ggc_alloc_rtx): Adjust for use of ggc_chain.
	(ggc_alloc_rtvec): Likewise.
	(ggc_alloc_tree): Likewise.
	(ggc_alloc_string): Likewise.
	(ggc_mark_rtx): Mark NOTE_SOURCE_FILE and NOTE_RANGE_INFO.
	(ggc_mark_tree): Give language-dependent code a chance to mark
	`x' nodes.
	(ggc_mark_tree_varray): Handle empty arrays.
	(ggc_collect): Adjust for use of ggc_chain.  Clear
	bytes_alloced_since_last_gc.
	* ggc.h (ggc_pop_context): New function.
	(ggc_push_context): Likewise.
	* print-tree.c (print_node): Don't print obstacks when GC'ing.
	* stmt.c (free_stmt_status): New function.
	(init_stmt_for_function): Clear last_expr_value.
	* toplev.c (rest_of_compilation): Always call free_after_compilation.
	Conditionalize call to ggc_collect.
	(main): Call init_ggc.
	* tree.c (push_obstacks): Do the push, even when GC'ing.
	(push_obstacks_nochange): Likewise.
	(pop_obstacks): Liekwise.
	* varasm.c (free_varasm_status): Take decl as a parameter.

From-SVN: r29170
1999-09-07 15:20:58 +00:00
Bernd Schmidt
afe3d09019 Commit parts that were missing in Mark's last commit
From-SVN: r29164
1999-09-07 10:10:01 +00:00
Jeff Law
c5c7673583 Merge in gcc2-ss-010999
From-SVN: r29150
1999-09-06 23:49:18 -06:00
Richard Henderson
a3770a8130 Makefile.in (ggc-simple.o): Depend on varray.h.
* Makefile.in (ggc-simple.o): Depend on varray.h.
	(rtl.o): Depend on ggc.h.
	(genattrtab.o): Depend on ggc.h.
	(print-tree.o): Likewise.
	(fold-const.o): Likewise.
	* emit-rtl.c (sequence_element_free_list): Remove, and all references.
	(make_insn_raw): Don't cache insns when GC'ing.
	(emit_insn_before): Likewise.
	(emit_insn_after): Likewise.
	(emit_insn): Likewise.
	(start_sequence): Use xmalloc to allocate the sequence_stack.
	(end_sequence): Add free to free it.
	(gen_sequence): Don't cache insns when GC'ing.
	(clear_emit_caches): Don't use sequence_element_free_list.
	(init_emit): Use xcalloc, not xmalloc+bzero.
	* fold-const.c (size_int_wide): Kill the cache, when GC'ing.
	* function.c (pop_function_context_from): Use free to free the
	fixup_var_refs_queue.
	(put_reg_into_stack): Allocate it with xmalloc.
	* genattrtab.c: Include ggc.h.
	(operate_exp): Don't use obstack_free when GC'ing.
	(simplify_cond): Likewise.
	(simplify_text_exp): Likewise.
	(optimize_attrs): Likewise.
	* gengentrtl.c (gendef): Use ggc_alloc_rtx to allocate RTL, when
	GC'ing.
	(gencode): Generate a #include for ggc.h.
	* ggc-callbacks.c (ggc_p): Define it to zero.
	* ggc-none.c (ggc_p): Likewise.
	* ggc-simple.c: Include varray.h.
	(ggc_mark_tree_varray): New function.
	(ggc_add_tree_varray_root): Likewise.
	(ggc_mark_tree_varray_ptr): Likewise.
	* ggc.h (ggc_p): Declare.
	(varray_head_tag): Likewise.
	(ggc_add_tree_varray_root): Declare.
	* print-tree.c (print_node): Don't check for TREE_PERMANENT
	inconsistencies when GC'ing.
	* rtl.c: Include ggc.h.
	(rtvec_alloc): Use ggc_alloc_rtvec when GC'ing.
	(rtx_alloc): Use ggc_alloc_rtx when GC'ing.
	(rtx_free): Don't call obstack_free when GC'ing.
	* toplev.c (rest_of_compilation): Call ggc_collect after every
	pass, if GC'ing.
	* tree.c (push_obstacks): Do nothing, if GC'ing.
	(pop_obstacks_nochange): Likewise.
	(pop_obstacks): Likewise.
	(make_node): Use ggc_alloc_tree when GC'ing.
	(copy_node): Likewise.
	(get_identifier): Use ggc_alloc_string when GC'ing.
	(build_string): Likewise.
	(make_tree_vec): Use ggc_alloc_tree when GC'ing.
	(tree_cons): Likewise.
	(build1): Likewise.
	(type_hash_canon): Don't call obstack_free when GC'ing.

Co-Authored-By: Bernd Schmidt <bernds@cygnus.co.uk>
Co-Authored-By: Mark Mitchell <mark@codesourcery.com>

From-SVN: r29125
1999-09-05 16:08:20 +00:00
Richard Henderson
87ff9c8e4b Makefile.in (tree.o): Depend on ggc.h.
* Makefile.in (tree.o): Depend on ggc.h.
	(varasm.o): Likewise.
	(function.o): Likewise.
	(stmt.o): Likewise.
	(except.o): Likewise.
	(optabs.o): Likewise.
	(emit-rtl.o): Likewise.
	* emit-rtl.c: Include ggc.h.
	(sequence_element_free_list): Remove, and all references.
	(mark_sequence): New functions.
	(mark_emit_state): New function.
	* except.c: Include ggc.h.
	(mark_eh_node, mark_eh_stack, mark_eh_queue): New functions.
	(mark_tree_label_node): New functions.
	(mark_eh_state): New function.
	* function.c: Include ggc.h.
	(mark_temp_slot, mark_function_chain): New functions.
	(mark_function_state): New function.
	(init_function_once): New function.
	* function.h (init_function_once): New function.
	* ggc-callbacks.c (lang_mark_false_label_stack): New function.
	* ggc.h (label_node): Declare.
	(eh_status, emit_status, stmt_status, varasm_status): Likewise.
	(lang_mark_false_label_stack): New function.
	(mark_temp_slot): Remove declaration.
	(mark_function_chain): Likewise.
	(mark_eh_state): Adjust prototype.
	(mark_stmt_state, mark_emit_state, mark_varasm_state, mark_optab):
	Likewise.
	* optabs.c: Include ggc.h.
	(mark_optab): New function.
	(init_optabs): Add gc roots.
	* stmt.c: Include ggc.h.
	(mark_cond_nesting, mark_loop_nesting): New functions.
	(mark_block_nesting, mark_case_nesting, mark_goto_fixup): Likewise.
	(mark_stmt_state): New function.
	* toplev.c (compile_file): Call init_function_once.
	* tree.c: Include ggc.h.
	(type_hash): Move declaration earlier in file.
	(TYPE_HASH_SIZE, type_hash_table): Likewise.
	(init_obstacks): Add gc roots.
	(mark_type_hash): New function.
	* varasm.c: Include ggc.h.
	(mark_pool_constant): New function.
	(mark_varasm_state): New function.

Co-Authored-By: Bernd Schmidt <bernds@cygnus.co.uk>
Co-Authored-By: Mark Mitchell <mark@codesourcery.com>

From-SVN: r29119
1999-09-05 02:41:35 +00:00
Bernd Schmidt
e2ecd91c7b c-decl.c (struct language_function): Renamed from struct c_function.
* c-decl.c (struct language_function): Renamed from struct c_function.
	Delete elt NEXT.
	(c_function_chain): Delete.
	(push_c_function_context): New arg F.  Don't warn about nested
	functions here.  Fill LANGUAGE elt of F.  Delete code to update
	c_function_chain.  Don't call push_function_context.
	(pop_c_function_context): New arg F.  Restore from there instead of
	from c_function_chain.  Don't call pop_function_context.  Clear out
	LANGUAGE field of F when done.
	* c-lang.c: Include "function.h"
	(lang_init): Initialize save_lang_status and restore_lang_status.
	* c-parse.in (nested_function, nested_function_notype): Warn about
	nested functions.  Call push_function_context/pop_function_context
	instead of the _c_ variants.
	* c-tree.h (push_c_function_context, pop_c_function_context): Update
	prototype.
	* Makefile.in (c-lang.o): Update dependencies.

	* emit-rtl.c (init_emit): Use xmalloc to allocate regno_reg_rtx,
	regno_pointer_flag, regno_pointer_align.
	(gen_reg_rtx): Use xrealloc to enlarge them.
	(free_emit_status): New function.
	* function.c (mark_machine_status, mark_lang_status): New variables.
	(assign_stack_local_1): Renamed from assign_outer_stack_local.  Merge
	in some bits from assign_stack_local.  All callers changed to use new
	name.
	(assign_stack_local): Just call assign_stack_local_1.
	(free_after_compilation): New function.
	(put_reg_into_stack): Simplify to always call assign_stack_local_1.
	(trampoline_address): Likewise.
	(assign_parms): Use xcalloc/xrealloc to allocate parm_reg_stack_loc.
	(prepare_function_start): Explicitly clear some more variables.
	* function.h (struct function): New elt can_garbage_collect.
	(mark_machine_status, mark_lang_status): Declare variables.
	(free_after_compilation, free_emit_status, free_varasm_status,
	init_varasm_status): Declare functions.
	* toplev.c (rest_of_compilation): Call free_after_compilation when
	done with the current function.
	* varasm.c (free_varasm_status): New function.

From-SVN: r29117
1999-09-05 01:06:48 +00:00
Bernd Schmidt
36edd3cc1b Change memory mangement and constant pool handling for nested functions to match that of normal functions; add init_machine_status mechanism.
From-SVN: r29101
1999-09-04 13:09:56 +00:00
Bernd Schmidt
8c5666b4c1 function.h (struct function): Add new element LANGUAGE.
* function.h (struct function): Add new element LANGUAGE.
 	(save_lang_status): Declare new variable.
	(restore_lang_status): Likewise.
	* function.c (save_lang_status): Define.
	(restore_lang_status): Likewise.
	(push_function_context_to): Call language-specific save function.
	(pop_function_context_from): Call language-specific restore function.

From-SVN: r29095
1999-09-04 02:16:58 +00:00
Zack Weinberg
ef178af3a4 rtl.h (RTL_CHECK1, RTL_CHECK2): New macros which type- and bounds- check RTL accesses if --enable-checking.
1999-08-31 12:20 -0700 Zack Weinberg <zack@bitmover.com>

	* rtl.h (RTL_CHECK1, RTL_CHECK2): New macros which type- and
	bounds- check RTL accesses if --enable-checking.
	(RTVEC_ELT): Bounds check if --enable-checking.
	(XWINT, XINT, XSTR, XEXP, XVEC, XMODE, XBITMAP, XTREE,
	XBBDEF): Use RTL_CHECK1/RTL_CHECK2 as appropriate.
	(XVECEXP, XVECLEN): Define in terms of XVEC, RTVEC_ELT, and
	GET_NUM_ELEM.
	(X0WINT, X0INT, X0STR, X0EXP, X0VEC, X0MODE, X0BITMAP, X0TREE,
	X0BBDEF, X0ADVFLAGS):  New macros for accessing '0' slots of RTXes.

	(ADDR_DIFF_VEC_FLAGS): Use X0ADVFLAGS.
	(NOTE_SOURCE_FILE): Use X0STR.
	(NOTE_BLOCK_NUMBER, NOTE_EH_HANDLER, LABEL_NUSES,
	MEM_ALIAS_SET): Use X0INT.
	(NOTE_RANGE_INFO, NOTE_LIVE_INFO, NOTE_BASIC_BLOCK,
	JUMP_LABEL, LABEL_REFS, LABEL_NEXTREF, CONTAINING_INSN):
	Use X0EXP.
	* real.h (CONST_DOUBLE_CHAIN): Use X0EXP.
	* rtl.c (copy_rtx, copy_most_rtx): Copy '0' slots with X0WINT.
	(rtl_check_failed_bounds, rtl_check_failed_type1,
	rtl_check_failed_type2, rtvec_check_failed_bounds): New
	functions.
	(fancy_abort): Fix comment.

	* cse.c (canon_hash): Read CONST_DOUBLE data slots with XWINT.
	(cse_insn): Decrement LABEL_NUSES for jump target before
	deleting jump insn.
	* emit-rtl.c (gen_rtx_CONST_DOUBLE): Use X0EXP for slot 1.
	* final.c (alter_subreg): Compute regno before changing x to
	REG; set REGNO(x) after changing it.
	* flow.c (count_basic_blocks): Use XWINT to inspect EH_REGION
	notes containing CONST_INTs.
	(delete_eh_regions): Use NOTE_EH_HANDLER.
	* function.c (put_reg_into_stack): Make reg a MEM before
	initializing it.
	(fixup_var_refs_insns):  Save REG_NOTES (insn) in case we
	delete insn.
	(gen_mem_addressof): Make reg a MEM before initializing it.
	* integrate.c (copy_rtx_and_substitute): Copy '0' slots with
	X0WINT.
	* local-alloc.c (update_equiv_regs): Zap REG_NOTES before
	deleting an insn, not after.
	(block_alloc): Only look at PATTERN(insn) if we have to, and
	only if it's format class 'i'.
	* loop.c (check_dbra_loop): Check bl->biv->add_val is a
	CONST_INT before using its INTVAL.
	* print-rtl.c (print_rtx): Use X0STR.
	* regmove.c (fixup_match_1): Don't look at PATTERN of
	non-class-'i' insn chain elements.
	* reload.c (loc_mentioned_in_p): Take address of
	in->fld[1].rtx directly.
	* reload1.c (reload): Change reg to a MEM before initializing
	it.
	* varasm.c (mark_constant_pool): Skip CONST_DOUBLES, which
	have no names.
	* config/i386/i386.md (decrement_and_branch_if_zero): Fix typo.

From-SVN: r29008
1999-08-31 19:39:10 +00:00
Andreas Schwab
010529e58b function.c (assign_stack_temp_for_type): Fix change of Mar 5 for the fact that ALIGN is measured in bits, not bytes.
* function.c (assign_stack_temp_for_type): Fix change of Mar 5 for
	the fact that ALIGN is measured in bits, not bytes.

From-SVN: r28926
1999-08-27 07:53:33 +00:00
Bernd Schmidt
bf6bb899e1 Fix more problems from GC diffs
From-SVN: r28820
1999-08-24 12:05:09 +00:00
Kaveh R. Ghazi
6f7d635c0e rtl.h (rtx_format): Constify a char*.
* rtl.h (rtx_format): Constify a char*.

	* rtl.c (rtx_format): Likewise.
	(copy_rtx, copy_most_rtx, read_rtx): Likewise.
	(init_rtl): Use accessor macro, not `rtx_format'.

	* alias.c (rtx_equal_for_memref_p, find_symbolic_term): Constify a
	char*.

	* caller-save.c (mark_referenced_regs): Likewise.

	* combine.c (subst, make_compound_operation, known_cond,
	gen_rtx_combine, update_table_tick, get_last_value_validate,
	use_crosses_set_p, mark_used_regs_combine, move_deaths): Likewise.

	* cse.c (rtx_cost, mention_regs, canon_hash, exp_equiv_p,
	refers_to_p, canon_reg, fold_rtx, cse_process_notes,
	count_reg_usage): Likewise.

	* emit-rtl.c (gen_rtx, copy_rtx_if_shared, reset_used_flags):
	Likewise.

	* final.c (leaf_renumber_regs_insn): Likewise.

	* flow.c (mark_used_regs, find_use_as_address, dump_flow_info,
	dump_edge_info, count_reg_references): Likewise.

	* function.c (fixup_var_refs_1, walk_fixup_memory_subreg,
	fixup_stack_1, purge_addressof_1, instantiate_virtual_regs_1):
	Likewise.

	* gcse.c (oprs_unchanged_p, hash_expr_1, expr_equiv_p,
	oprs_not_set_p, expr_killed_p, compute_transp, find_used_regs,
	add_label_notes): Likewise.

	* genattrtab.c (attr_rtx, attr_copy_rtx, encode_units_mask,
	clear_struct_flag, count_sub_rtxs, count_alternatives,
	compares_alternatives_p, contained_in_p, walk_attr_value,
	write_expr_attr_cache): Likewise.

	* genconfig.c (walk_insn_part): Likewise.

	* genemit.c (max_operand_1, gen_exp): Likewise.

	* genextract.c (walk_rtx): Likewise.

	* genflags.c (num_operands): Likewise.

	* genoutput.c (scan_operands): Likewise.

	* genpeep.c (match_rtx): Likewise.

	* genrecog.c (add_to_sequence): Likewise.

	* haifa-sched.c (may_trap_exp, sched_analyze_2, attach_deaths):
	Likewise.

	* integrate.c (save_constants, copy_for_inline,
	copy_rtx_and_substitute, subst_constants, restore_constants):
	Likewise.

	* jump.c  (mark_jump_label, invert_exp, redirect_exp,
	rtx_renumbered_equal_p, rtx_equal_for_thread_p): Likewise.

	* local-alloc.c (contains_replace_regs, memref_referenced_p):
	Likewise.

	* loop.c (record_excess_regs, rtx_equal_for_loop_p,
	add_label_notes, replace_call_address, count_nonfixed_reads,
	invariant_p, find_single_use_in_loop, find_mem_givs,
	find_life_end, maybe_eliminate_biv_1, update_reg_last_use):
	Likewise.

	* print-rtl.c (reg_names, print_rtx): Likewise.

	* recog.c (validate_replace_rtx_1, find_single_use_1): Likewise.

	* reg-stack.c (stack_regs_mentioned_p, record_label_references,
	record_reg_life_pat, swap_rtx_condition, goto_block_pat,
	print_blocks): Likewise.

	* regclass.c (fix_register, record_address_regs,
	reg_scan_mark_refs): Likewise.

	* regmove.c (stable_but_for_p): Likewise.

	* reload.c (loc_mentioned_in_p, operands_match_p,
	find_reloads_toplevsubst_reg_equivs, find_reloads_address_1,
	copy_replacements, refers_to_regno_for_reload_p,
	refers_to_mem_for_reload_p, find_inc_amount, regno_clobbered_p,
	reload_when_needed_name, reg_class_names, debug_reload_to_stream):
	Likewise.

	* reload1.c (eliminate_regs, scan_paradoxical_subregs,
	delete_address_reloads_1, count_occurrences,
	reload_cse_mem_conflict_p, reload_combine_note_use,
	add_auto_inc_notes): Likewise.

	* resource.c (mark_referenced_resources, mark_set_resources):
	Likewise.

	* rtlanal.c (rtx_unstable_p, rtx_varies_p, rtx_addr_varies_p,
	reg_mentioned_p, regs_set_between_p, modified_between_p,
	modified_in_p, refers_to_regno_p, reg_overlap_mentioned_p,
	rtx_equal_p, volatile_insn_p, volatile_refs_p, side_effects_p,
	may_trap_p, inequality_comparisons_p, replace_rtx, replace_regs,
	jmp_uses_reg_or_mem, for_each_rtx, regno_use_in): Likewise.

	* sched.c (sched_analyze_2, attach_deaths): Likewise.

	* stupid.c (stupid_mark_refs): Likewise.

	* unroll.c (remap_split_bivs): Likewise.

	* varasm.c (mark_constants): Likewise.

	* a29k/a29k.c (uses_local_reg_p): Likewise.

	* alpha/alpha.c (summarize_insn): Likewise.

	* arm/arm.c (symbol_mentioned_p, label_mentioned_p,
	eliminate_lr2ip): Likewise.

	* arm/thumb.c (symbol_mentioned_p, label_mentioned_p): Likewise.

	* i386/i386.c (symbolic_reference_mentioned_p, copy_all_rtx,
	reg_mentioned_in_mem): Likewise.

	* ns32k/ns32k.c (global_symbolic_reference_mentioned_p,
	symbolic_reference_mentioned_p): Likewise.

	* romp/romp.c (unsigned_comparisons_p, hash_rtx): Likewise.

	* sh/sh.c (regs_used, mark_use): Likewise.

	* vax/vax.c (vax_rtx_cost): Likewise.

From-SVN: r28784
1999-08-20 23:05:25 +00:00
Zack Weinberg
8f985ec4c7 rtl.def (NOTE): Change format to "iuu0n".
1999-08-19 14:44 -0700  Zack Weinberg  <zack@bitmover.com>

	* rtl.def (NOTE): Change format to "iuu0n".
	(ADDR_DIFF_VEC): Change format to "eEee0".
	(ADDRESSOF): Change format to "eit".

	* rtl.h (rtvec): Make "elem" an array of rtx, not rtunion.
	(RTVEC_ELT): Change to match.
	(XVECEXP): Use XVEC and RTVEC_ELT.
	(INSN_UID, INSN_CODE, CODE_LABEL_NUMBER, NOTE_LINE_NUMBER,
	ADDRESSOF_REGNO, REGNO, SUBREG_WORD): Use XINT.
	(PREV_INSN, NEXT_INSN, PATTERN, REG_NOTES,
	CALL_INSN_FUNCTION_USAGE, SUBREG_REG, SET_SRC, SET_DEST,
	TRAP_CONDITION, TRAP_CODE): Use XEXP.
	(INTVAL): Use XWINT.
	(ADDRESSOF_DECL): Use XTREE.
	(SET_ADDRESSOF_DECL): Delete.
	(NOTE_DECL_NAME, NOTE_DECL_CODE, NOTE_DECL_RTL,
	NOTE_DECL_IDENTIFIER, NOTE_DECL_TYPE): Kill.  These have been
	ifdefed out since 2.6 at least.
	(gen_rtvec_vv): Delete prototype.

	* rtl.h (rtvec_alloc): rt->elem is now an array of rtx,
	not rtunion.
	(copy_most_rtx): Handle 't' format letter.
	* emit-rtl.c (gen_rtvec_v): rt_val->elem is an array of rtx.
	(gen_rtvec_vv): Delete function.  All callers changed to use
	gen_rtvec_v instead.
	* print-rtl.c (print_rtx): Move special casing of NOTEs to
	the '0' format letter.

	* function.c (gen_mem_addressof): Don't use
	SET_ADDRESSOF_DECL; provide `decl' to gen_rtx_ADDRESSOF
	instead.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	Copy 't' slots with XTREE.
	(subst_constants): Treat 't' slots like '[swi]' slots.
	* cse.c (canon_hash, exp_equiv_p): Treat 't' slots like	'0' slots.
	* jump.c (rtx_equal_for_thread_p): Likewise.
	* rtlanal.c (rtx_equal_p): Likewise.
	* stmt.c (expand_end_case): gen_rtx_ADDR_DIFF_VEC now takes
	only four arguments.
	* gengenrtl.c (type_from_format): Provide correct types for
	'b' and 't' slots.


	* tree.h [ENABLE_CHECKING] (TREE_CHECK, TREE_CLASS_CHECK):
	If a recent gcc is in use (always in stage2 and beyond), use
	statement expressions, so we don't make a function call unless
	the check fails.  Evaluate arguments exactly once.
	(CHAIN_CHECK, DO_CHECK, DO_CHECK1, TREE_CHECK1,
	TREE_CLASS_CHECK1, TYPE_CHECK1, DECL_CHECK1, CST_CHECK1):
	Delete.
	(CST_OR_CONSTRUCTOR_CHECK, EXPR_CHECK): Redefine such that
	they evaluate their arguments exactly once, irrespective of
	the compiler in use.

	* tree.c [ENABLE_CHECKING]: Define whichever set of functions
	is used by the currently-enabled check macros.  This is:
	(tree_check_failed, tree_class_check_failed): For gcc.
	(tree_check, tree_class_check, cst_or_constructor_check,
	expr_check): For other compilers.

	* gencheck.c: Do not define any *_CHECK1 macros.

From-SVN: r28769
1999-08-19 22:33:38 +00:00
Bernd Schmidt
49ad7cfa7a Include function.h in most files.
Include function.h in most files.  Remove most of the global variables
duplicated in function.h.  Add accessor macros for them which access
current_function.  Delete INLINE_HEADER rtx and related code, replace
with code using struct function to store inlining related data.

From-SVN: r28626
1999-08-09 14:00:21 +00:00
Richard Henderson
5c7675e906 function.c (init_function_start): Clear prologue & epilogue.
* function.c (init_function_start): Clear prologue & epilogue.
        (prologue_epilogue_contains): New function.
        * alias.c (init_alias_analysis): Use it.
        * rtl.h (prologue_epilogue_contains): Declare it.

From-SVN: r28585
1999-08-07 11:39:03 -07:00
Bernd Schmidt
3f1d071b7b Backport of GC branch patches part 2: kill stmt status saving.
From-SVN: r28374
1999-08-01 12:07:41 +00:00
Bernd Schmidt
b384405b34 Backport of GC branch patches part 1: kill eh status saving.
From-SVN: r28357
1999-07-31 12:46:53 +00:00
Jeff Law
1474e30354 [multiple changes]
Thu May 20 10:00:42 1999   Stephen L Moshier  <moshier@world.std.com>
        * Makefile.in (GCC_FOR_TARGET): Add -I$(build_tooldir)/include.
Thu May 20 09:58:57 1999  Jan Hubicka <hubicka@freesoft.cz>
        * function.c (assign_stack_local): Align stack slot propertly.
        (assign_outer_stack_local): Likewise.

From-SVN: r27073
1999-05-20 16:22:34 -06:00
Vladimir Makarov
8b04083bec function.c (purge_addressof_replacements): Rename into purge_bitfield_addressof_replacements.
Wed May  5 16:26:13 1999  Vladimir Makarov  <vmakarov@tofu.to.cygnus.com>
	* function.c (purge_addressof_replacements): Rename into
 	purge_bitfield_addressof_replacements.
	(purge_addressof_replacements): New variable.
	(purge_addressof_1): Add code for changing addressof in notes for
 	field values which are extracted by usage MEM with narrower mode.
	(purge_addressof): Initialize purge_bitfield_addressof_replacements.

From-SVN: r26784
1999-05-05 13:30:51 +00:00
Mumit Khan
6a9c4aed1a function.c (put_var_into_stack): Change ptr_mode to Pmode in setup for chkr_set_right_libfunc calls.
* function.c (put_var_into_stack): Change ptr_mode to Pmode
        in setup for chkr_set_right_libfunc calls.
        (assign_params): Likewise.
        * expr.c (emit_push_insn): Change ptr_mode to Pmode in
        setup for chkr_copy_bitmap_libfunc and chkr_set_right_libfunc calls.
        (expand_assignment): Change ptr_mode to Pmode in
        setup for chkr_add_libfunc and chkr_copy_bitmap_libfunc.
        (store_expr): Change ptr_mode to Pmode in
        setup for chkr_add_libfunc and chkr_copy_bitmap_libfunc.
        (expand_expr): Change ptr_mode to Pmode in
        setup for chkr_check_addr_libfunc.
        (expand_builtin): Change ptr_mode to Pmode in
        setup for chkr_check_str_libfunc, chkr_copy_bitmap_libfunc and
        chkr_check_addr_libfunc.
        * calls.c (rtx_for_function_call): Change ptr_mode to Pmode in
        setup for chkr_check_exec_libfunc.
        (expand_call): Change ptr_mode to Pmode in
        setup for chkr_set_right_libfunc.
        (expand_call): Change ptr_mode to Pmode in
        setup for chkr_set_right_libfunc.
        (store_one_arg): Change ptr_mode to Pmode in
        setup for chkr_set_right_libfunc.

Co-Authored-By: Donn Terry <donn@interix.com>

From-SVN: r26664
1999-04-26 16:51:09 -06:00
Toshiyasu Morita
07444f1d90 fold-const.c (make_range): Always initialize arg0 and arg1.
* fold-const.c (make_range): Always initialize arg0 and arg1.
        (fold): Simlarly for alt0 and alt1.
        * function.c (fixup_var_refs_insns): Initialize insn_list.
        (instantiate_virtual_regs_1): Initialize offset.
        * optabs.c (expand_binop): Initialize carry_in, carry_out, op0_xhigh
        and op1_xhigh.
        * stmt.c (expand_end_case): Initialize minval and maxval.

From-SVN: r26632
1999-04-25 18:15:54 -06:00
Richard Henderson
4433e33948 function.c (assign_parms/STACK_BYTES): Revert last change, and that of 19 Nov.
* function.c (assign_parms/STACK_BYTES): Revert last change,
        and that of 19 Nov.

From-SVN: r26624
1999-04-25 06:09:33 -07:00
Richard Henderson
fb5eebb932 calls.c (emit_call_1): New arg rounded_stack_size; update callers.
* calls.c (emit_call_1): New arg rounded_stack_size; update callers.
        Update pending_stack_adjust based on this value.
        (compute_argument_block_size): Include pending_stack_adjust in
        PREFERRED_STACK_BOUNDARY alignment.
        * function.c (assign_parms): Don't round to PREFERRED_STACK_BOUNDARY.

From-SVN: r26623
1999-04-25 05:31:52 -07:00
John Wehle
54ff41b717 output.h (current_function_is_leaf, [...]): Declare.
* output.h (current_function_is_leaf,
	current_function_uses_only_leaf_regs): Declare.
	* function.c (current_function_is_leaf,
	current_function_uses_only_leaf_regs): Define.
	(init_function_start): Initialize current_function_is_leaf
	and current_function_uses_only_leaf_regs.
	* final.c (leaf_function): Don't define.
	(final_start_function): Replace uses of leaf_function with
	current_function_uses_only_leaf_regs.
	* toplev.c (rest_of_compilation): Set current_function_is_leaf
	prior to invoking local register allocation.
	(rest_of_compilation): Replace uses of leaf_function with
	current_function_uses_only_leaf_regs.
	* dbxout.c (dbxout_symbol, dbxout_parms): Likewise.
	* dwarf2out.c (add_location_or_const_vaule_attribute): Likewise.
	* dwarfout.c (add_location_or_const_value_attribute): Likewise.
	* sdbout.c (sdbout_symbol): Likewise.
	* sparc.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Likewise.
	* sparc.c (eligible_for_epilogue_delay, output_return,
	sparc_return_peephole_ok): Likewise.
	* sparc.md (leaf_function attribute, untyped_return): Likewise.
	* i386.c (ix86_compute_frame_size): Don't align the stack
	for leaf functions which don't allocate any stack slots.
	* tm.texi: Update documentation.

From-SVN: r26538
1999-04-18 13:09:37 +00:00
Andreas Schwab
0f11903b49 function.c (assign_parms): Undo change of June 9.
* function.c (assign_parms): Undo change of June 9.
Brought over from the gcc2 tree.

From-SVN: r26027
1999-03-27 16:08:37 -07:00
Mark Mitchell
fe9b4957b5 function.c: Include hash.h.
* function.c: Include hash.h.
	(insns_for_mem_entry): New struct.
	(put_reg_into_stack): Take an optional hash-table mapping MEMs to
	the INSNs that use them.
	(fixup_var_refs): Likewise.
	(put_addressof_into_stack): Likewise.
	(purge_addressof_1): Likewise.  Keep the hash-table up to date if
	we add new instructions.
	(fixup_var_refs_insns): Use it to avoid searching the entire
	instruction chain.
	(insns_for_mem_newfunc): New function.
	(insns_for_mem_comp): Likewise.
	(insns_for_mem_walk): Likewise.
	(compute_insns_for_mem): Likewise.
	(pop_function_context_from): Pass NULL for the hash-table.
	(put_var_into_stack): Likewise.
	(gen_mem_addressof): Likewise.
	(flush_addressof): Likewise.
	(purge_addressof): Call compute_insns_for_mem to pre-compute the
	hash table.
	* Makefile.in (OBJS): Include hash.o.
	(function.o): Depend on hash.h.
	* Makefile.in (OBJS): Don't mention hash.o.
	(OBJDEPS): Likewise.

From-SVN: r25922
1999-03-23 07:51:12 +00:00
Kaveh R. Ghazi
54ea1de9f3 Warning fixes:
* c-lex.c (yylex): Remove unused variable `bytes'.
        * flow.c (print_rtl_with_bb): Cast the return value of alloca.
        * function.c (assign_parms): Wrap variable `varargs_setup' in
        macro SETUP_INCOMING_VARARGS.
        (thread_prologue_and_epilogue_insns): Mark parameter `f' with
        ATTRIBUTE_UNUSED.
        * local-alloc.c (no_equiv): Likewise for parameter `store'.
        * sched.c (schedule_insns): Remove unused variables `insn' and `next'.
        * tlink.c (symbol_hash_newfunc, symbol_hash_lookup,
        file_hash_newfunc, file_hash_lookup, demangled_hash_newfunc,
        demangled_hash_lookup, symbol_push, symbol_pop, file_push,
        file_pop, tlink_init, tlink_execute, frob_extension,
        obstack_fgets, tfgets, pfgets, freadsym, read_repo_file,
        maybe_tweak, recompile_files, read_repo_files,
        demangle_new_symbols, scan_linker_output): Add static prototype.
        (symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc):
        Make the third argument a `hash_table_key'.
        * toplev.c (debug_start_source_file): Mark parameter `filename'
        with ATTRIBUTE_UNUSED.

From-SVN: r25871
1999-03-20 19:21:31 +00:00
Kaveh R. Ghazi
91813b2835 Warning fixes:
* calls.c (initialize_argument_information): Mark parameters
        `num_actuals' and `n_named_args' with ATTRIBUTE_UNUSED.
        * dbxout.c (dbxout_start_new_source_file): Likewise for parameter
        `filename'.
        (dbxout_finish): Likewise for parameters `file' and `filename'.
        (dbxout_prepare_symbol): Likewise for parameter `decl'.
        (dbxout_begin_function): Likewise.
        * explow.c (hard_function_value): Likewise for parameter `func'.
        * function.c (locate_and_pad_parm): Likewise for parameter `fndecl'.
        * expmed.c (expand_divmod): Omit unused argument to `expand_abs'.
        * expr.c (expand_expr): Likewise.
        * expr.h (expand_abs): Delete unused argument from prototype.
        * optabs.c (expand_abs): Remove unused parameter `unsignedp'.
        * sdbout.c (sdbout_init): Mark parameter `syms' with ATTRIBUTE_UNUSED.
        (sdbout_end_block): Likewise for parameter `n'.
        * toplev.c (debug_define): Likewise for parameters `lineno' and
        `buffer'.
        (debug_undef): Likewise.
        * varasm.c (named_section): Likewise for parameter 'reloc'.
        (assemble_external): Likewise for parameter `decl'.
        (assemble_alias): Likewise for parameter `target'.

From-SVN: r25858
1999-03-19 08:50:14 +00:00
Richard Henderson
5f98f7c481 function.c (fixup_var_refs_1): First try moving the expression directly into a register.
* function.c (fixup_var_refs_1): First try moving the expression
        directly into a register.  Don't separate cc0 setter and user.

From-SVN: r25821
1999-03-17 04:17:02 -08:00
John Wehle
6f67a30d15 function.c (assign_stack_temp_for_type): Abort if mode == Blkmode and align is less than BIGGEST_ALIGNMENT / BITS_PER_UNIT.
* function.c (assign_stack_temp_for_type): Abort
        if mode == Blkmode and align is less than
        BIGGEST_ALIGNMENT / BITS_PER_UNIT.
        (assign_stack_temp_for_type): Round the size parameter
        passed to assign_stack_local instead of size itself.
Bootstrapped on the PA and x86.

From-SVN: r25593
1999-03-04 18:19:25 -07:00
Jeffrey A Law
202d316417 function.c (current_function_has_computed_jump): Remove duplicate definition.
* function.c (current_function_has_computed_jump): Remove duplicate
        definition.

From-SVN: r25571
1999-03-03 16:13:41 -07:00
Richard Henderson
e881bb1b1b Flow rewrite to use basic block structures and edge lists.
From-SVN: r25450
1999-02-25 15:45:42 -08:00
J"orn Rennecke
9ab70a9bd7 sh.h (PASS_IN_REG_P): For TARGET_HITACHI, don't pass structures in registers.
* sh.h (PASS_IN_REG_P):  For TARGET_HITACHI, don't pass structures
	in registers.
	* expr.h (PRETEND_OUTGOING_VARARGS_NAMED): Provide default definition.
	* function.c (assign_parms): Honour PRETEND_OUTGOING_VARARGS_NAMED.
	* calls.c (expand_call): Likewise.
	* sh.c (sh_expand_prologue): For TARGET_HITACHI, don't push varargs /
	stdarg arguments.
	* sh.h (CPP_SPEC): Add -D__HITACHI__ for -mhitachi.
	(FUNCTION_ARG):  For TARGET_HITACHI, don't pass unnamed
	arguments in registers.
	(PRETEND_OUTGOING_VARARGS_NAMED): Define.
	* va-sh.h (entire file): If __HITACHI__ is defined, use sh[123]
	flavour varargs.

From-SVN: r25440
1999-02-25 14:02:32 +00:00
Mark Mitchell
a4c6502a66 cse.c (dump_class): New function.
* cse.c (dump_class): New function.
	(invalidate_memory): Fix typo in comment.
	* function.c (temp_slot): Add an alias set field.
	(assign_stack_temp): Only reuse slots if they will have the
	same alias set as before.
	(combine_temp_slots): Don't combine if -fstrict-aliasing;
	that's unsafe.
	* rtl.c (copy_rtx): Copy all the flags (in particular,
	MEM_SCALAR_P).

From-SVN: r25372
1999-02-22 13:34:33 +00:00
Jeffrey A Law
c87a0a3994 function.c (assign_stack_temp_for_type): Round SIZE before calling assign_stack_local for BLKmode slots.
* function.c (assign_stack_temp_for_type): Round SIZE before calling
        assign_stack_local for BLKmode slots.

From-SVN: r25290
1999-02-18 10:51:58 -07:00
John Wehle
d16790f212 function.c (assign_stack_temp_for_type): Clear best_p when an exact match is found.
* function.c (assign_stack_temp_for_type): Clear best_p
        when an exact match is found.
        * i386.h (LOCAL_ALIGNMENT): Define.
        * function.c (assign_stack_local, assign_outer_stack_local): Use it.
        (assign_stack_temp_for_type): New function based on assign_stack_temp.
        (assign_stack_temp): Call it.
        (assign_temp): Use assign_stack_temp_for_type, not assign_stack_temp.
        * stmt.c: Use assign_temp, not assign_stack_temp.
        * tm.texi: Document LOCAL_ALIGNMENT.

From-SVN: r25143
1999-02-10 16:10:43 -07:00
Richard Henderson
acd693d10c output.h (current_function_has_computed_jump): Rename from current_function_addresses_labels.
* output.h (current_function_has_computed_jump): Rename from
        current_function_addresses_labels.
        * function.h (struct function): Likewise for addresses_labels member.
        * rtl.h (FUNCTION_FLAGS_HAS_COMPUTED_JUMP): Likewise.
        * function.c (current_function_has_computed_jump): Likewise.
        Update all references.
        * integrate.c (function_cannot_inline_p):
        Test current_function_has_computed_jump instead of addresses_labels.
        (initialize_for_inline): Likewise save.
        (output_inline_function): Likewise restore.
        * expr.c (expand_expr): Don't reference addresses_labels variables.
        * stmt.c (expand_computed_goto): Set has_computed_jump.

From-SVN: r25100
1999-02-08 13:39:33 -08:00
Dave Brolley
d33c2956a4 function.c (fixup_var_refs): Scan catch_clauses too.
Fri Feb  5 17:08:01 1999  Dave Brolley  <brolley@cygnus.com>
        * function.c (fixup_var_refs): Scan catch_clauses too.

From-SVN: r25049
1999-02-05 09:12:38 -05:00
Dave Brolley
89e99eea80 emit-rtl.c (remove_insn): New function.
Fri Jan 29 18:26:07 1999  Dave Brolley  <brolley@cygnus.com>
	* emit-rtl.c (remove_insn): New function.
	* rtl.h (remove_insn): Add prototype.
	* function.c (reposition_prologue_and_epilogue_notes): Call remove_insn.

From-SVN: r24908
1999-01-29 10:25:17 -05:00
J"orn Rennecke
d91dfff4d1 function.c (purge_addressof_1): Handle case when a register has been used in a wider mode.
* function.c (purge_addressof_1): Handle case when a register
	has been used in a wider mode.

From-SVN: r24887
1999-01-27 11:35:30 +00:00
Jeffrey A Law
ab87f8c8d1 Merge in gcc2 snapshot 19980929. See gcc/ChangeLog and gcc/FSFChangeLog for
details.

From-SVN: r24879
1999-01-26 18:43:17 -07:00
Jim Wilson
ea0f9a859f Fix i960 build failure with unrecognizable insn.
* function.c (expand_function_end): Pass arg_pointer_save_area to
	validize_mem before using it.  Emit code into a sequence.

From-SVN: r24872
1999-01-26 05:34:42 -08:00
Dave Brolley
efd8cba0c8 function.c (assign_parms): Save and restore setting of TREE_USED (parm).
Wed Jan 20 18:15:08 1999  Dave Brolley  <brolley@cygnus.com>
	* function.c (assign_parms): Save and restore setting of
 	TREE_USED (parm).

From-SVN: r24789
1999-01-20 10:26:31 -05:00
Mark Mitchell
c6df88cbec rtl.h (rtx_def): Update documentation.
* rtl.h (rtx_def): Update documentation.
	(MEM_IN_STRUCT_P): Likewise.
	(MEM_SCALAR_P): New macro.
	(MEM_COPY_ATTRIBUTES): Likewise.
	(MEM_SET_IN_STRUCT_P): Likewise.
	* rtl.texi (MEM_SCALAR_P): Document.
	* alias.c (canon_rtx): Use MEM_COPY_ATTRIBUTES.
	(fixed_scalar_and_varying_struct_p): New function.  Use
	MEM_SCALAR_P rather than !MEM_IN_STRUCT_P.
	(aliases_everything_p): Likewise.
	(true_dependence): Use them.
	(write_dependence_p): New function, containing code common to
	anti_dependence and output_dependence.
	(anti_dependence): Use it.
	(output_dependence): Likewise.
	* calls.c (save_fixed_argument_area): Don't clear
	MEM_IN_STRUCT_P.
	(expand_call): Use MEM_SET_IN_STRUCT_P.
	(emit_library_call): Don't clear MEM_IN_STRUCT_P.
	(emit_library_call_value): Likewise.
	(store_one_arg): Use MEM_SET_IN_STRUCT_P.
	* combine.c (simplify_rtx): Use MEM_COPY_ATTRIBUTES.
	(make_extraction): Likewise.
	(simplify_shift_const): Likewise.
	(gen_lowpart_for_combine): Likewise.
	* cse.c (gen_lowpart_if_possible): Use MEM_COPY_ATTRIBUTES.
	* emit-rtl.c (operand_subword): Likewise.
	(change_address): Likewise.
	* explow.c (stabilize): Use MEM_COPY_ATTRIBUTES.
	* expr.c (protect_from_queue): Use MEM_COPY_ATTRIBUTES.
	(emit_group_store): Use MEM_SET_IN_STRUCT_P.
	(copy_blkmode_from_reg): Likewise.
	(store_field): Likewise.
	(expand_expr): Remove bogus guesswork setting MEM_IN_STRUCT_P
	heuristically.  Use MEM_SET_IN_STRUCT_P.
	(get_memory_rtx): Likewise.
	* final.c (alter_subreg): Use MEM_COPY_ATTRIBUTES.
	* function.c (assign_stack_temp): Clear MEM_SCALAR_P and
	MEM_ALIAS_SET on newly returned MEMs.
	(assign_temp): Use MEM_SET_IN_STRUCT_P.
	(put_reg_into_stack): Likewise.
	(fixup_var_refs1): Use MEM_COPY_ATTRIBUTES.
	(gen_mem_addressof): Use MEM_SET_IN_STRUCT_P.
	(assign_parms): Likewise.
	(expand_function): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	(copy_rtx_and_substitute): Use MEM_COPY_ATTRIBUTES.
	* loop.c (note_addr_stored): Remove check on MEM_IN_STRUCT_P.
	* optabs.c (gen_move_insn): Use MEM_COPY_ATTRIBUTES.
	* print-rtl.c (print_rtx): Print /f for frame_related.
	* recog.c (validate_replace_rtx_1): Use MEM_COPY_ATTRIBUTES.
	* reload1.c (reload): Copy MEM_SCALAR_P as well.
	* stmt.c (expand_decl): Use MEM_SET_IN_STRUCT_P.
	(expand_anon_union_decl): Use MEM_COPY_ATTRIBUTES.
	* varasm.c (make_decl_rtl): Use MEM_SET_IN_STRUCT_P.
	(output_constant_def): Likewise.
	* a29k.c (a29k_set_memflags_1): Take scalar_p.
	Set MEM_SCALAR_P.
	(a29k_set_memflags): Use it.
	* alpha.c (get_aligned_mem): Use MEM_COPY_ATTRIBUTES.
	* c4x.c (c4x_scan_for_ld): Likewise.
	* h8300.c (fix_bit_operand): Likewise.
	* m88k.c (legitimize_address): Likewise.
	(block_move_loop): Likewise.
	(block_move_no_loop): Likewise.
	(block_move_sequence): Likewise.
	(m88k_builtin_saveregs): Use MEM_SET_IN_STRUCT_P.
	* mips/abi64.h (SETUP_INCOMING_VARARGS): Likewise.
	* rs6000.c (expand_block_move_insn): Use MEM_COPY_ATTRIBUTES.
	* sh.c (sh_builtin_saveregs): Use MEM_SET_IN_STRUCT_P.
	* arm.h (arm_gen_load_multiple): Take scalar_p.
	(arm_store_load_multiple): Likewise.
	* arm.c (arm_gen_load_multiple): Likewise.
	(arm_gen_store_multiple): Likewise.
	(arm_gen_movstrqi): Treat MEM_SCALAR_P like MEM_IN_STRUCT_P.

From-SVN: r24759
1999-01-19 10:32:33 +00:00
Richard Henderson
fbdfe39cf2 function.c (purge_addressof_1): If the note accesses a mem+addressof in a wider mode than any replacement...
* function.c (purge_addressof_1): If the note accesses a mem+addressof
        in a wider mode than any replacement, adjust the cached replacement.
        Cache trivial substitutions as well.

From-SVN: r24629
1999-01-11 16:24:25 -08:00
Richard Henderson
a5cad80034 Update copyrights.
From-SVN: r24624
1999-01-11 15:15:28 -08:00
Richard Henderson
3b413743e0 basic-block.h (basic_block_head): Rename to x_basic_block_head.
* basic-block.h (basic_block_head): Rename to x_basic_block_head.
        (basic_block_end): Rename to x_basic_block_end.
        (BLOCK_HEAD, BLOCK_END): Update.
        * caller-save.c: Change basic_block_head/end references to
        BLOCK_HEAD/END.
        * combine.c, flow.c, function.c, gcse.c, global.c: Likewise.
        * graph.c, haifa-sched.c, local-alloc.c, regclass.c: Likewise.
        * regmove.c, reload1.c, reorg.c, sched.c: Likewise.

From-SVN: r24622
1999-01-11 14:37:20 -08:00
Bernd Schmidt
ba716ac925 function.c (nonlocal_goto_handler_slots): Renamed from nonlocal_goto_handler_slot; now an EXPR_LIST chain.
* function.c (nonlocal_goto_handler_slots): Renamed from
        nonlocal_goto_handler_slot; now an EXPR_LIST chain.
        (push_function_context_to): Adjust for this change.
        (pop_function_context_from): Likewise.
        (init_function_start): Likewise.
        (expand_function_end): Likewise.
        * function.h (struct function): Likewise.
        * calls.c (expand_call): Likewise.
        * explow.c (allocate_dynamic_stack_space): Likewise.
        * expr.h (nonlocal_goto_handler_slots): Rename its declaration.
        * stmt.c (declare_nonlocal_label): Make a new handler slot for each
        label.
        (expand_goto): When doing a nonlocal goto, find corresponding handler
        slot for it.  Don't put the label address in the static chain register.
        (expand_end_bindings): Break out nonlocal goto handling code into
        three new functions.
        (expand_nl_handler_label, expand_nl_goto_receiver,
        expand_nl_goto_receivers): New static functions, broken out of
        expand_end_bindings and adapted to create one handler per nonlocal
        label.
        * function.c (delete_handlers): Delete insn if it references any of
        the nonlocal goto handler slots.
        * i960.md (nonlocal_goto): Comment out code that modifies
        static_chain_rtx.
        * sparc.md (nonlocal_goto): Likewise.
        (goto_handler_and_restore_v9): Comment out.
        (goto_handler_and_restore_v9_sp64): Comment out.

From-SVN: r23732
1998-11-20 00:37:42 -07:00
Bernd Schmidt
c795bca923 expr.c (STACK_BYTES): Delete unused macro.
* expr.c (STACK_BYTES): Delete unused macro.
	* calls.c: Provide default for PREFERRED_STACK_BOUNDARY.
	(STACK_BYTES): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY.
	(expand_call): Likewise.
	(emit_library_call): Likewise.
	(emit_library_call_value): Likewise.
	* function.c: Provide default for PREFERRED_STACK_BOUNDARY.
	(STACK_BYTES): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY.
	* explow.c: Provide default for PREFERRED_STACK_BOUNDARY.
	(round_push): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY.
	(allocate_dynamic_stack_space): Likewise.
	* tm.texi (PREFERRED_STACK_BOUNDARY): Document new macro.
	(STACK_BOUNDARY): Update description to reflect the new situation.

From-SVN: r23730
1998-11-19 15:47:55 -07:00
J"orn Rennecke
de0dd9345e function.c (purge_addressof_1): Unshare rtl created by store_bit_field.
* function.c (purge_addressof_1): Unshare rtl created by
	store_bit_field.

From-SVN: r23670
1998-11-15 20:43:19 +00:00
Richard Henderson
da9b1f9ca0 function.c (purge_addressof): Clear purge_addressof_replacements only after processing the whole function.
* function.c (purge_addressof): Clear purge_addressof_replacements
        only after processing the whole function.

From-SVN: r23554
1998-11-06 18:51:21 -08:00
Andreas Schwab
b5bd3b3c46 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
        * function.c (purge_addressof_1): Instead of aborting when a
        bitfield insertion as a replacement for (MEM (ADDRESSOF)) does not
        work just put the ADDRESSOF on stack.  Otherwise remember all such
        successfull replacements, so that exactly the same replacements
        can be made on the REG_NOTEs.  Remove the special case for CALL
        insns again.
        (purge_addressof_replacements): New variable.
        (purge_addressof): Clear it at end.

From-SVN: r23405
1998-10-28 08:46:46 -08:00
Jeff Law
18e765cbda [multiple changes]
1998-10-18 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
        * reorg.c (steal_delay_list_from_target) Check for insns that
        modify the condition codes and effect the direction of the jump
        in the sequence.
Sat Oct 17 13:09:09 1998  Graham  <grahams@rcp.co.uk>
        * function.c (purge_addressof_1): Replace call to
        emit_insns_before() with emit_insn_before().

From-SVN: r23189
1998-10-19 14:23:44 -06:00
Jeffrey A Law
6acdd0fd75 function.c (uninitialized_vars_warning): Do not warn for a VAR_DECL if it has a nonzero DECL_INITIAL.
* function.c (uninitialized_vars_warning): Do not warn for a VAR_DECL
        if it has a nonzero DECL_INITIAL.

From-SVN: r23164
1998-10-18 10:34:41 -06:00
Kaveh R. Ghazi
79c9824ecb Warning fixes:
* Makefile.in (flow.o): Depend on recog.h.
        * cpplib.h (directive_table): Add missing initializiers.
        (finclude): Change type of variable `bsize' to size_t.
        * cse.c (rtx_cost): Mark parameter `outer_code' with ATTRIBUTE_UNUSED.
        * dwarfout.h (dwarfout_label): Wrap prototype in macro RTX_CODE.
        * fix-header.c (lookup_std_proto): Cast the result of `strlen' to
        `int' when comparing against one.
        (cpp_file_line_for_message): Mark parameter `pfile' with
        ATTRIBUTE_UNUSED.
        (cpp_fatal): Mark parameter `pfile' with ATTRIBUTE_UNUSED.
        * flow.c: Include recog.h.
        (sbitmap_copy): Cast arguments 1 & 2 of `bcopy' to (PTR).
        * function.c (thread_prologue_and_epilogue_insns): Mark parameter
        `f' with ATTRIBUTE_UNUSED.
        (reposition_prologue_and_epilogue_notes): Likewise.
        * genopinit.c (gen_insn): Cast argument of ctype functions to
        `unsigned char'.
        * haifa-sched.c: Include recog.h.
        (blockage_range): Cast result of UNIT_BLOCKED macro to (int) when
        comparing against one.
        * libgcc2.a (__throw): Revert ATTRIBUTE_UNUSED change for now.
        * mips-tfile.c (parse_end): Cast the argument of ctype function to
        `unsigned char'.
        (parse_ent): Likewise.
        (parse_input): Likewise.
        * optabs.c (init_libfuncs): Likewise.
        * protoize.c (find_rightmost_formals_list): Likewise.
        * recog.h (const_double_operand): Fix typo in prototype.
        * tlink.c (scan_linker_output): Cast the argument of ctype
        function to `unsigned char'.
        * toplev.c (check_lang_option): Cast the result of `strlen' to
        `int' when comparing against one.

From-SVN: r23155
1998-10-17 20:26:29 +00:00
Andreas Schwab
2fdc44405f function.c (purge_addressof_1): Force the first argument of a CALL insn to memory.
�
        * function.c (purge_addressof_1): Force the first argument of a
        CALL insn to memory.

From-SVN: r23071
1998-10-13 17:58:34 -06:00
Richard Henderson
470032d72e function.c (purge_addressof_1): Fix typo in inequality: do bitfield optimization for equal mode sizes.
* function.c (purge_addressof_1): Fix typo in inequality: do
        bitfield optimization for equal mode sizes.
        * expmed.c (store_bit_field): Don't take subregs of subregs in
        the movstrict case.  Tidy a potential problem in the multi-word case.
        (extract_bit_field): Likewise.

From-SVN: r23066
1998-10-13 16:06:47 -07:00
John Wehle
fdb8a883a4 flow.c: Update comment.
* flow.c: Update comment.
        (notice_stack_pointer_modification): New static function.
        (record_volatile_insns): Use it.
        (mark_regs_live_at_end): Mark the stack pointer as alive
        at the end of the function if current_function_sp_is_unchanging
        is set.
        (life_analysis_1): Set current_function_sp_is_unchanging.
        * function.c: Define it.
        (init_function_start): Initialize it.
        * output.h: Declare it.
        * reorg.c (fill_simple_delay_slots, dbr_schedule): Mark
        the stack pointer as alive at the end of the function if
        current_function_sp_is_unchanging is set.
        * i386.c (ix86_epilogue): Optimize the restoring
        of the stack pointer.

From-SVN: r23009
1998-10-12 04:06:49 -06:00
Ken Raeburn
7d384cc0b3 Fine-grained control of -fcheck-memory-usage with new no_check_memory_usage attribute.
Fine-grained control of -fcheck-memory-usage with new no_check_memory_usage
attribute.  Misc minor bugfixes and tests for it too.

From-SVN: r22983
1998-10-11 02:21:54 +00:00
Richard Henderson
d006aa54ba expmed.c (store_bit_field): Pun non-integral str_rtx modes.
* expmed.c (store_bit_field): Pun non-integral str_rtx modes.
        Take extra care for op0 now possibly being a subreg.
        (extract_bit_field): Likewise.
        * function.c (purge_addressof_1): Revert Oct 4 change.  Drop
        the reg to memory if there is no equal sized integral mode.
        * stor-layout.c (int_mode_for_mode): New function.
        * machmode.h: Prototype it.

From-SVN: r22962
1998-10-09 08:50:25 -07:00
David S. Miller
ca2636edcd function.c (purge_addressof_1): If trying to take a sub-word integral piece of a floating point mode...
* function.c (purge_addressof_1): If trying to take a sub-word
	integral piece of a floating point mode, put it on the stack.

From-SVN: r22804
1998-10-03 18:29:21 -07:00
David S. Miller
47401c4d4b function.c (purge_addressof_1): Do not perform endianness corrections on bitpos, who we call will do it for us.
* function.c (purge_addressof_1): Do not perform endianness
	corrections on bitpos, who we call will do it for us.

From-SVN: r22766
1998-10-02 13:17:50 -07:00
Richard Henderson
b8c08e043a Typo in last commit.
From-SVN: r22687
1998-09-30 11:04:51 -07:00
Richard Henderson
f7b6d10479 function.c (purge_addressof_1): Use bitfield manipulation routines to handle mem mode < reg mode.
* function.c (purge_addressof_1): Use bitfield manipulation
        routines to handle mem mode < reg mode.

From-SVN: r22686
1998-09-30 11:03:48 -07:00
Mark Mitchell
95ca22f405 function.c (gen_mem_addressof): If the address REG is REG_USERVAR_P make the new REG be so also.
* function.c (gen_mem_addressof): If the address REG is
	REG_USERVAR_P make the new REG be so also.
	* loop.c (scan_loop): Apply DeMorgan's laws and add documentation
	in an attempt to clarify slightly.

From-SVN: r22667
1998-09-30 10:10:02 +00:00
Richard Henderson
c93b03c2d8 reload1.c (emit_reload_insns): Accept a new arg for the bb.
* reload1.c (emit_reload_insns): Accept a new arg for the bb.  Use
        it to update bb boundaries.  Update caller.
        * function.c (reposition_prologue_and_epilogue_notes): Update
        bb boundaries wrt the moved note.

From-SVN: r22507
1998-09-20 16:29:09 -07:00
Jeffrey A Law
0d8e55d8cd combine.c (make_extraction): If no mode is specified for an operand of insv...
* combine.c (make_extraction): If no mode is specified for
        an operand of insv, extv, or extzv, default it to word_mode.
        (simplify_comparison): Similarly.
        * expmed.c (store_bit_field): Similarly.
        (extract_bit_field): Similarly.
        * function.c (fixup_var_regs_1): Similarly.
        * recog.c (validate_replace_rtx_1): Similarly.
        * mips.md (extv, extzv, insv expanders): Default modes for most
        operands.  Handle TARGET_64BIT.
        (movdi_uld, movdi_usd): New patterns.

From-SVN: r22439
1998-09-15 16:47:10 -06:00
Richard Henderson
710384268d tree.h (BUILT_IN_CALLER_RETURN_ADDRESS): Unused.
* tree.h (BUILT_IN_CALLER_RETURN_ADDRESS): Unused.  Kill.
	(BUILT_IN_FP, BUILT_IN_SP, BUILT_IN_SET_RETURN_ADDR_REG): Kill.
	(BUILT_IN_EH_STUB_OLD, BUILT_IN_EH_STUB, BUILT_IN_SET_EH_REGS): Kill.
	(BUILT_IN_EH_RETURN, BUILT_IN_DWARF_CFA): New.
	* c-decl.c (init_decl_processing): Update accordingly.
	* expr.c (expand_builtin): Likewise.
	* cp/decl.c (init_decl_processing): Likewise.
	* rtl.h (global_rtl): Add cfa entry.
	(virtual_cfa_rtx, VIRTUAL_CFA_REGNUM): New.
	(LAST_VIRTUAL_REGISTER): Update.
	* emit-rtl.c (global_rtl): Add cfa entry.
	(init_emit): Initialize it.
	* function.c (cfa_offset): New.
	(instantiate_virtual_regs): Initialize it.
	(instantiate_virtual_regs_1): Instantiate virtual_cfa_rtx.
	(expand_function_end): Call expand_eh_return.
	* tm.texi (ARG_POINTER_CFA_OFFSET): New.
	* except.c (current_function_eh_stub_label): Kill.
	(current_function_eh_old_stub_label): Likwise; update all references.
	(expand_builtin_set_return_addr_reg): Kill.
	(expand_builtin_eh_stub_old, expand_builtin_eh_stub): Kill.
	(expand_builtin_set_eh_regs): Kill.
	(eh_regs): Produce a third reg for the actual handler address.
	(eh_return_context, eh_return_stack_adjust): New.
	(eh_return_handler, eh_return_stub_label): New.
	(init_eh_for_function): Initialize them.
	(expand_builtin_eh_return, expand_eh_return): New.
	* except.h: Update prototypes.
	* flow.c (find_basic_blocks_1): Update references to the stub label.
	* function.h (struct function): Kill stub label elements.
	* libgcc2.c (in_reg_window): For REG_SAVED_REG, check that the
	register number is one that would be in the previous window.
	Provide a dummy definition for non-windowed targets.
	(get_reg_addr): New function.
	(get_reg, put_reg, copy_reg): Use it.
	(__throw): Rely on in_reg_window, not INCOMING_REGNO.  Kill stub
	generating code and use __builtin_eh_return.  Use __builtin_dwarf_cfa.
	* alpha.c (alpha_eh_epilogue_sp_ofs): New.
	(alpha_init_expanders): Initialize it.
	(alpha_expand_epilogue): Use it.
	* alpha.h: Declare it.
	* alpha.md (eh_epilogue): New.
	* m68h.h (ARG_POINTER_CFA_OFFSET): New.
	* sparc.h (ARG_POINTER_CFA_OFFSET): New.

From-SVN: r22436
1998-09-15 12:19:12 -07:00
Ken Raeburn
07417085a1 Function entry/exit profiling instrumentation:
* expr.h (profile_function_entry_libfunc, profile_function_exit_libfunc):
Declare new variables.
* optabs.c: Define them here.
(init_optabs): Initialize them.
* tree.h (struct tree_decl): New flag no_instrument_function_entry_exit.
(DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT): New accessor macro.
* c-decl.c (duplicate_decls): Merge it.
* c-common.c (enum attrs): New value A_NO_INSTRUMENT_FUNCTION.
(init_attributes): Use it for "no_instrument_function".
(decl_attributes): Handle it, for functions that have not yet been compiled.
Set decl flag.
* flags.h (flag_instrument_function_entry_exit): Declare new variable.
* toplev.c (flag_instrument_function_entry_exit): Define it here.
(f_options): New option "instrument-functions".
* function.h (struct function): New field instrument_entry_exit.
* function.c (current_function_instrument_entry_exit): New variable.
(push_function_context_to, pop_function_context_from): Save and restore.
(expand_function_start): Set current_ variable, maybe emit return label and
entry profile call.
(expand_function_end): Maybe emit exit profile call.
Testsuite:
* gcc.c-torture/special/eeprof-1.c: New test, for -finstrument-functions.
* gcc.c-torture/special/special.exp: Run it.

From-SVN: r21495
1998-07-30 10:38:22 +00:00
Jim Wilson
07362cb321 Fix some sparc complex testsuite failures.
* function.c (fixup_var_refs_insns): Handle CLOBBER of a CONCAT.

From-SVN: r21251
1998-07-17 04:22:40 -07:00
Richard Henderson
aac5cc1620 expr.c (emit_group_load, [...]): Rewrite considering the size and alignment of the structure being manipulated.
* expr.c (emit_group_load, emit_group_store): Rewrite considering
        the size and alignment of the structure being manipulated.
        * expr.c, calls.c, function.c: Update all callers.
        * expr.h: Update prototypes.
        * cse.c (invalidate): Cope with parallels.

From-SVN: r20867
1998-06-30 22:10:51 -07:00
Jeff Law
9ec36da574 * Merge from gcc2 June 9, 1998 snapshot. See ChangeLog.13 for
details.

From-SVN: r20808
1998-06-29 15:40:49 -06:00
Mark Mitchell
41472af877 invoke.texi (-fstrict-aliasing): Document.
* invoke.texi (-fstrict-aliasing): Document.
	* rtl.texi (MEM_ALIAS_SET): Document.
	* flags.h (flag_strict_aliasing): Declare.
	* toplev.c (flag_strict_aliasing): Define.
	(f_options): Add -strict-aliasing.
	(main): Set flag_strict_aliasing if -O2 or higher.
	* tree.h (tree_type): Add alias_set field.
	(TYPE_ALIAS_SET): New macro.
	(TYPE_ALIAS_SET_KNOWN_P): Likewise.
	(get_alias_set): Declare.
	* tree.c (lang_get_alias_set): Define.
	(make_node): Initialize TYPE_ALIAS_SET.
	(get_alias_set): New function.
	* print-tree.c (print_node): Dump the alias set for a type.
	* c-tree.h (c_get_alias_set): Declare.
	* c-common.c (c_get_alias_set): New function.
	* c-decl.c (init_decl_processing): Set lang_get_alias_set.
	* expr.c (protect_from_queue): Propogage alias sets.
	(expand_assignment): Calculate alias set for new MEMs.
	(expand_expr): Likewise.
	* function.c (put_var_into_stack): Likewise.
	(put_reg_into_stack): Likewise.
	(gen_mem_addressof): Likewise.
	(assign_parms): Likewise.
	* stmt.c (expand_decl): Likewise.
	* varasm.c (make_decl_rtl): Eliminate redundant clearing of
	DECL_RTL.  Calculate alias set for new MEMs.
	* rtl.def (REG): Add dummy operand.
	(MEM): Add extra operand to store the MEM_ALIAS_SET.
	* rtl.h (MEM_ALIAS_SET): New macro.
	(gen_rtx_MEM): Declare.
	* emit-rtl.c (gen_rtx_MEM): New function.
	* gengenrtl.c (sepcial_rtx): Make MEMs special.
	* alias.c (CHECK_ALIAS_SETS_FOR_CONSISTENCY): New macro.
	(DIFFERENT_ALIAS_SETS_P): Likewise.
	(canon_rtx): Propogate the alias set to the new MEM.
	(true_dependence): Check the alias sets.
	(anti_dependence): Likewise.
	(output_dependence): Likewise.
	* explow.c (stabilize): Progoate alias sets.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* final.c (alter_subreg): Make sure not to leave MEM_IN_STRUCT_P
	in an unpredictable state.  Propogate alias sets.
	* reload1.c (reload): Clear MEM_ALIAS_SET for new MEMs about which
	we have no alias information.

From-SVN: r20719
1998-06-25 15:14:41 +00:00
Jason Merrill
aeb302bbec function.c: Define current_function_cannot_inline.
* function.c: Define current_function_cannot_inline.
	(push_function_context_to): Save it.
	(pop_function_context_from): Restore it.
	* function.h (struct function): Provide it a home.
	* output.h: Declare it.
	* integrate.c (function_cannot_inline_p): Check it.
	* decl.c (cp_finish_decl): Disable inlining of extern inlines
	with static variables.

From-SVN: r20332
1998-06-08 06:52:37 -04:00
Andreas Schwab
7a87758dfb m68k.h: Declare more functions used in macros.
* m68k.h: Declare more functions used in macros.
        (REG_CLASS_CONTENTS): Completely embrace initializer.
        * m68k.md (adddi3, subdi3): Add abort call to avoid warning
        about returning no value.
        * cse.c (find_best_addr): Declare p and found_better only if
        needed.
        * dbxout.c (dbxout_continue): Define only if DBX_CONTIN_LENGTH > 0.
        * dwarfout.c (string_length_attribute): #if 0 away.
        * function.c (expand_function_end): Define varible blktramp only
        if needed.
        * jump.c (find_insert_position): Define only if !HAVE_cc0.
        * loop.c (combine_givs_p): Define variable tem only if needed.
        * real.c: Comment out unused functions eabs, eround,
        e{24,53,64,113}toasc and eiinfin.

From-SVN: r19998
1998-05-23 17:14:57 -06:00
Per Bothner
b274104c47 function.c (init_function_start): Don't call emit_line_note if lineno is 0.
8
	* function.c (init_function_start):  Don't call emit_line_note if
	lineno is 0.  (Can happen when compiling Java .class files.)

From-SVN: r19930
1998-05-21 05:23:59 -07:00
Kaveh R. Ghazi
487a6e06ce Warning Fixes:
* Makefile.in (print-rtl.o): Depend on bitmap.h.
        (dbxout.o): Depend on toplev.h.
        ($(SCHED_PREFIX)sched.o): Likewise.
        ($(out_object_file)): Likewise for system.h and toplev.h.
        (cppmain.o): Depend on gansidecl.h.
        (cpplib.o): Likewise.
        (cpperror.o): Likewise.
        (cppexp.o): Likewise.
        (cpphash.o): Likewise.
        (cppalloc.o): Likewise.
        (fix-header.o): Depend on cpplib.h and cpphash.h.
        (scan-decls.o): Depend on gansidecl.h.
        * basic-block.h (free_regset_vector): Add prototype.
        * cccp.c (check_precompiled): Mark parameter `fname' with
        ATTRIBUTE_UNUSED.
        (do_assert): Likewise for `op' and `keyword'.
        (do_unassert): Likewise.
        (do_line): Likewise for `keyword'.
        (do_error): Likewise for `op' and `keyword'.
        (do_warning): Likewise.
        (do_ident): Likewise for `keyword'.
        (do_pragma): Likewise for `limit', `op' and `keyword'.
        (do_sccs): Likewise.
        (do_if): Likewise for `keyword'.
        (do_elif): Likewise.
        (do_else): Likewise.
        (do_endif): Likewise.
        * collect2.c (getenv): Remove redundant prototype.
        (collect_exit, collect_execute, dump_file): Likewise.
        (dump_list): Wrap prototype and definition in COLLECT_EXPORT_LIST.
        (dump_prefix_list): Hide prototype and definition.
        * sparc.c: Include toplev.h.
        (intreg_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED.
        (symbolic_memory_operand): Likewise.
        (sp64_medium_pic_operand): Likewise.
        (data_segment_operand): Likewise.
        (text_segment_operand): Likewise.
        (splittable_symbolic_memory_operand): Likewise.
        (splittable_immediate_memory_operand): Likewise.
        (eq_or_neq): Likewise.
        (normal_comp_operator): Likewise.
        (noov_compare_op): Likewise.
        (v9_regcmp_op): Likewise.
        (v8plus_regcmp_op): Likewise.
        (extend_op): Likewise.
        (cc_arithop): Likewise.
        (cc_arithopn): Likewise.
        (small_int): Likewise.
        (uns_small_int): Likewise.
        (clobbered_register): Likewise.
        (legitimize_pic_address): Likewise.
        (delay_operand): Likewise.
        (sparc_builtin_saveregs): Remove unused variable `stdarg'.
        * sparc.h (order_regs_for_local_alloc, eligible_for_return_delay,
        sparc_issue_rate, v8plus_regcmp_p): Add prototypes.
        * sparc.md (cmpdi_v8plus): Add abort for default case in switch.
        * cppalloc.c: Include gansidecl.h.
        * cpperror.c: Include stdarg.h/varargs.h and gansidecl.h.
        (cpp_file_line_for_message): Mark parameter `pfile' with
        ATTRIBUTE_UNUSED.
        (v_cpp_message): New function.
        (cpp_message): Use it.  Also convert to variable arguments.
        (cpp_fatal): Likewise.
        (cpp_pfatal_with_name): Constify parameter `name'.
        * cppexp.c: Move gansidecl.h before cpplib.h.
        * cpphash.c: Likewise.
        * cpphash.h (hashf, delete_macro): Add prototypes.
        * cpplib.c: Include stdarg.h/varargs.h and move gansidecl.h before
        cpplib.h.  Don't include errno.h.
        (update_path): Add arguments to prototype.
        (cpp_fatal, cpp_file_line_for_message, cpp_message, delete_macro,
        cpp_print_containing_files): Remove redundant prototypes.
        (cpp_hash_cleanup, add_import, append_include_chain,
        make_assertion, path_include, initialize_builtins,
        initialize_char_syntax, finclude, validate_else, comp_def_part,
        lookup_import, redundant_include_p, is_system_include,
        read_name_map, read_filename_string, open_include_file,
        check_macro_name, compare_defs, compare_token_lists,
        eval_if_expression, change_newlines): Add prototype arguments.
        (hashf): Remove redundant prototype.
        (read_token_list, free_token_list, safe_read, xcalloc, savestring,
        conditional_skip, skip_if_group): Add prototype arguments.
        (fdopen): Remove redundant prototype.
        (do_define, do_line, do_include, do_undef, do_error, do_pragma,
        do_ident, do_if, do_xifdef, do_else, do_elif, do_endif, do_sccs,
        do_once, do_assert, do_unassert, do_warning): Add prototype arguments.
        (struct directive): Add prototype arguments to function pointer
        member `func'.
        (handle_directive): Add missing arguments to call to `do_line'.
        (do_include): Mark parameters `unused1' and `unused2' with
        ATTRIBUTE_UNUSED.
        (do_line): Likewise for `keyword' and new parameters `unused1' and
        `unused2'.
        (do_error): Likewise for `keyword'.
        (do_warning): Likewise.  Also add missing argument `pfile' in call
        to cpp_pedwarn.
        (do_once): Mark parameter `keyword', `unused1' and `unused2' with
        ATTRIBUTE_UNUSED.
        (do_ident): Likewise for `keyword', `buf' and `limit'.
        (do_pragma): Likewise.  Also add missing arguments in call to do_once.
        (do_sccs): Mark parameter `keyword', `buf' and `limit' with
        ATTRIBUTE_UNUSED.
        (do_if): Likewise for `keyword'.
        (do_elif): Likewise.
        (eval_if_expression): Likewise for `buf' and `length'.
        (do_xifdef): Likewise for `unused1' and `unused2'.
        (do_else): Likewise for `keyword', `buf' and `limit'.
        (do_endif): Likewise.
        (parse_name): Add missing argument `pfile' in call to cpp_pedwarn.
        (cpp_handle_options): Remove superfluous NULL argument in call to
        cpp_fatal.
        (cpp_handle_options): Likewise.
        (do_assert): Mark parameter `keyword', `buf' and `limit' with
        ATTRIBUTE_UNUSED.
        (do_unassert): Likewise.
        (cpp_print_file_and_line): Add missing argument `pfile' in call to
        cpp_file_line_for_message.
        (v_cpp_error): New function.
        (cpp_error): Use it. Also accept variable arguments.
        (v_cpp_warning): New function.
        (cpp_warning): Use it. Also accept variable arguments.
        (cpp_pedwarn): Accept variable arguments.
        (v_cpp_error_with_line): New function
        (cpp_error_with_line): Use it.  Accept variable arguments.
        (v_cpp_warning_with_line): New function.
        (cpp_warning_with_line): Use it.  Accept variable arguments.  Hide
        definition.
        (cpp_pedwarn_with_line): Accept variable arguments.
        (cpp_pedwarn_with_file_and_line): Likewise.
        (cpp_error_from_errno): Constify parameter `name'.  Add missing
        argument `pfile' in call to cpp_file_line_for_message.
        (cpp_perror_with_name): Constify parameter `name'.
        * cpplib.h: Define PARAMS() in terms of PROTO().
        (fatal): Remove redundant prototype.
        (cpp_error, cpp_warning, cpp_pedwarn, cpp_error_with_line,
        cpp_pedwarn_with_line, cpp_pedwarn_with_file_and_line,
        cpp_error_from_errno, cpp_perror_with_name, cpp_pfatal_with_name,
        cpp_fatal, cpp_message, cpp_pfatal_with_name,
        cpp_file_line_for_message, cpp_print_containing_files): Add
        arguments to prototypes.
        (scan_decls, cpp_finish): Add prototypes.
        * cppmain.c: Include gansidecl.h.
        (main): Remove unused variable `i'.
        * dbxout.c: Include toplev.h.
        * demangle.h (do_tlink, collect_execute, collect_exit,
        collect_wait, dump_file, file_exists): Add prototype.
        * dwarf2out.c (dwarf_type_encoding_name, decl_start_label): Hide
        prototype and definition.
        (gen_unspecified_parameters_die): Don't assign results of call to
        function new_die() to unused variable `parm_die'.
        (dwarf2out_line): Mark parameter `filename' with ATTRIBUTE_UNUSED.
        (dwarf2out_define): Likewise for `lineno' and `buffer'.
        * dwarfout.c (output_unsigned_leb128, output_signed_leb128): Hide
        prototype and definition.
        (output_die): Add prototype arguments to function pointer arg.
        (output_unspecified_parameters_die): Mark parameter `arg' with
        ATTRIBUTE_UNUSED.
        * except.c (output_exception_table_entry): Remove unused variable
        `eh_entry'.
        * except.h (expand_fixup_region_start, expand_fixup_region_end):
        Add prototypes.
        * expr.c (do_jump_by_parts_equality_rtx): Remove prototype.
        * expr.h (do_jump_by_parts_equality_rtx): Add prototype.
        * fix-header.c: Include stdarg.h/varargs.h, move gansidecl.h
        before cpplib.h, include cpphash.h, remove redundant prototype of
        cpp_fatal, don't define `const', add a prototype for `fatal'.
        (cpp_file_line_for_message): Add missing arguments `pfile'.
        (v_cpp_message): New function.
        (cpp_message): Use it.
        (v_fatal): New function.
        (fatal, cpp_fatal): Use it.
        (cpp_pfatal_with_name): Constify parameter `name'.
        * flow.c (free_regset_vector): Remove redundant prototype.
        * function.c (round_down): Wrap prototype and definition with
        macro ARGS_GROW_DOWNWARD.
        (record_insns): Wrap prototype and definition with
        defined (HAVE_prologue) || defined (HAVE_epilogue).
        * gansidecl.h (ATTRIBUTE_PRINTF_4, ATTRIBUTE_PRINTF_5): New macros.
        * gen-protos.c: Include gansidecl.h.
        (hashf): Don't make it static, constify parameter `name'.
        * genattrtab.c (check_attr_test): Change XEXP() to XSTR() to match
        specifier %s in calls to function `fatal'.
        * haifa-sched.c: Include toplev.h.
        (find_rgns): Remove unused variable `j'.
        * integrate.c (note_modified_parmregs): Mark parameter `x' with
        ATTRIBUTE_UNUSED.
        (mark_stores): Likewise.
        * jump.c (mark_modified_reg): Likewise.
        * output.h (insn_current_reference_address): Add prototype.
        (eh_frame_section): Likewise.
        * print-rtl.c: Include bitmap.h.
        * reload1.c (reload): Wrap variables `note' and `next' in macro
        PRESERVE_DEATH_INFO_REGNO_P.
        (forget_old_reloads_1): Mark parameter `ignored' with
        ATTRIBUTE_UNUSED.
        (choose_reload_regs): Remove unused variable `in'.
        (reload_cse_invalidate_mem): Mark parameter `ignore' with
        ATTRIBUTE_UNUSED.
        (reload_cse_check_clobber): Likewise.
        * rtl.h (expand_null_return, reg_classes_intersect_p): Add prototype.
        (mark_elimination): Fix typo in prototype.
        * scan-decls.c: Include gansidecl.h.
        * tree.h (using_eh_for_cleanups, supports_one_only): Add prototype.

From-SVN: r19867
1998-05-19 08:42:48 +00:00
Jeffrey A Law
c7fdfd49ac function.c (identify_blocks): Fix thinko when setting the block number for NOTE_INSN_BLOCK_END.
* function.c (identify_blocks): Fix thinko when setting the
        block number for NOTE_INSN_BLOCK_END.

From-SVN: r19857
1998-05-18 15:39:43 -06:00
Jeff Law
38e012594e typo typo fixes fixes
From-SVN: r19601
1998-05-06 15:09:07 -06:00
Robert Lipe
10f0ad3d49 toplev.h: New file.
Wed May  6 06:35:38 1998  Robert Lipe  <robertl@dgii.com>
        * toplev.h: New file.   Protypes for functions in toplev.c.
        * tree.h, rtl.h: Deleted protos for functions in toplev.c.
        * c-common.c, c-convert.c, c-decl.c, c-iterate.c, c-lex.c,
        c-parse.in, c-parse.y, c-pragma.c, c-typeck.c, calls.c,
        convert.c, dwarf2out.c, except.c, expr.c, final.c, fold-const.c,
        function.c, hash.c, profile.c, real.c, reg-stack.c, regclass.c,
        reload.c, reload1.c, stmt.c, stor-layout.c, tlink.c, tree.c,
        varasm.c: include it.

From-SVN: r19564
1998-05-06 04:54:01 +00:00
Jeff Law
f5963e6170 * Check in merge from gcc2. See ChangeLog.12 for details.
From-SVN: r19553
1998-05-05 17:18:02 -06:00
Jeffrey A Law
1ac4f79956 * function.c (assign_outer_stack_local): Make static and add prototype.
From-SVN: r19245
1998-04-16 16:08:49 -06:00
John Carr
7940255dd6 function.c (assign_parms): Initialize unsignedp before passing its pointer to promote_mode.
* function.c (assign_parms): Initialize unsignedp before passing
        its pointer to promote_mode.

From-SVN: r19215
1998-04-14 17:10:49 -06:00
Jeff Law
c86c3e99c4 Reinstall this patch from Jason.
8
        Reinstall this patch from Jason.
        * function.c (push_function_context_to): Don't call init_emit.

From-SVN: r19098
1998-04-10 15:30:30 -06:00
Jeff Law
e5e809f419 * Check in merge from gcc2. See ChangeLog.11 and ChangeLog.12
for details.

        * haifa-sched.c: Mirror recent changes from gcc2.

From-SVN: r18984
1998-04-04 06:32:39 -07:00
Jeffrey A Law
4e86caed7d fold-const.c (optimze_bit_field_compare): Initialize rnbitpos, rnbitsize, rnmode and rinner.
* fold-const.c optimze_bit_field_compare): Initialize rnbitpos,
        rnbitsize, rnmode and rinner.
        (make_range): Initialize type.
        (fold): Initialize arg0, arg1 and varop.
        * function.c (instantiate_virtual_regs_1): Initialize offset, regnoi
        and regnor.
        (expand_function_start): Initialize last_ptr.
        * stor-layout.c (layout_record): Initialize desired_align.
        (get_best_mode): Initialize unit.
        * tree.c (copy_node): Initialize length.

From-SVN: r18943
1998-04-01 16:35:51 -07:00
Bernd Schmidt
4d1d804584 basic-block.h (basic_block_computed_jump_target): Declare.
* basic-block.h (basic_block_computed_jump_target): Declare.
	* flags.h: (current_function_has_computed_jump): Declare.
	* flow.c: (basic_block_computed_jump_target): Define.
	(flow_analysis): Allocate it. Set current_function_has_computed_jump
	to 0.
	(find_basic_blocks): Set current_function_has_computed_jump and
	elements of basic_block_computed_jump_target to 1 as appropriate.
	* function.c: (current_function_has_computed_jump): Define.
	* global.c (global_conflicts): Don't allocate pseudos into stack regs
	at the start of a block that is reachable by a computed jump.
	* reg-stack.c (stack_reg_life_analysis): If must restart, do so
	immediately.
	(subst_stack_regs): Undo change from Sep 4 1997.
	(uses_reg_or_mem): Now unused, deleted.
	* stupid.c (stupid_life_analysis): Compute
	current_function_has_computed_jump.
	(stupid_find_reg): Don't allocate stack regs if the function has a
	computed goto.
        * haifa-sched.c (is_cfg_nonregular): Delete code to determine if
        the current function has a computed jump.  Use the global value
        instead.

Co-Authored-By: Jeffrey A Law <law@cygnus.com>

From-SVN: r18860
1998-03-27 17:12:41 -07:00
Kaveh R. Ghazi
670ee92097 Major cutover to using system.h:
* Makefile.in (alias.o, bitmap.o, c-aux-info.o, c-common.o,
        c-decl.o, c-iterate.o, c-lang.o, c-lex.o, c-pragma.o, c-typeck.o,
        caller-save.o, calls.o, collect2.o, combine.o, cse.o, dbxout.o,
        dwarf2out.o, dwarfout.o, emit-rtl.o, except.o, explow.o, expmed.o,
        expr.o, final.o, flow.o, function.o, getpwd.o, global.o,
        integrate.o, jump.o, local-alloc.o, loop.o, optabs.o, pexecute.o,
        prefix.o, print-rtl.o, print-tree.o, profile.o, real.o, recog.o,
        reg-stack.o, regclass.o, regmove.o, reload.o, reload1.o, reorg.o,
        rtl.o, rtlanal.o, sdbout.o, stmt.o, stor-layout.o, stupid.o,
        tlink.o, toplev.o, tree.o, unroll.o, varasm.o, xcoffout.o): Depend
        on system.h.
        * alias.c, bitmap.c, c-aux-info.c, c-common.c, c-decl.c,
        c-iterate.c, c-lang.c, c-lex.c, c-pragma.c, c-typeck.c,
        caller-save.c, calls.c, collect2.c, combine.c, cse.c, dbxout.c,
        dwarf2out.c, dwarfout.c, emit-rtl.c, except.c, explow.c, expmed.c,
        expr.c, final.c, flow.c, function.c, gcc.c, getpwd.c, global.c,
        integrate.c, jump.c, local-alloc.c, loop.c, optabs.c, pexecute.c,
        prefix.c, print-rtl.c, print-tree.c, profile.c, real.c, recog.c,
        reg-stack.c, regclass.c, regmove.c, reload.c, reload1.c, reorg.c,
        rtl.c, rtlanal.c, sched.c, sdbout.c, stmt.c, stor-layout.c,
        stupid.c, tlink.c, toplev.c, tree.c, unroll.c, varasm.c,
        xcoffout.c: Include system.h.  Organize include ordering so
        that stdarg/varargs comes before other system headers.  Remove
        spurious casts of functions assured of a prototype in system.h.

From-SVN: r18726
1998-03-20 14:58:42 +00:00
Jason Merrill
6e1f1f930b except.c (init_eh): Do nothing.
* except.c (init_eh): Do nothing.
	(save_eh_status): Call init_eh_for_function, not init_eh.
	* function.c (push_function_context_to): Don't call init_emit.

From-SVN: r18710
1998-03-19 13:49:57 -05:00
Kaveh R. Ghazi
081f5e7e66 Fix more warnings...
* c-lang.c (finish_file): Wrap variable `void_list_node' with macro
        test !ASM_OUTPUT_CONSTRUCTOR || !ASM_OUTPUT_DESTRUCTOR.
        * calls.c (emit_call_1): Wrap variable `already_popped' with macro
        test !ACCUMULATE_OUTGOING_ARGS.
        * collect2.c (write_c_file_glob): Wrap function definition in
        macro test !LD_INIT_SWITCH.
        * combine.c (try_combine): Wrap variables `cc_use' and
        `compare_mode' in macro test EXTRA_CC_MODES.
        * cpplib.c (do_ident): Remove unused variable `len'.
        (skip_if_group): Remove unused variables `at_beg_of_line' and
        `after_ident'.
        (cpp_get_token): Remove unused variable `dummy'.
        * dbxout.c (scope_labelno): Move static variable definition inside
        the one function scope where it is used.
        (dbxout_function_end): Wrap prototype and definition in
        macro test !NO_DBX_FUNCTION_END.
        * dwarf2out.c (add_subscript_info): Wrap variable `dimension_number'
        in macro test !MIPS_DEBUGGING_INFO.
        * expr.c (expand_builtin_setjmp): Move declaration of variable `i'
        into the scope where it is used.  Wrap empty else-statement body
        in braces.
        * fix-header.c: Fix typo in comment.
        (inf_skip_spaces): Cast results of INF_UNGET to (void).
        (check_protection, main): Likewise.
        * flow.c (find_basic_blocks_1): Remove dangling comment text.
        * function.c (contains): Wrap prototype and definition in macro
        test HAVE_prologue || HAVE_epilogue.
        (fixup_var_refs_1): Remove unused variable `width'.
        * gen-protos.c (main): Remove unused variable `optr'.
        * haifa-sched.c (debug_control_flow): Remove unused variable `j'.
        * libgcc2.c (__udiv_w_sdiv): Provide dummy return value of 0.
        (__sjpopnthrow): Remove unused variable `jmpbuf'.
        (__throw): Remove unused variable `val'.
        * protoize.c: Check for a previously existing definition before
        defining *_OK macros.
        * scan-decls.c (scan_decls): Remove unused variable `old_written'.

From-SVN: r18654
1998-03-18 07:18:06 +00:00
Jim Wilson
bdd3e6abed Patch to fix mips64-elf varargs aliasing failures.
* function.c (put_reg_into_stack): Copy MEM_IN_STRUCT_P from new.
	(assign_parms): Set aggregate if hide_last_arg and last_named.

From-SVN: r18450
1998-03-09 04:03:21 -08:00
Kaveh R. Ghazi
5172371191 Fix warious warnings:
* c-aux-info.c: Include string.h/strings.h.
	* pa.c: Include stdlib.h.
	(pa_combine_instructions): Prototype the function.
	(pa_can_combine_p, forward_branch_p, shadd_constant_p): Likewise.
	(reloc_needed): Add default case for enumeration switch.
	(remove_useless_addtr_insns): Remove unused variable `all'.
	(hppa_expand_prologue): Add explicit braces to avoid
	ambiguous `else'.
	(output_function_epilogue): Remove unused variable `i'.
	(output_millicode_call): Remove unused variable `link'.
	(shadd_constant_p, forward_branch_p): Make the function static.
	(following_call): Explicitly declare to return int.
	(pa_reorg): Declare as void.
	(pa_combine_instructions): Declare as static void.  Add
	parentheses around && within ||.
	* pa.h: Add prototypes for pa_reorg, symbolic_operand,
	following_call, function_label_operand, lhs_lshift_cint_operand
	and zdepi_cint_p.
	* pa.md: Add parentheses around && within ||.
	* cppalloc.c: Include stdlib.h.
	* cpperror.c (cpp_print_containing_files): Remove unused variable
	`i'.  Fix format specifier in fprintf.
	* cse.c (cse_around_loop): Add explicit braces to avoid
	ambiguous `else'.
	(delete_dead_from_cse): Wrap variable `tem' in macro HAVE_cc0.
	* expr.c (expand_expr): Add parentheses around && within ||.
	* final.c (app_enable): Replace fprintf with fputs where there are
	no format specifiers and no trailing argument after the string.
	Eg, when printing ASM_APP_ON/ASM_APP_OFF.
	(app_disable): Likewise.
	(final_end_function): Likewise.
	(final_scan_insn): Likewise.  Remove unused variable `set'.
	(profile_function): Wrap empty if-statement body in {} brackets.
	* function.c: Include stdlib.h.
	(pad_below): Wrap prototype and definition in ARGS_GROW_DOWNWARD.
	(reposition_prologue_and_epilogue_notes): Add parentheses
	around assignment used as truth value.
	* integrate.c (expand_inline_function): Wrap variable
	`cc0_insn' in macro HAVE_cc0.
	* jump.c (jump_optimize): Wrap variable `q' in macro
	HAVE_cc0.  Remove unused variable `prev1'.
	* libgcc2.c (__bb_exit_trace_func): Add parentheses around &&
	within ||.  Fix format specifier in fprintf.
	(__bb_init_prg): Add parentheses around assignment used as
	truth value.
	* local-alloc.c: Include stdlib.h.
	(requires_inout): Add parentheses around assignment used
	as truth value.
	* loop.c (analyze_loop_iterations): Wrap prototype and definition
	in macro HAVE_decrement_and_branch_on_count.
	(insert_bct, instrument_loop_bct): Likewise.
	(move_movables): Add parentheses around assignment used as
	truth value.
	(consec_sets_invariant_p): Likewise.
	(maybe_eliminate_biv_1): Wrap variable `new' in macro HAVE_cc0.
	* objc/objc-act.c: Include stdlib.h.
	(lookup_method_in_protocol_list): Wrap empty else-statement body
	in braces.
	(lookup_protocol_in_reflist): Likewise.
	(objc_add_static_instance): Remove unused variables `decl_expr'
	and `decl_spec'.
	(get_objc_string_decl): Remove unused variable `decl'.
	(generate_static_references): Remove unused variables `idecl' and
	`instance'.
	(check_protocols): Wrap empty else-statement body in braces.
	* protoize.c: Include stdlib.h.
	(substr): Add parentheses around assignment used as truth value.
	(abspath): Likewise.
	(shortpath): Likewise.
	* regmove.c (fixup_match_1): Add parentheses around assignment
	used as truth value.
	* reload.c (push_secondary_reload): Remove unused variable `i'.
	(find_reloads): Add parentheses around assignment used as truth
	value.
	* reload1.c: Include stdlib.h.
	* rtl.h: Correct typo in prototype of offsettable_memref_p.
	* stmt.c (add_case_node): Add parentheses around assignment used
	as truth value.
	(case_tree2list): Likewise.
	* tree.c (valid_machine_attribute): Wrap variable `decl_attr_list'
	in macro VALID_MACHINE_DECL_ATTRIBUTE.  Wrap variable
	`type_attr_list' in macro VALID_MACHINE_TYPE_ATTRIBUTE.
	(merge_attributes): Add explicit braces to avoid ambiguous
	`else'.
	* unroll.c (copy_loop_body): Wrap variable `cc0_insn' in
	macro HAVE_cc0.
	* varasm.c: Include stdlib.h.

From-SVN: r18290
1998-02-28 07:06:53 +00:00
Jeffrey A Law
29a820586a varasm.c (output_constant_pool): Bring back 'done' label inside an appropriate #ifdef.
* varasm.c (output_constant_pool): Bring back 'done' label inside
        an appropriate #ifdef.
        * bitmap.c (bitmap_element_allocate): Wrap variable 'i' in an
        appropriate #ifdef.
        (bitmap_copy, bitmap_operation): Likewise.
        * combine.c (combinable_i3pat): Similarly for 'src'.
        * function.c (fixup_var_refs_1): Similarly for 'outerdest'.
        (locate_and_pad_parm): Similarly for 'reg_parm_stack_space'.
        * regclass.c (copy_cost): Similarly for 'secondary_class'.
        * reload.c (make_memloc): Simliarly for 'i'.
        (find_reloads_address_1): Similarly for 'link'.
        * reload1.c (reload): Similarly for 'previous_frame_pointer_needed'.
        (emit_reload_insns): Similarly for 'second_reloadreg'.
        * unroll.c (iteration_info): Similarly for 'v'.
        * caller-save.c (insert_save_restore): Remove unused variable 'i'.
        * calls.c (expand_call): Similarly for 'i'.
        (emit_library_call, emit_library_call_value): Similarly for 'mode'.
        * fold-const.c (strip_compund_expr): Similarly for 'type'.
        * function.c (fixup_var_refs_1): Similarly  for 'width'.
        (fixup_memory_subreg): Similarly for 'saved'.
        (locate_and_pad_parm): Similarly for 'boundary_in_bytes.'
        (setjmp_protect): Similarly for 'sub'.
        (thread_prologue_and_epilogue_insns): Similarly for 'insn'.
        * loop.c (record_giv): Similarly for 'p'.
        (combine_givs): Similarly for 'temp_iv'.
        (indirect_jump_in_function_p): Similarly for 'is_indirect_jump'.
        * recog.c (validate_replace_rtx_1): Similarly for 'width'.
        * tree.c (get_set_constructor_bytes): Similarly for 'vals'.
        * unroll.c (unroll_loop): Similarly for 'copy'.
        (iteration_info): Similarly for 'b'.
        * varasm.c (assemble_string): Similarly for 'i'.
        * i386.h (LEGITIMIZE_ADDRESS): Similarly for 'orig_x'.

From-SVN: r17973
1998-02-13 18:13:58 -07:00
Jeffrey A Law
b515ab3d51 * function.c (assign_parms): Fix typo in last change.
From-SVN: r17769
1998-02-07 16:08:24 -07:00
Jim Wilson
bf9c83fe76 Fix irix6 stdarg failure when last named arg has FP type.
* function.c (assign_parms): New variable named_arg, with value
	depending on STRICT_ARGUMENT_NAMING.  Use instead of ! last_named.

From-SVN: r17695
1998-02-06 06:31:56 -08:00
Jeffrey A Law
c980413689 More bytecode stuff disappears.
From-SVN: r17435
1998-01-20 03:02:05 -07:00
Jeffrey A Law
b93a436e6b Makefile.in: Remove all bytecode support.
* Makefile.in: Remove all bytecode support.
        (OBJS): Make sure last entry is a real object file, not EXTRA_OBJS.
        * emit-rtl.c: Remove all bytecode support.
        * expr.c, expr.h function.c, integrate.c: Likewise.
        * output.h, regclass.c, rtl.h, stmt.c, toplev.c: Likewise.
        * tree.h, varasm.c: Likewise.
        * bi-*, bc-*: Delete bytecode related files.
Bytecode suppors disappears :-)

From-SVN: r17432
1998-01-20 01:55:07 -07:00
Richard Henderson
38a448ca5d alias.c: Change all uses of gen_rtx(FOO...) to gen_rtx_FOO...
* alias.c: Change all uses of gen_rtx(FOO...) to gen_rtx_FOO;
change gen_rtx(expr...) to gen_rtx_fmt_foo(expr...).
* caller-save.c, calls.c, combine.c, cse.c: Likewise.
* dwarf2out.c, except.c, explow.c, expmed.c, expr.c: Likewise.
* final.c, flow.c, function.c, genpeep.c, haifa-sched.c: Likewise.
* halfpic.c, integrate.c, jump.c, local-alloc.c, loop.c: Likewise.
* profile.c, recog.c, reg-stack.c, regclass.c, regmove.c: Likewise.
* reload.c, reload1.c, reorg.c, sched.c, stmt.c, stupid.c: Likewise.
* unroll.c, varasm.c: Likewise.
* config/alpha/alpha.c, config/alpha/alpha.md: Likewise.

From-SVN: r17357
1998-01-14 15:10:50 -08:00
Jeff Law
c85f7c16ad Bring in final gcc-2.8.0 changes.
From-SVN: r17355
1998-01-14 13:57:58 -07:00
Jeff Law
6d8ccdbbb2 Bring over changes from latest gcc-2.8 pre-release.
Mirror sched.c change into haifa-sched.c

From-SVN: r17097
1997-12-15 00:05:04 -07:00
Jeff Law
956d69504d Merge from gcc-2.8
From-SVN: r16987
1997-12-06 17:31:01 -07:00
Jeff Law
e9a25f70a0 Update mainline egcs to gcc2 snapshot 971021.
From-SVN: r16278
1997-11-02 14:19:36 -07:00
Doug Evans
de95730392 function.c (assign_parms): Correct mode of stack_parm if entry_parm underwent a mode conversion.
* function.c (assign_parms): Correct mode of stack_parm if
        entry_parm underwent a mode conversion.

From-SVN: r16228
1997-10-28 23:54:49 -07:00
Jason Merrill
d1485032c8 tree.c (restore_tree_status): Also free up temporary storage when we finish a toplevel function.
* tree.c (restore_tree_status): Also free up temporary storage
	when we finish a toplevel function.
	(dump_tree_statistics): Print stats for backend obstacks.

	* libgcc2.c (__throw): Don't copy the return address.
	* dwarf2out.c (expand_builtin_dwarf_reg_size): Ignore return address.

	* except.c (exceptions_via_longjmp): Initialize to 2 (uninitialized).
	* toplev.c (main): Initialize exceptions_via_longjmp.

	* tree.c: Add extra_inline_obstacks.
	(save_tree_status): Use it.
	(restore_tree_status): If this is a toplevel inline obstack and we
	didn't want to save anything on it, recycle it.
	(print_inline_obstack_statistics): New fn.
	* function.c (pop_function_context_from): Pass context to
	restore_tree_status.
	* obstack.h (obstack_empty_p): New macro.

From-SVN: r16050
1997-10-18 17:10:32 -04:00
Jeffrey A Law
f345de42fc reorg.c (dbr_schedule): Allow current_function_return_rtx to be something other than a REG.
* reorg.c (dbr_schedule): Allow current_function_return_rtx
        to be something other than a REG.
        * function.c (expand_function_end): Fix current_function_return_rtx
        if it was a pseudo.
Brought over from the fsf/devo.

From-SVN: r14972
1997-08-27 13:59:51 -06:00
Richard Kenner
86fa911a16 (put_var_into_stack, assign_parms): If -fcheck-memory-usage, set the
rights of pushed variable.

From-SVN: r14614
1997-08-02 13:18:18 -04:00
Richard Kenner
4ac74fb88f (put_var_into_stack, trampoline_address): Treat inline_function_decl
like current_function_decl.

From-SVN: r14539
1997-07-27 19:34:28 -04:00
Richard Kenner
11044f6690 (expand_function_end): If function is non-leaf and stack checking is
requested, emit needed probes.

From-SVN: r14470
1997-07-17 11:25:54 -04:00
Mike Stump
e5a1e0e864 function.c (expand_function_end): Make sure we finish off any leftover exception handlers.
* function.c (expand_function_end): Make sure we finish off any
	leftover exception handlers.

From-SVN: r14067
1997-05-15 02:25:25 +00:00
Mike Stump
db3cf6fb33 reformat a little to match GNU coding standards.
From-SVN: r14024
1997-05-06 23:05:54 +00:00
Jason Merrill
173cd503de x
From-SVN: r13974
1997-04-24 02:55:16 +00:00
Jim Wilson
ce717ce4d3 (instantiate_decls): For DECL_INCOMING_RTL, use max
of type size and mode size in instantiate_decl call.

From-SVN: r13933
1997-04-18 15:40:55 -07:00
Jim Wilson
7b05e28661 (expand_function_start): Emit queue after expanding
each dynamic parameter type.

From-SVN: r13835
1997-04-03 12:26:33 -08:00
Doug Evans
82e415a358 function.c (expand_function_end): Output NOTE_REPEATED_LINE_NUMBER for last line of function.
* function.c (expand_function_end): Output NOTE_REPEATED_LINE_NUMBER
	for last line of function.

From-SVN: r13815
1997-03-28 22:36:31 +00:00
Ian Lance Taylor
38b610ed8e Add a REG_EQUIV note when a register parameter has a stack location
From-SVN: r13734
1997-03-18 20:00:01 +00:00
Jason Merrill
a1d7ffe39c x
From-SVN: r13652
1997-02-16 10:05:43 +00:00
Richard Kenner
1995f267b7 (assign_stack_temp): Clear MEM flags from reuse.
From-SVN: r13623
1997-02-09 14:05:39 -05:00
Richard Kenner
7694ce359a (instantiate_virtual_regs_1, case USE, CLOBBER): Fix error in last change.
From-SVN: r13615
1997-02-07 08:19:33 -05:00
Richard Kenner
189cc3779a (TRAMPOLINE_ALIGNMENT): Provide default.
(expand_function_end): Use TRAMPOLINE_ALIGNMENT instead of FUNCTION_BOUNDARY.

From-SVN: r13567
1997-01-30 08:57:32 -05:00
Richard Kenner
85b119d1b7 (mark_all_temps_used): Set KEEP as well.
From-SVN: r13541
1997-01-21 16:03:29 -05:00
Richard Kenner
4fd796bbb5 (instantiate_virtual_regs_1...
(instantiate_virtual_regs_1, case USE, case CLOBBER): Properly handle
case of shared MEM whose replacement is not valid.

From-SVN: r13509
1997-01-19 08:57:20 -05:00
Richard Kenner
01c1558a9c (push_function_context_to, pop_function_context_from): Save and
restore current_function_args_info.

From-SVN: r13353
1997-01-03 07:51:07 -05:00
Ian Lance Taylor
f95182a4a9 Check SMALL_REGISTER_CLASSES at runtime
From-SVN: r13302
1996-12-13 01:00:49 +00:00
Richard Kenner
ef933d2601 (fixup_var_refs_1, case ZERO_EXTRACT): Don't call fixup_memory_subreg
if no longer SUBREG of MEM.

From-SVN: r13282
1996-12-11 17:00:41 -05:00
Richard Kenner
8af5168bae (frame_offset, get_frame_size): Make HOST_WIDE_INT.
From-SVN: r13243
1996-12-07 18:49:12 -05:00
Jim Wilson
ecec444145 (expand_function_end): Handle BLKmode structures returned
in registers.

From-SVN: r13117
1996-11-08 17:37:54 -08:00
Richard Kenner
ddb7361a2e (assign_parms): Use mark_user_reg.
From-SVN: r12870
1996-09-29 19:06:08 -04:00
Jim Wilson
87ce34d632 (instantiate_decl): Always store addr back into x.
From-SVN: r12842
1996-09-25 12:31:31 -07:00
Richard Kenner
27ce006bb4 (mark_all_temps_used): Fix error in last change.
From-SVN: r12672
1996-08-26 14:08:23 -04:00
Richard Kenner
a94e4054a9 (mark_all_temps_used): New function.
From-SVN: r12671
1996-08-25 22:27:04 -04:00
Mike Stump
1ef08c6373 install EH code
From-SVN: r12550
1996-07-23 20:09:26 +00:00
Jim Wilson
e71f7aa5b5 (aggregate_value_p): If hard_function_value returns
a non-REG, then return 0.

From-SVN: r12413
1996-07-08 15:11:03 -07:00
Mike Stump
0f41302f47 formatting tweaks
From-SVN: r12390
1996-07-03 22:07:53 +00:00
Richard Kenner
abb522465e (find_temp_slot_from_address): Check for overlap from BASE_OFFSET if X
is PLUS of virtual_stack_vars_rtx and const.

From-SVN: r12296
1996-06-18 07:12:49 -04:00
Richard Kenner
0e09cc26ee (fixup_var_refs_1, case SIGN_EXTEND): Handle paradoxical SUBREGs as first operand.
(fixup_var_refs_1, case SIGN_EXTEND): Handle paradoxical SUBREGs as first
operand.
(fixup_var_regs_1, case SET): Handle paradoxical SUBREGs as first operand of
a ZERO_EXTRACT in SET_DEST.

From-SVN: r12243
1996-06-08 13:49:13 -04:00
Jim Wilson
5c4cdc9fdf (assign_parms): Handle PARALLEL parameter in ENTRY_PARM.
From-SVN: r12191
1996-06-06 16:13:24 -07:00
Richard Kenner
69685820b3 (assign_parms): Tighten up code that makes REG_EQUIV notes for parms.
From-SVN: r12186
1996-06-06 18:38:13 -04:00
Richard Kenner
9e014ded89 Include bc-emit.h.
({save,restore}_machine_status): Add prototype for args.
(bc_runtime_type_code, bc_build_calldesc): Delete redundant decls.
(bc_emit_trampoline, bc_end_function): Likewise.

From-SVN: r12045
1996-05-19 12:24:26 -04:00
Doug Evans
49a2e5b2f7 * function.c (aggregate_value_p): Return 1 if TREE_ADDRESSABLE.
From-SVN: r11957
1996-05-09 01:04:06 +00:00
Richard Kenner
a00285d035 (assign_parms): Set RTX_UNCHANGING_P in stack_parm if parm is
read-only.

From-SVN: r11944
1996-05-06 18:45:05 -04:00
Richard Kenner
1e2414db59 (expand_function_end): Allow TRAMPOLINE_TEMPLATE
to be omitted on systems for which it is not cost effective.

From-SVN: r11822
1996-04-16 16:51:20 -04:00
Richard Kenner
1651bdfef8 (push_function_context_{to,from}): Save and restore
current_function_returns_pointer.

From-SVN: r11812
1996-04-16 10:19:07 -04:00
Mike Stump
9cca6a99da function.c (preserve_temp_slots): Only preserve temporaries that happen to be at the current level.
* function.c (preserve_temp_slots): Only preserve temporaries that
	happen to be at the current level.
Fixes p7325.C.

From-SVN: r11800
1996-04-15 18:46:12 +00:00
Jeff Law
2c7ee1a641 calls.c (expand_call): Remove current_call_is_indirect nonsense.
* calls.c (expand_call): Remove current_call_is_indirect nonsense.
	Add additional argument to INIT_CUMULATIVE_ARGS.
	(emit_library_call): Likewise.
	(emit_library_call_value): Likewise.
	* expr.c (expand_builtin): Likewise.
	* function.c (assign_parms): Likewise.
	* cp/method.c (emit_thunk): Likewise.
	* config/pa/pa.h (hppa_args): New field "indirect".
	(INIT_CUMULATIVE_ARGS): Initialize "indirect" field.
	(FUNCTION_ARG): Check "indirect" field, rather than
	"current_call_is_indirect".
	* All other backends updated with new argument to
	INIT_CUMULATIVE_ARGS

From-SVN: r11641
1996-03-29 07:37:11 -07:00
Jason Merrill
6d7306f76e (expand_function_start): Don't set up context_display
unless current_function_needs_context.

From-SVN: r11615
1996-03-26 00:17:01 +00:00
Jason Merrill
38ee6ed956 (expand_expr, case *_DECL): If we make a non-local reference from a function with DECL_NO_STATIC_CHAIN set, abort.
(expand_expr, case *_DECL): If we make a non-local
        reference from a function with DECL_NO_STATIC_CHAIN set, abort.
        (expand_expr, case ADDR_EXPR): We don't need a trampoline for a
        function with DECL_NO_STATIC_CHAIN set.

From-SVN: r11461
1996-03-05 22:16:33 +00:00
Richard Kenner
f6127c6a4a (bc_expand_function_start): Likewise.
From-SVN: r11412
1996-03-04 08:40:01 -05:00
Richard Kenner
b02ab63aa4 ({,round_}trampoline_address): TRAMPOLINE_ALIGNMENT is in bits, not
bytes.

From-SVN: r10993
1996-01-15 14:57:49 -05:00
Richard Kenner
b55d9ff814 (assign_temp): Add extra arg, DONT_PROMOTE.
Don't return (const_int 0) for VOIDmode.

From-SVN: r10923
1995-12-31 21:26:06 -05:00
Richard Kenner
e1686233d2 (instantiate_decls): Check DECL_SAVED_INSNS to see if obstack change
is needed.

From-SVN: r10915
1995-12-31 15:03:23 -05:00
Richard Kenner
638141a689 (assign_temp): Fix formatting.
From-SVN: r10905
1995-12-30 06:36:58 -05:00
Per Bothner
230f21b48b function.c (assign_temp): New function.
* function.c (assign_temp):  New function.  Can handle Chill-style
variable-sized array with static maximum size.

From-SVN: r10899
1995-12-29 11:14:31 -08:00
Per Bothner
f9f29478ed * function.c (assign_parms): Fix thinko for struct value arg.
From-SVN: r10897
1995-12-29 11:05:20 -08:00
Richard Kenner
6c6166bdcb (assign_parms): Set REGNO_POINTER_ALIGN for parms that are pointers.
From-SVN: r10868
1995-12-27 15:22:26 -05:00
Richard Kenner
1d273bf509 (fixup_var_refs_1): Fix error in last change (when mode of VAR is not
the same as PROMOTED_MODE).

From-SVN: r10795
1995-12-18 07:49:21 -05:00
Richard Kenner
c46722a717 (fixup_var_refs_1): Fix two incorrect calls to single_set.
From-SVN: r10776
1995-12-16 06:57:01 -05:00
Richard Kenner
bc0ebdf9ee (init_temp_slots): New function.
(init_function_start): Code moved to new function and called here.

From-SVN: r10733
1995-12-15 08:09:24 -05:00
Mike Stump
b2a59b1589 function.c (identify_blocks): Start with a chain of BLOCKs to match the rest of the backend (dbxout.c)...
* function.c (identify_blocks): Start with a chain of BLOCKs to
	match the rest of the backend (dbxout.c), instead of just one
	BLOCK.
	(reorder_blocks): Ditto.
	(all_blocks): Ditto.

	* stmt.c (find_loop_tree_blocks): Pass the toplevel list of
	blocks, not just the first subblock.
Fixes unroll1.C.

From-SVN: r10712
1995-12-14 00:00:20 +00:00
Richard Kenner
926d1ca5a3 (fixup_var_refs_1): Make pseudo for DEST in PROMOTED_MODE unless in a
SUBREG.

From-SVN: r10608
1995-11-26 14:50:48 -05:00
Richard Kenner
0006e95bb3 (put_reg_into_stack): New arg volatile_p.
(put_var_into_stack): Call with new arg.

From-SVN: r10579
1995-11-12 18:09:22 -05:00
Richard Kenner
926b1b9906 (assign_parms): Don't trust the callee to copy a TREE_ADDRESSABLE
type.

From-SVN: r10527
1995-10-26 21:55:22 -04:00
Richard Kenner
41fd457e3e (init_function_start): Don't call init_insn_lengths here.
From-SVN: r10483
1995-10-20 17:57:07 -04:00
Richard Kenner
291dde90f0 (assign_stack_temp): Adjust full_size field of temp_slot when
splitting an unused slot.

From-SVN: r10422
1995-10-03 12:02:38 -04:00
Richard Kenner
4738c10dc6 (put_var_into_stack): For CONCAT case, order of placement depends on
FRAME_GROWS_DOWNWARD, not STACK_GROWS_DOWNWARD.

From-SVN: r10344
1995-09-12 18:48:36 -04:00
Richard Kenner
abc95ed36d Fix spelling errors.
From-SVN: r10289
1995-08-28 06:54:22 -04:00
Richard Kenner
307d8cd67d (assign_stack_temp): When split a slot, set base_offset and full_size in the newly created slot.
(assign_stack_temp): When split a slot, set base_offset and full_size in the
newly created slot.
(combine_temp_slots): Update full_size when slots are combined.

From-SVN: r10185
1995-07-28 09:09:22 -04:00
Richard Kenner
fc91b0d0aa (struct temp_slot): New fields base_offset, full_size.
(assign_stack_temp): For !FRAME_GROWS_DOWNWARD, set p->size to size.
Set new fields base_offset and full_size.
(combine_temp_slots): Use new fields base_offset and full_size instead
of slot and size.

From-SVN: r10136
1995-07-14 19:15:58 -04:00
Richard Kenner
ebb904cbbe (current_function_stdarg): New global variable.
(push_function_context_to): Save it.
(pop_function_context_from): Restore it.
(assign_parms): Set it.
(init_function_start): Clear it.

From-SVN: r10123
1995-07-14 08:03:09 -04:00
Richard Kenner
0cd6ef3529 (setjmp_args_warning): Remove bogus arg.
From-SVN: r10109
1995-07-10 19:14:25 -04:00
Richard Kenner
ad2413517b (assign_parms): Do all conversions in CONVERSION_INSNS.
From-SVN: r9992
1995-06-15 17:51:06 -04:00
Richard Kenner
a35311b035 Update FSF address.
From-SVN: r9961
1995-06-15 07:52:21 -04:00
Richard Kenner
95f2916038 (assign_parms): Use convert_to_mode instead of gen_lowpart when
converting incoming parm.

From-SVN: r9941
1995-06-14 05:51:51 -04:00
Richard Kenner
621061f4f3 (assign_parms): Handle promotions of both passed and nominal modes separately and insert needed conversions.
(assign_parms): Handle promotions of both passed and nominal modes separately
and insert needed conversions.
(promoted_input_arg): Return 0 if nominal and passed modes differ.

From-SVN: r9922
1995-06-11 13:13:53 -04:00
Richard Kenner
cd5b346969 (assign_parms): Don't call promote_mode on arg unless
PROMOTE_FUNCTION_ARGS defined.

From-SVN: r9904
1995-06-08 18:49:09 -04:00
Richard Kenner
9faa82d8c0 Fix typos in comments.
From-SVN: r9712
1995-05-16 08:39:54 -04:00
Jason Merrill
497dc802f6 (expand_function_end): Don't warn about unused
anonymous or artificial parms.

From-SVN: r9585
1995-05-07 10:28:12 +00:00
Richard Kenner
db8717d93b (expand_function_end): Warn about unused parms if both -Wunused and -W.
From-SVN: r9489
1995-04-26 17:56:19 -04:00
Richard Kenner
9dc0f53144 (assign_parms): If STACK_REGS is defined...
(assign_parms): If STACK_REGS is defined, generate USE insns before
the function body, thus showing which registers are filled with
parameters.

From-SVN: r9461
1995-04-25 19:08:04 -04:00
Jason Merrill
657bb6dc84 Use TREE_ADDRESSABLE rather than | TYPE_NEEDS_CONSTRUCTING to decide whether a...
Use TREE_ADDRESSABLE rather than
|        TYPE_NEEDS_CONSTRUCTING to decide whether a parameter needs to be
|        passed by invisible reference.

From-SVN: r9420
1995-04-20 22:26:30 +00:00
Jim Wilson
79c0672ee6 (instantiate_decls): Use temporary allocation if
DECL_DEFER_OUTPUT is set.

From-SVN: r9394
1995-04-17 12:23:52 -07:00
Richard Kenner
6dfc5c6de5 (preserve_temp_slots): Clear ADDR_TAKEN on item that we are
preserving.

From-SVN: r9236
1995-03-27 20:45:05 -05:00
Richard Kenner
49468af2d9 (pop_function_context): Fix error in last change; reference old value
of current_function_decl before we modify it.

From-SVN: r9202
1995-03-18 16:37:13 -05:00
Jason Merrill
a0dabda52b Handle compilation of nested functions from another scope.
From-SVN: r9185
1995-03-15 21:48:01 +00:00
Per Bothner
b001a02f29 Remove Feb 28's FUNCTION_NEEDS_STATIC_CHAIN changes.
From-SVN: r9106
1995-03-01 19:33:25 -08:00
Per Bothner
7ad8c4bf11 function.c (lookup_static_chain): Check for a static chain using FUNCTION_NEEDS_STATIC_CHAIN.
* function.c (lookup_static_chain):  Check for a static chain
using FUNCTION_NEEDS_STATIC_CHAIN.
(init_function_start):  Set current_function_needs_context depending
on FUNCTION_NEEDS_STATIC_CHAIN rather than decl_function_context.

From-SVN: r9096
1995-02-28 15:06:03 -08:00
Richard Kenner
64e6d9cc49 (assign_parms): Added arg to RETURN_POPS_ARGS.
From-SVN: r9011
1995-02-21 18:48:03 -05:00
Jim Wilson
71cd4a8d33 (delete_handlers): When clear LABEL_PRESERVE_P,
also remove label from nonlocal_label list.

From-SVN: r8782
1995-01-20 17:58:34 -08:00
Richard Kenner
4013a70901 (optimize_bit_field): Don't remove a SUBREG that changes mode class.
From-SVN: r8744
1995-01-13 18:43:36 -05:00
Jeff Law
3668e76e90 calls.c (expand_call): Set MEM_IN_STRUCT_P as needed on return value from assign_stack_temp.
* calls.c (expand_call): Set MEM_IN_STRUCT_P as needed on return
	value from assign_stack_temp.
	(store_one_arg): Likewise.
	* expr.c (save_noncopied_parts): Likewise.
	(expand_expr): Likewise.
	* function.c (assign_parms): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	* stmt.c (expand_decl): Likewise.

From-SVN: r8708
1994-12-29 19:50:28 -07:00
Doug Evans
b1f82ccff1 (instantiate_virtual_regs_1, case PLUS): If offset is
zero, make sure register replacement is still validated.

From-SVN: r8649
1994-12-13 15:04:05 +00:00
Doug Evans
ea5917da8d (locate_and_pad_parm): Don't call pad_below for BLKmode parms in regs.
From-SVN: r8645
1994-12-12 18:14:40 +00:00
Doug Evans
d4b0a7a049 (locate_and_pad_parm): Do padding before rounding
so pad_below knows how much is needed.

From-SVN: r8622
1994-12-07 20:58:08 +00:00
Ian Lance Taylor
f76b9db287 Check target endianness at run time, not compile time
From-SVN: r8470
1994-11-16 21:10:09 +00:00
Jason Merrill
8eda074c87 (init_function_start): Use
POINTER_TYPE_P rather than checking the type against POINTER_TYPE
        (to include references).

From-SVN: r8458
1994-11-16 00:45:41 +00:00
Doug Evans
b2a80c0d2b (assign_stack_temp): Compute size of slot after
assign_stack_local has accounted for alignment.

From-SVN: r8438
1994-11-15 14:55:15 +00:00
Richard Kenner
84e24c036d (assign_stack_temp): Always initialize p->rtl_expr.
From-SVN: r8429
1994-11-11 18:55:49 -05:00
Richard Kenner
199b61d8f8 (preserve_rtl_expr_result): find_temp_slot_from_address now used.
Don't bring the temp slot to an inner level than it was.

From-SVN: r8427
1994-11-11 17:37:45 -05:00
Richard Kenner
73620b82c8 (preserve_temp_slots): Preserve anything whose address was taken when
X is zero.

From-SVN: r8363
1994-10-31 07:24:20 -05:00
Per Bothner
f733963397 * function.c (current_function_outgoing_args_size): Update comment.
From-SVN: r8291
1994-10-17 16:09:35 -07:00
Richard Kenner
e19571dbde (preserve_temp_slots): If X cannot be a temp slot, preserve all things
whose address was taken at the present level.

From-SVN: r8238
1994-10-07 16:13:58 -04:00
Richard Kenner
303ec2aa60 (assign_stack_temp): Abort if SIZE == -1.
From-SVN: r8235
1994-10-07 08:28:44 -04:00
Richard Kenner
a25d4ba2f6 (struct temp_slot): New field addr_taken.
(assign_stack_temp): Initialize it.
(mark_temp_addr_taken): New function.
(preserve_temp_slots): Decrement level of things at same level but whose
address has been taken.

From-SVN: r8224
1994-10-06 06:52:10 -04:00
Jason Merrill
e4a4639ef0 ontext, adds argument to indicate that the new function is not a nested function.
ontext, adds argument to indicate that the new
        function is not a nested function.
        (push_function_context): Call it.
        (pop_function_context{,_from}): Similarly.

From-SVN: r8205
1994-10-02 23:16:51 +00:00
Richard Kenner
e87ee2a99d (trampoline_address): Add missing call to round_trampoline.
From-SVN: r8157
1994-09-28 19:18:05 -04:00
Richard Kenner
b88a314292 (optimize_bit_field): Put any insns made by change_address in front of INSN.
(expand_function_end): Don't pass DECL_INITIAL to setjmp_protect if it is
error_mark_node.

From-SVN: r8146
1994-09-27 18:29:21 -04:00
Richard Kenner
7cbc7b0cac (pop_function_context): Clear reg_renumber.
From-SVN: r8103
1994-09-20 17:51:32 -04:00
Jim Wilson
7a30f0c44e (assign_parms): Set RTX_UNCHANGING_P on stack_parm
for const parameter before calling move_block_from_reg.

From-SVN: r8075
1994-09-12 11:51:39 -07:00
Jason Merrill
e2fd1d94b8 (expand_main_function): Don't call __main if
HAS_INIT_SECTION is defined.

From-SVN: r8067
1994-09-10 00:34:51 +00:00
Richard Kenner
3f46679a3c (assign_parms): If parm is transparent union, use type of first field.
From-SVN: r7948
1994-08-19 17:33:13 -04:00
Richard Kenner
426749e8af (expand_function_start): Add redundant copy to static_chain_incoming_rtx if...
(expand_function_start): Add redundant copy to
static_chain_incoming_rtx if SMALL_REGISTER_CLASS so inlining works
properly.

From-SVN: r7909
1994-08-12 18:59:14 -04:00
Richard Kenner
ac9e20f0fb (expand_function_start): Only use static_chain_incoming_rtx once if it
is a REG and we have SMALL_REGISTER_CLASSES.

From-SVN: r7873
1994-08-08 17:08:00 -04:00
Richard Kenner
4acc00bf75 (expand_function_start): Initialize VALUE_ADDRESS.
From-SVN: r7823
1994-07-29 18:50:41 -04:00
Jason Merrill
4ac3d99407 tree.h (TYPE_NEEDS_CONSTRUCTING): New macro.
Wed Jul 13 03:30:36 1994  Jason Merrill  (jason@deneb.cygnus.com)

        * tree.h (TYPE_NEEDS_CONSTRUCTING): New macro.
        (tree_type): Add needs_constructing_flag.
        * function.c (assign_parms): If TYPE_NEEDS_CONSTRUCTING, pass by
        invisible reference.
        * calls.c (expand_call): Ditto.

From-SVN: r7758
1994-07-13 11:06:24 +00:00
Richard Kenner
dfd3dae6c2 (instantiate_virtual_regs_1): Remove last change.
From-SVN: r7697
1994-07-10 08:18:01 -04:00
Richard Kenner
a890174971 (instantiate_virtual_regs_1, case SET): If DEST is
virtual_stack_vars_rtx, replace with hardware frame pointer.

From-SVN: r7687
1994-07-08 18:26:41 -04:00
Mike Stump
d93d4205f1 fix temp lifetime (FOR TARGET_EXPRs only)
From-SVN: r7681
1994-07-08 20:45:14 +00:00
Richard Kenner
4c9a05bc55 Cast pointer operands to bzero, bcopy, and bcmp to (char *).
From-SVN: r7472
1994-06-14 18:19:28 -04:00
Richard Kenner
ba6da62704 (assign_parms): Set REG_USERVAR_P when parm is passed by invisible
reference but can live in register.

From-SVN: r7366
1994-05-27 16:13:41 -04:00
Richard Kenner
6673dddf4b (assign_parms): Fix typo in previous change.
From-SVN: r7283
1994-05-12 18:11:20 -04:00
Richard Kenner
5fa7422be7 (fixup_var_refs_insns): Change from USE and CLOBBER insns to using
CALL_INSN_FUNCTION_USAGE.

From-SVN: r7244
1994-05-06 17:50:04 -04:00
Richard Kenner
a03caf76d7 (assign_parms): Spread out the REG_EQUIV notes on
CONCATs.

From-SVN: r7232
1994-05-06 14:04:37 -04:00
Richard Kenner
1fd3ef7f65 (assign_parms): Use expr_size when appropriate.
From-SVN: r7228
1994-05-06 13:32:34 -04:00
Per Bothner
05e3bdb9cb Use new macro AGGREGATE_TYPE_P.
From-SVN: r7160
1994-04-26 16:56:21 -07:00
Richard Kenner
e15679f8d6 Add prototypes for static functions.
(bc_expand_function_end, expand_function_end): Call new expand_fixups
instead of old fixup_gotos.

From-SVN: r7116
1994-04-21 15:30:29 -04:00
Richard Kenner
a5a52dbc09 (assign_parms, promoted_input_arg, expand_function_start): Use promote_mode.
From-SVN: r7068
1994-04-18 14:51:48 -04:00
Jeff Law
0b21dcf57a function.c (locate_and_pad_parm): For ARGS_GROW_DOWNWARD...
* function.c (locate_and_pad_parm): For ARGS_GROW_DOWNWARD,
        Round sizetree for both upward and downward padding, nuke
        the (now unnecessary) call to pad_below for arg_size_ptr.

From-SVN: r7056
1994-04-16 23:14:50 -06:00
Richard Kenner
45620ed410 No longer handle LSHIFT.
From-SVN: r7020
1994-04-10 08:03:37 -04:00
Richard Kenner
3c8cd8bd6e (unitialized_vars_warning, setjmp_args_warning): Reword warning to be
less ambiguous.

From-SVN: r7005
1994-04-09 09:47:29 -04:00
Richard Kenner
3b69d50e4d (push_function_context): Use current_function_varargs.
(pop_function_context): Likewise.
(assign_parms): Respect current_function_varargs.
Save args_so_far in any case.

From-SVN: r6983
1994-04-06 07:47:24 -04:00
Richard Kenner
f0c51a1e34 (expand_function_start): Delay copying static chain.
From-SVN: r6979
1994-04-06 07:21:12 -04:00
Richard Kenner
e3a771613f (preserve_temp_slots): If argument is REG, see if it is address of a
temp slot we know about.

From-SVN: r6843
1994-03-21 17:15:32 -05:00
Richard Kenner
ccdecf58a9 (assign_parms, expand_function_start): Properly set MEM_IN_STRUCT_P
for DECL_RTL of function result.

From-SVN: r6791
1994-03-14 17:31:43 -05:00
Richard Kenner
63770d6ae3 (fixup_var_refs_insn): Delete CLOBBER of VAR.
(fixup_var_refs_insn): Delete CLOBBER of VAR.  If VAR is being
assigned into by a libcall sequence, remove the libcall notes.

From-SVN: r6632
1994-02-26 16:12:46 -05:00
Richard Kenner
e5e761396e (struct temp_slot): Add new field, ADDRESS.
(assign_stack_temp): Initialize it to zero.
(find_temp_slot_from_address, update_temp_slot_address): New functions.
(preserve_temp_slots): Use find_temp_slot_from_address.

From-SVN: r6496
1994-02-06 19:59:58 -05:00
Richard Kenner
3d329b07b7 (assign_parms): Call gen_realpart and gen_imagpart instead of
gen_lowpart and gen_highpart.

From-SVN: r6379
1994-01-10 19:36:36 -05:00
Richard Kenner
422c8f6335 (preserve_rtl_expr_result): New function.
From-SVN: r6367
1994-01-10 19:05:31 -05:00
Richard Kenner
83eb3b0ddb (thread_prologue_and_epilogue_insns): When constructing USE chain, set both NEXT_INSN and PREV_INSN links.
(thread_prologue_and_epilogue_insns): When constructing USE chain, set
both NEXT_INSN and PREV_INSN links.  Also, preserve order of USE insns
in chain.

From-SVN: r6215
1993-12-12 06:18:21 -05:00
Richard Kenner
e7a84011d2 Declare sequence_rtl_expr.
(struct temp_slot): New field rtl_expr.
(assign_stack_temp): Set it from sequence_rtl_expr.
({free,pop}_temp_slots): Don't free any slot with nonzero rtl_expr.
(free_temps_for_rtl_expr): New function.

From-SVN: r6161
1993-11-25 18:10:57 -05:00
Richard Kenner
980697fdbe Clean up comment formatting.
From-SVN: r6158
1993-11-25 10:53:19 -05:00
Richard Stallman
1be0704635 (expand_function_end): New arg END_BINDINGS.
From-SVN: r6141
1993-11-23 06:19:36 +00:00
Richard Stallman
c110c53d6e (assign_parms): Clear STACK_PARM when we have a
pass-by-pointer parm that we load into a pseudo.

From-SVN: r6098
1993-11-15 05:40:19 +00:00
Richard Kenner
e5884dacd5 (expand_function_start): If not optimizing, ensure we mark context
display regs as live for the entire function.

From-SVN: r5995
1993-11-04 13:29:59 -05:00
Richard Stallman
7b1a0c14e9 (assign_parms): If parmreg is a CONCAT, handle the
case where stack_parm is 0.

From-SVN: r5940
1993-10-30 06:04:50 +00:00
Richard Stallman
14aceb299b (assign_parms): Properly set parm_reg_stack_loc for args that are a CONCAT.
From-SVN: r5819
1993-10-20 03:43:31 +00:00
Richard Kenner
2849864429 (trampoline_address): Don't allocate anything from parent function's
current obstack.

From-SVN: r5734
1993-10-11 13:56:01 -04:00
Richard Stallman
467664666a (save_machine_status, restore_machine_status): New vars.
(push_function_context, pop_function_context): Use them.

From-SVN: r5721
1993-10-11 03:02:46 +00:00
Richard Kenner
4da73fa0ba (put_reg_into_stack): Allocate fixup structure in saveable obstack.
From-SVN: r5714
1993-10-10 17:10:48 -04:00
Richard Kenner
a14ae50814 (assign_parms): Pass objects who size depends on the contents of the
object by invisible reference.

From-SVN: r5585
1993-10-03 21:48:54 -04:00
Richard Kenner
0eb202977b (push_temp_slots, pop_temp_slots): Always change level.
From-SVN: r5523
1993-09-28 21:24:47 -04:00
Richard Stallman
ae0d828893 (expand_main_function): Put back accidentally
deleted previous change to use NAME__MAIN.

From-SVN: r5519
1993-09-28 23:16:09 +00:00
Doug Evans
b37f453b2a function.c: (instantiate_virtual_regs_1...
* function.c: (instantiate_virtual_regs_1, case MEM): references to
MEM via the hard frame pointer shouldn't be copied.

From-SVN: r5456
1993-09-24 19:42:16 +00:00
Jan Brittenson
e7a4277263 changed bytecode rtx structure references into macros
From-SVN: r5435
1993-09-23 10:08:13 -07:00
Jan Brittenson
c20bf1f3b3 bytecode modifications
From-SVN: r5405
1993-09-22 11:45:56 -07:00
Richard Stallman
e9b7093a9f (combine_temp_slots): Handle deletion properly.
Free the RTL that is allocated.

From-SVN: r5401
1993-09-22 18:29:43 +00:00
Jim Wilson
8634413a53 (current_function_has_nonlocal_goto): New var.
(push_function_context): Save it.
(pop_function_context): Restore it.
(init_function_start): Init it.

From-SVN: r5336
1993-09-15 23:12:57 -07:00
Richard Stallman
d181c15421 (aggregate_value_p): Allow type node as argument.
From-SVN: r5328
1993-09-15 13:39:18 +00:00
Richard Stallman
cb61f66f5b (assign_parms): When parm needs conversion on entry,
don't store it back in the slot where it was passed.

From-SVN: r5261
1993-09-05 20:01:32 +00:00
Jim Wilson
a45035b6ed (assign_stack_temp): When allocate a slot too large,
split extra off into a slot of its own.
(combine_temp_slots): New function.
(free_temp_slots, pop_temp_slots): Call combine_temp_slots.

From-SVN: r5232
1993-08-31 13:30:12 -07:00
Jim Wilson
a78bdb3850 (thread_prologue_and_epilogue_insns): For the
epilogue, put USE insns immediately before the return insn.

From-SVN: r5142
1993-08-12 10:45:57 -07:00
Jim Wilson
f31870c1b0 (assign_parms): Pass extra argument SIZE to move_block_from_reg calls.
(assign_parms): Pass extra argument SIZE to
move_block_from_reg calls.
(locate_and_pad_parm): For !ARGS_GROW_DOWNWARD case, move downward
padding pad_below call after round_up call.

From-SVN: r5016
1993-07-28 10:15:25 -07:00
Richard Stallman
19fdd3eecb (assign_parms): Don't copy too much when extending parm_reg_stack_loc.
From-SVN: r5004
1993-07-27 18:52:32 +00:00
Richard Stallman
293e3de41c (expand_main_function): Likewise.
(put_reg_into_stack): New subroutine.
(put_var_into_stack): Use that; handle CONCAT.

From-SVN: r4991
1993-07-26 20:59:21 +00:00
Richard Kenner
2a64e92d30 (aggregate_value_p): An ARRAY_TYPE is also an aggregate.
From-SVN: r4970
1993-07-23 07:17:40 -04:00
Richard Kenner
d9a98e1a53 (init_function_start): Initialize trampoline_list here.
(expand_function_end): Not here.

From-SVN: r4936
1993-07-18 14:21:41 -04:00
Richard Kenner
40d055518b (fixup_stack_1): Handle current_function_internal_arg_pointer.
From-SVN: r4777
1993-06-27 21:15:50 -04:00
Richard Stallman
f1b985b7e2 (uninitialized_vars_warning): Change warning text.
(setjmp_args_warning): Likewise.

From-SVN: r4635
1993-06-05 09:10:02 +00:00
Richard Stallman
de3ab9df04 (assign_parms): Declare and set current_call_is_indirect.
From-SVN: r4516
1993-05-20 05:10:30 +00:00
Richard Kenner
c51d911af1 Update copyright notice.
From-SVN: r4362
1993-05-06 13:10:04 -04:00
Richard Kenner
ab6155b74f (walk_fixup_memory_subreg): Add new arg UNCRITICAL.
(fixup_var_refs_insn): Call with UNCRITICAL of 1 when processing
REG_NOTES.

From-SVN: r4360
1993-05-06 12:58:33 -04:00
Doug Evans
0b2187a9ba (assign_parms): Use mode of type, not BLKmode.
From-SVN: r4186
1993-04-21 00:31:18 +00:00
Doug Evans
49640f91c6 Fix style typo.
From-SVN: r4185
1993-04-19 19:44:49 +00:00
Doug Evans
137a2a7b83 (assign_parms): Use new FUNCTION_ARG_CALLEE_COPIES macro.
From-SVN: r4184
1993-04-19 19:25:29 +00:00
Richard Kenner
c1b98a9573 Treat QUAL_UNION_TYPE like UNION_TYPE when seeing if aggregate.
From-SVN: r4118
1993-04-13 06:47:33 -04:00
Jim Wilson
1b8297c13f (init_function_start): Always set
current_funtion_returns_pcc_struct if PCC_STATIC_STRUCT_RETURN defined.

From-SVN: r4031
1993-04-06 12:28:47 -07:00
Richard Kenner
4752d3bc31 (expand_function_start): When evaluating sizes of variable types, do
so just for side-effects (the SAVE_EXPRs).

From-SVN: r3896
1993-03-27 13:41:59 -05:00
Richard Stallman
d1e37dc7e8 (fixup_var_refs_insns): Don't delete an insn copying
var to itself, if it's the end of a libcall group.

From-SVN: r3873
1993-03-25 05:43:12 +00:00
Doug Evans
461beb1055 * (assign_parms): Minor cleanup.
From-SVN: r3776
1993-03-18 20:27:21 +00:00
Doug Evans
682a59faae * (assign_parms): Remove unnecessary #ifdef.
From-SVN: r3747
1993-03-15 21:43:27 +00:00
Doug Evans
9f67be1318 * (aggregate_value_p): RETURN_IN_MEMORY handles BLKmode values.
From-SVN: r3707
1993-03-11 23:55:44 +00:00
Richard Kenner
02a10449e3 (fixup_var_refs_insns): If SMALL_REGISTER_CLASSES...
(fixup_var_refs_insns): If SMALL_REGISTER_CLASSES, ensure we don't put
any insns between the setting of the function return register and it's use.

From-SVN: r3660
1993-03-05 17:37:11 -05:00
John Hassey
9392c110eb (reposition_prologue_and_epilogue_notes): Allow
for zero length prologue and epilogue list.

From-SVN: r3465
1993-02-12 15:52:54 +00:00
Richard Kenner
75dc33195a (promoted_input_arg): New function.
From-SVN: r3449
1993-02-09 18:44:25 -05:00
Richard Kenner
e15762df9d (put_var_into_stack, fixup_var_refs_insns): Minor cleanups.
(fixup_var_refs_1, case SET): Correctly check for simple insns that don't
need fixups.

From-SVN: r3367
1993-01-27 13:27:18 -05:00
James Van Artsdalen
f898f03121 (fixup_var_refs_1): Set INSN_CODE to -1 before seeing if new insn form
is recognized.

From-SVN: r3281
1993-01-19 21:27:54 +00:00
Paul Eggert
8008b22801 # Fix misspellings in comments.
From-SVN: r3181
1993-01-10 20:12:31 +00:00
Richard Kenner
8c3948785b (assign_parm): Fix typo introduced by previous change.
From-SVN: r3158
1993-01-08 16:12:18 -05:00