aboutsummaryrefslogtreecommitdiff
path: root/gcc/calls.c
AgeCommit message (Collapse)AuthorFilesLines
2001-01-12calls.c (emit_library_call_value_1): Add USEs and CLOBBERs to function usage ↵Alexandre Oliva1-5/+33
for arguments passed by reference. * calls.c (emit_library_call_value_1): Add USEs and CLOBBERs to function usage for arguments passed by reference. Optimize callee-copied arguments. * regmove.c (find_related_toplev): Find uses in function usage. (replace_in_call_usage): New function. (fixup_match_1): Call it. * cse.c (cse_insn): Canonicalize registers in function usage. * reload1.c (replace_pseudos_in_call_usage): New function. (reload): Call it. From-SVN: r38964
2001-01-05calls.c (emit_library_call_value_1): Support INIT_CUMULATIVE_LIBCALL_ARGS.Alexandre Oliva1-1/+5
* calls.c (emit_library_call_value_1): Support INIT_CUMULATIVE_LIBCALL_ARGS. * tm.texi (INIT_CUMULATIVE_LIBCALL_ARGS): Document it. From-SVN: r38706
2000-12-30* calls.c (calls_function_1, case CONSTRUCTOR): New case.Richard Kenner1-0/+11
From-SVN: r38560
2000-12-30alias.c (alias_sets_conflict_p): New function.Richard Kenner1-21/+19
* alias.c (alias_sets_conflict_p): New function. (mems_in_disjoint_alias_sets_p): Use it. (readonly_fields_p): Moved from expr.c; check for record type. (objects_must_conflict_p): New function. * calls.c (expand_call): Use assign_temp as much as possible, use readonly variant if assigned once, and don't set memory attributes. (emit_library_call_value_1, store_one_arg): Likewise. * integrate.c (expand_inline_function): Likewise. * stmt.c (expand_asm_operands, expand_return): Likewise. * expr.c (copy_blkmode_from_reg, store_constructor): Likewise. (store_field, save_noncopied_parts, expand_expr): Likewise. (expand_expr_unaligned): Likewise. (readonly_fields_p): Moved to alias.c. (safe_from_p): Rework handling of SAVE_EXPR. MEMs ony conflict if alias sets conflict; likewise for INDIRECT_REF. * function.c (struct temp_slot): Delete field ALIAS_SET; add TYPE. (assign_stack_for_temp): Use objects_must_confict_p. Set all memory attributes from type, if specified. (mark_temp_slot): Mark TYPE field. * tree.h (alias_sets_conflict_p, readonly_fields_p): New decls. (objects_must_conflict_p): Likewise. * stmt.c (expand_decl): Don't use assign_stack_temp in error case. (add_case_node): No need to copy nodes anymore. From-SVN: r38559
2000-12-29calls.c (emit_library_call_value_1): Add to call_fusage the stack slot ↵Alexandre Oliva1-0/+3
assigned to argument passed by reference. * calls.c (emit_library_call_value_1): Add to call_fusage the stack slot assigned to argument passed by reference. From-SVN: r38523
2000-12-27calls.c (store_one_arg): If parm is passed both in stack and in register and ↵Chandrakala Chavva1-0/+24
offset is greater than... * calls.c (store_one_arg): If parm is passed both in stack and in register and offset is greater than reg_parm_stack_space, split the offset and call emit_push_insn(). From-SVN: r38503
2000-11-30calls.c (expand_call): Emit queued insns before creating the tail recursion ↵Richard Henderson1-0/+4
sequence. * calls.c (expand_call): Emit queued insns before creating the tail recursion sequence. * gcc.c-torture/execute/20001130-1.c: New test. From-SVN: r37898
2000-11-28calls.c (expand_call): Defer const/pure NO_DEFER_POP until after sibcall ↵Richard Henderson1-5/+5
do_pending_stack_adjust. * calls.c (expand_call): Defer const/pure NO_DEFER_POP until after sibcall do_pending_stack_adjust. From-SVN: r37836
2000-11-28calls.c (expand_call): Don't disable tail recursion based on the loop nest.Jan Hubicka1-4/+2
* calls.c (expand_call): Don't disable tail recursion based on the loop nest. From-SVN: r37822
2000-11-09calls.c (expand_call, [...]): Use memcpy () instead of bcopy ().Joseph Myers1-4/+4
* calls.c (expand_call, emit_library_call_value_1), collect2.c (scan_prog_file), config/a29k/a29k.c (print_operand), config/sparc/sparc.c (order_regs_for_local_alloc): Use memcpy () instead of bcopy (). * real.h: Use memcmp () instead of bcmp (). * config/m88k/m88k.c (m88k_layout_frame), config/sh/sh.c (split_branches), config/sparc/sparc.c (ultra_flush_pipeline, ultrasparc_sched_init, ultrasparc_sched_reorder), config/sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Use memset () instead of bzero (). * config/vax/xm-xms.h (FILE_NAME_NONDIRECTORY): Use strrchr () instead of rindex (). * configure.in: Don't check for bzero, bcmp, index or rindex. * configure, config.in: Regenerate. * system.h: Don't include declarations for bzero, bcmp, index or rindex. * config/i386/xm-beos.h, config/rs6000/xm-beos.h: Don't define bzero, bcmp, index or rindex. java: * parse.y (create_new_parser_context): Use memset () instead of bzero (). From-SVN: r37334
2000-11-07alias.c [...] (init_alias_analysis, [...]): Use memset () instead of bzero ().Joseph Myers1-5/+5
* alias.c (init_alias_analysis), calls.c (expand_call, emit_library_call_value_1), combine.c (init_reg_last_arrays), cse.c (new_basic_block), dbxout.c (dbxout_type), diagnostic.c (init_output_buffer, set_diagnostic_context), dwarf2out.c (equate_decl_number_to_die, build_abbrev_table), emit-rtl.c (init_emit_once), fold-const.c (mul_double, div_and_round_double), function.c (assign_parms), gcse.c (compute_can_copy, alloc_gcse_mem, alloc_reg_set_mem, record_one_set, compute_hash_table, compute_set_hash_table, compute_expr_hash_table), genattrtab.c (optimize_attrs), global.c (global_alloc, global_conflicts), haifa-sched.c (compute_trg_info, clear_units, schedule_block), integrate.c (initialize_for_inline, expand_inline_function), jump.c (thread_jumps), local-alloc.c (local_alloc), loop.c (combine_movables, count_loop_regs_set, load_mems_and_recount_loop_regs_set), print-tree.c (debug_tree), regclass.c (init_reg_sets, init_reg_sets_1, regclass, record_reg_classes, allocate_reg_info), reload.c (get_secondary_mem, remove_address_replacements, find_reloads), reload1.c (reload, set_initial_label_offsets, finish_spills, reload_as_needed, choose_reload_regs_init, reload_cse_simplify_operands), reorg.c (dbr_schedule), sbitmap.c (sbitmap_zero), simplify-rtx.c (simplify_plus_minus), ssa.c (rename_registers), stmt.c (expand_end_case), unroll.c (unroll_loop), varray.c (varray_grow), objc/objc-act.c: Use memset () instead of bzero (). ch: * actions.c (check_missing_cases), typeck.c (build_chill_slice, build_chill_cast): Use memset () instead of bzero (). cp: * class.c (duplicate_tag_error, build_vtbl_initializer), decl.c (push_binding_level), error.c (cp_tree_printer), pt.c (process_partial_specialization, tsubst_template_arg_vector), search.c (lookup_member): Use memset () instead of bzero (). java: * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c (init_outgoing_cpool), lex.c (java_init_lex): Use memset () instead of bzero (). From-SVN: r37303
2000-11-04calls.c (emit_call_1): Use n_popped instead of RETURN_POPS_ARGS().Alexandre Oliva1-3/+2
* calls.c (emit_call_1) [sibcall_pop]: Use n_popped instead of RETURN_POPS_ARGS(). From-SVN: r37242
2000-10-27calls.c (expand_call): If sibcall_failure is set during pass 1, clear ↵Jakub Jelinek1-4/+5
tail_call_insns as well. * calls.c (expand_call): If sibcall_failure is set during pass 1, clear tail_call_insns as well. * g++.old-deja/g++.other/eh2.C: New test. From-SVN: r37087
2000-10-26calls.c (expand_call): Supress sibcall if we have a BLKmode return in registers.Richard Henderson1-1/+6
* calls.c (expand_call): Supress sibcall if we have a BLKmode return in registers. From-SVN: r37076
2000-10-22calls.c (combine_pending_stack_adjustment_and_call): Don't adjust stack when ↵Alexandre Oliva1-1/+1
unadjusted_alignment ends up as zero. * calls.c (combine_pending_stack_adjustment_and_call): Don't adjust stack when unadjusted_alignment ends up as zero. From-SVN: r37008
2000-10-07calls.c (expand_call): Disallow sibcalls to noreturn functions.Richard Henderson1-0/+1
* calls.c (expand_call): Disallow sibcalls to noreturn functions. * flow.c (make_edges): Revert last change. * config/alpha/alpha.h (FUNCTION_OK_FOR_SIBCALL): Don't test TREE_THIS_VOLATILE. * config/pa/pa.h (FUNCTION_OK_FOR_SIBCALL): Likewise. From-SVN: r36781
2000-09-17Bring back equal forms for libcallsBernd Schmidt1-13/+58
From-SVN: r36469
2000-09-15Don't make bogus libcall blocksBernd Schmidt1-44/+0
From-SVN: r36435
2000-09-14calls.c (precompute_register_parameters): Use COSTS_N_INSNS, not 2.Richard Henderson1-1/+1
* calls.c (precompute_register_parameters): Use COSTS_N_INSNS, not 2. * cse.c (rtx_cost): Likewise. * optabls.c (expand_binop): Likewise. (expand_twoval_binop, prepare_cmp_insn): Likewise. * regclass.c (copy_cost): Likewise. * reload1.c (reload_cse_move2add): Likewise. From-SVN: r36423
2000-09-06* calls.c: Fix formatting.Kazu Hirata1-130/+130
From-SVN: r36219
2000-09-01Eliminate false DV warnings for predicated calls to noreturn functions.Jim Wilson1-0/+4
* calls.c (emit_call_1): Add REG_NORETURN note to call if ECF_NORETURN. * combine.c (distribute_notes): Handle REG_NORETURN. * rtl.c (reg_note_name): Add REG_NORETURN. * rtl.h (enum reg_note): Likewise. * config/ia64/ia64-protos.h (emit_safe_across_calls): Renamed from ia64_file_start. * config/ia64/ia64.c (emit_safe_across_calls): Likewise. (rtx_needs_barrier): Handle unspec_volatile 8 and 9. (emit_predicate_relation_info): Handle conditional calls with REG_NORETURN. * config/ia64/ia64.h (ASM_FILE_START): Call emit_safe_across_calls instead of ia64_file_start. * config/ia64/sysv4.h (ASM_FILE_START): Likewise. * config/ia64/ia64.md (safe_across_calls_all, save_across_calls_normal): New patterns. From-SVN: r36107
2000-08-29top level:Zack Weinberg1-6/+2
* c-common.c (declare_function_name): Use func_id_node, function_id_node, and pretty_function_id_node. Do not make __func__ visible at file scope. * c-common.h (c_tree_index): Add CTI_FUNCTION_ID, CTI_PRETTY_FUNCTION_ID, and CTI_FUNC_ID. (function_id_node, pretty_function_id_node, func_id_node): New macros. * c-decl.c (init_decl_processing): Initialize function_id_node, pretty_function_id_node, and func_id_node. (c_make_fname_decl): Correct comment. * tree.h (struct tree_identifier): Constify pointer member. * c-decl.c (pushdecl, implicit_decl_warning): Constify a char *. * c-pragma.h (struct weak_syms): Constify name and value members. (add_weak): Constify arguments. * calls.c (special_function_p): Constify a char *. (expand_call): Remove variable which is initialized and then never used. * dependence.c (struct def_use, struct induction, struct subscript): Constify 'variable' member. (get_low_bound, have_induction_variable): Constify char * argument. (find_induction_variable): Add braces to avoid dangling else. (classify_dependence): Constify char * arrays. * profile.c (output_func_start_profiler): Constify a char *. * stor-layout.c (finalize_record_size): Constify a char *. * tree.c (is_attribute_p): Constify a char *. * varasm.c (add_weak, remove_from_pending_weak_list): Constify argument. * varasm.c (make_function_rtl, make_decl_rtl): Rearrange code for comprehensibility. Do not call get_identifier if we did not change the DECL_ASSEMBLER_NAME of the decl. Use alloca to create temporary string constants, not ggc_alloc_string. No need to copy result of ASM_FORMAT_PRIVATE_NAME. Use const char * to hold IDENTIFIER_POINTERs. ch: * inout.c (add_enum_to_list): Use DECL_NAME directly, don't get its IDENTIFIER_POINTER and immediately call get_identifier on it. * lex.c (yywrap): Constify a char *. cp: * class.c (build_secondary_vtable): Constify a char *. * decl.c (init_decl_processing): Initialize function_id_node, pretty_function_id_node, and func_id_node. * input.c (struct input_source): Constify 'str'. (feed_input): Constify first argument. * mangle.c (write_identifier): Constify argument. * pt.c (mangle_class_name_for_template): Constify argument. f: * ansify.c: Use #line, not # <number>. java: * jcf-parse.c (set_source_filename): Constify a char *. * jcf-write.c (append_innerclasses_attribute, make_class_file_name): Constify a char *. Don't recycle a variable for an unrelated purpose. * parse.y: (build_alias_initializer_parameter_list): Constify a char *. (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings. From-SVN: r36055
2000-08-29calls.c (expand_call): Don't create a VAR_DECL just to throw it away.Mark Mitchell1-10/+4
* calls.c (expand_call): Don't create a VAR_DECL just to throw it away. * expr.c (expand_expr, case TARGET_EXPR): Don't call mark_addressable. * tree.h (get_file_function_name): Remove two duplicate declarations. * typeck.c (mark_addressable): Remove code that pokes around in RTL. From-SVN: r36038
2000-08-22calls.c (check_sibcall_argument_overlap_1): Adjust for ARGS_GROW_DOWNWARD.Alexandre Oliva1-0/+9
* calls.c (check_sibcall_argument_overlap_1): Adjust for ARGS_GROW_DOWNWARD. (check_sibcall_argument_overlap): Likewise. From-SVN: r35887
2000-08-16calls.c (calls_function_1, [...]): Only test TYPE_RETURNS_STACK_DEPRESSED ↵Richard Kenner1-3/+6
for FUNCTION_TYPE. * calls.c (calls_function_1, expand_call): Only test TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE. * function.c (thread_prologue_and_epilogue_insns): Likewise. From-SVN: r35743
2000-08-15calls.c (ECF_SP_DEPRESSED): New macro.Richard Kenner1-10/+34
* calls.c (ECF_SP_DEPRESSED): New macro. (calls_function_1): Treat calling sp-depressed function as alloca. (emit_call_1): Don't adjust SP if calling sp-depressed function. (expand_call): Set ECF_SP_DEPRESSED if TYPE_RETURNS_STACK_DEPRESSED. If sp-depressed, ensure block saves and restores SP. * fold-const.c (extract_muldiv): Only check TYPE_IS_SIZETYPE for INTEGER_TYPE. * function.c (keep_stack_depressed): New function. (thread_prologue_and_epilogue_insns): Call it. * print-tree.c (print_node): Use HOST_WIDE_INT_PRINT_UNSIGNED to print DECL_OFFSET_ALIGN. Print no-force-blk and transparent-union flags properly. * stmt.c (expand_goto_internal): Don't restore stack if last block and function returns with sp depressed. (fixup_gotos): Likewise. (save_stack_pointer): New function, from code in expand_decl. (expand_decl): Call new function. * tree.h (TYPE_IS_SIZETYPE): Call INTEGER_TYPE_CHECK. (TYPE_RETURNS_STACK_DEPRESSED): New macro. (save_stack_pointer): New declaration. From-SVN: r35734
2000-07-31calls.c (combine_pending_stack_adjustment_and_call): Only use ↵Herman A.J. ten Brugge1-4/+7
preferred_unit_stack_boundary when it is > 1. * calls.c (combine_pending_stack_adjustment_and_call): Only use preferred_unit_stack_boundary when it is > 1. From-SVN: r35381
2000-07-18calls.c (store_arg): Return non-zero if sibcall_failure is desired.Jakub Jelinek1-16/+59
* calls.c (store_arg): Return non-zero if sibcall_failure is desired. (expand_call): Adjust caller. * gcc.c-torture/execute/20000717-5.c: New test. * gcc.c-torture/execute/20000717-1.x: Removed. From-SVN: r35117
2000-07-13calls.c (stored_args_map): New variable.Jakub Jelinek1-5/+125
* calls.c (stored_args_map): New variable. (check_sibcall_argument_overlap_1): New. (check_sibcall_argument_overlap): New. (expand_call): Initialize stored_args_map. Call check_sibcall_argument_overlap. * gcc.c-torture/execute/20000707-1.c: New test. From-SVN: r35017
2000-07-03* calls.c (emit_library_call_value_1): Revert previous change.Clinton Popetz1-2/+2
From-SVN: r34861
2000-07-03calls.c (emit_library_call_value_1): Use valreg instead of hard_libcall_value.Clinton Popetz1-2/+2
* calls.c (emit_library_call_value_1): Use valreg instead of hard_libcall_value. From-SVN: r34854
2000-06-23calls.c (compute_argument_addresses): Force stack slots into alias set 0.Jakub Jelinek1-0/+7
* calls.c (compute_argument_addresses): Force stack slots into alias set 0. * expr.c (emit_push_insn): Force pushes into alias set 0. From-SVN: r34662
2000-06-11Warning fixes:Kaveh R. Ghazi1-2/+2
* bb-reorder.c (build_scope_forest): Initialize variable `curr_scope'. * calls.c (expand_call): Likewise for variables `save_pending_stack_adjust' and `save_stack_pointer_delta'. * i386.c (function_arg_advance, function_arg): Cast to avoid signed/unsigned warnings. * i386.h (MEMORY_MOVE_COST): Likewise. * ifcvt.c (cond_exec_process_if_block): Initialize variables `else_start' and `else_end'. * libgcc2.h (__eh_alloc, __eh_free): Prototype. * regrename.c (rr_replace_reg): Initialize variable `dest_subregno'. ch: * Makefile.in (EXPR_H): New dependency variable. (actions.o, expr.o): Use EXPR_H. (lang.o): Depend on RTL_H and EXPR_H. * lang.c: Include rtl.h and expr.h. (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED. cp: * decl2.c (compare_options): Don't needlessly cast away const-ness. f: * com.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED. java: * decl.c (create_primitive_vtable): Prototype. * jcf-write.c (generate_bytecode_insns): Initialize variable `saved_context'. * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED. From-SVN: r34490
2000-06-09timevar.def: Add TV_EXPAND.Jason Merrill1-1/+6
* timevar.def: Add TV_EXPAND. * timevar.c (timevar_print): Update timing information. * calls.c (try_to_integrate): Push to TV_INTEGRATION for inlining. * stmt.c (expand_return): Check for error_mark_node. cp/: * semantics.c (expand_body): Push to TV_EXPAND. * optimize.c (optimize_function): Push to TV_INTEGRATION. * decl.c (start_function): Always call announce_function. * tinfo2.cc: Just declare abort. From-SVN: r34470
2000-06-02alias.c (struct alias_set_entry): New field has_zero_child.Richard Kenner1-1/+1
* alias.c (struct alias_set_entry): New field has_zero_child. (mem_in_disjoint_alias_sets_p): Return 0 if set in either ase. (get_alias_set): If language-dependent routine set TYPE_ALIAS_SET, do nothing. Call record_component_aliases for aggregate types. (record_alias_subset): Set has_zero_child. (record_component_aliases, case ARRAY_TYPE): Do nothing if TYPE_NONALIASES_COMPONENT. (record_component_aliases, case RECORD_TYPE): Test DECL_NONADDRESSABLE_P. * c-decl.c (grokdeclarator): Set DECL_NONADDRESSABLE_P instead of TREE_ADDRESSABLE. * calls.c (initialize_argument_information): Only test TYPE_TRANSPARENT_UNION for UNION_TYPE. * function.c (assign_parms): Likewise. * integrate.c (function_cannot_inline_p): Likewise. * stor-layout.c (finish_record_layout): Don't call record_component_aliases. * tree.h (struct tree_int_cst): Use struct tree_common. (struct tree_real_cst, struct tree_string): Likewise. (struct tree_complex, struct tree_identifier): Likewise. (struct tree_list, struct tree_vec, struct tree_exp): Likewise. (struct tree_block, struct tree_type, struct tree_decl): Likewise. (TYPE_TRANSPARENT_UNION): Use UNION_TYPE_CHECK. (TYPE_NONALIASES_COMPONENT): New macro. (TYPE_AMBIENT_BOUNDEDNESS): Use FUNCTION_TYPE_CHECK. (DECL_NONADDRESSABLE_P): New macro. (struct tree_decl): Reorder bits for clarity of how many left; add non_adressable. * cp/cp-tree.h: Use struct tree_common instead of a char array. * cp/decl.c (grokdeclarator): Set DECL_NONADDRESSABLE_P instead of TREE_ADDRESSABLE. From-SVN: r34373
2000-05-31Makefile.in (c-decl.o): Depend on rtl.h and expr.h.Richard Kenner1-22/+20
* Makefile.in (c-decl.o): Depend on rtl.h and expr.h. * alias.c (struct alias_entry): alias_set is HOST_WIDE_INT. (REG_BASE_VALUE): Remove unneeded cast to unsigned. (get_alias_set_entry): ALIAS_SET arg is HOST_WIDE_INT. (find_base_decl): New function, from c_find_base_decl in c-common.c. (new_alias_set): Moved from tree.c; return is HOST_WIDE_INT. (get_alias_set): Likewise. Major rework to do more things and allow language-specific code to just handle special-cases. (record_alias_subset): Args are HOST_WIDE_INT. (record_component_alias): Local vars are HOST_WIDE_INT. Don't handle COMPLEX_EXPR. (get_varargs_alias_set): Moved from builtins.c. (get_frame_alias_set): New function. * builtins.c (expand_builtin_return_address): Use frame alias set. (expand_builtin_setjmp, expand_builtin_longjmp): Use alias set for setjmp buffer. (get_memory_rtx): Rework to use set_mem_attributes. (get_varargs_alias_set): Deleted from here. * c-common.c (c_apply_type_quals_to_decl): Alias sets now HOST_WIDE_INT. (c_find_base_decl): Deleted from here. (c_get_alias_set): Remove many cases and rework to just handle C-specific cases. * c-common.h (c_get_alias_set): Returns HOST_WIDE_INT. * c-decl.c (rtl.h, expr.h): Now included. (init_decl_processing): Call record_component_aliases on array types. (grokdeclarator): Likewise. Set TREE_ADDRESSABLE for all fields that are not bitfields. * c-typeck.c (common_type): Call record_component_aliases for array. * caller-save.c (setup_save_areas): Rework register loop for unsigned. Set all save areas to the frame alias set. * calls.c (initialie_argument_information): Call set_mem_attributes. (compute_argument_addresses, expand_call): Likewise. * explow.c (set_mem_attributes): New function. (stabilize): Use MEM_COPY_ATTRIBUTES and force_reg. * expr.c (struct move_by_pieces): Remove {to,from}_{struct,readonly}. LEN and OFFSET now HOST_WIDE_INT. (clear_by_pieces): Similar changes. (move_by_pieces): LEN now HOST_WIDE_INT; don't set deleted fields. (move_by_pieces_ninsns): Now returns unsigned HOST_WIDE_INT. (move_by_pieces_1): Don't use deleted fields, use MEM_COPY_ATTRIBUTES. (clear_by_pieces_1): Likewise. (emit_push_insn): Call set_mem_attributes. (expand_expr, case INDIRECT_REF): Likewise. (expand_expr, case VAR_DECL): Call change_address. * expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE): Use host_integerp and tree_low_cst. (get_varargs_alias_set, get_frame_alias_set): New decls. (record_base_value, record_alias_subset, lang_get_alias_set): Likewise. (new_alias_set, set_mem_attributes): Likewse. * function.c (struct temp_slot): ALIAS_SET is HOST_WIDE_INT. (assign_stack_temp_for_type): Likewise. Can split slot even if alias set since can copy. Set MEM_ALIAS_SET and MEM_SET_IN_STRUCT_P. (assign_temp): Use host_integerp and tree_low_cst. (put_var_into_stack): Properly handle SAVE_EXPR. (put_addressof_into_stack): Likewise. (assign_parms): Call set_mem_attributes. Delete #if 0 code. (fix_lexical_address): Put reference to chain into frame alias set. (expand_function_start): Call set_mem_attributes. * integrate.c (expand_inline_function): Likewise. * recog.c (adj_offsettable_operand): Use MEM_COPY_ATTRIBUTES. * regmove.c (try_apply_stack_adjustment): Likewise. * reload.c (push_reload, make_memloc): Likewise. * reload1.c (alter_reg): Make alias sets for spilled pseudos. * rtl.def (MEM): Update comment. * rtl.h (MEM_ALIAS_SET): Now uses XCWINT. (move_by_pieces): Change length to HOST_WIDE_INT. (record_base_value, record_alias_subset): Delete from here. * stmt.c (expand_decl): Call set_mem_attributes. * stor-layout.c (finish_record_layout): Call record_component_aliases.i * toplev.c (compile_file): Call init_alias_once earlier. * tree.c (lang_get_alias_set, get_alias_set, new_alias_set): Deleted from here: now in alias.c. * tree.h (struct tree_type): alias_set is HOST_WIDE_INT. (struct tree_decl): Likewise. (get_alias_set, new_alias_set, lang_get_alias_set): Deleted from here. * varasm.c (make_function_rtl, make_decl_rtl): Call set_mem_attributes. (output_constant_def, force_const_mem): Likewise. * cp/Makefile.in (decl.o): Include ../expr.h. * cp/decl.c (expr.h): Include. (init_decl_processing): Call record_component_aliases for arrays. (grokdeclarator): Likewise. Set TREE_ADDRESSABLE for fields that aren't bitfields. * cp/tree.c (build_cplus_array_type_1): Call record_component_aliases. From-SVN: r34305
2000-05-27configure.in (stage1_warn_cflags): Add -Wstrict-prototypes -Wmissing-prototypes.Zack Weinberg1-11/+12
* configure.in (stage1_warn_cflags): Add -Wstrict-prototypes -Wmissing-prototypes. * configure: Regenerate. * gcc.texi: Remove explanation of MD_CALL_PROTOTYPES. * builtins.c, calls.c: Change all instances of gen_call_* or gen_sibcall_* to GEN_CALL_* and GEN_SIBCALL_*. * calls.c (struct_value_size_rtx): Separate definition from initialization to avoid unused variable warning. * genflags.c (gen_macro): New function. (gen_proto): Call it for gen_call_* and gen_sibcall_*. (gen_nonproto): Delete. (gen_insn): Put all insns on the same obstack. (main): Generate prototypes for everything unconditionally. From-SVN: r34213
2000-05-27tree.h (TREE_CODE_LENGTH): New macro.Richard Kenner1-28/+14
* tree.h (TREE_CODE_LENGTH): New macro. * c-common.c (c_find_base_decl): Use it. * expr.c (safe_from_p): Likewise. * print-tree.c (print_node): Likewise. * tree.c (make_node, copy_node, get_identifier): Likewie. (first_rtl_op, contains_placeholder_p, substitute_in_expr): Likewise. (build, build_nt, build_parse_node, simple_cst_equal): Likewise. * fold-const.c (make_range): Likewise. (fold): Likewise; also use first_rtl_op. * c-iterate.c (collect_iterators): Use first_rtl_op. * calls.c (calls_function_1): Likewise; also rename TYPE to CLASS. Use IS_EXPR_CODE_CLASS. (preexpand_calls): Likewise. * ggc-common.c (ggc_mark_trees): Rework to use first_rtl_op and TREE_CODE_LENGTH. * stmt.c (warn_if_unused_value): If no operands, no unused value. * ch/lang.c (deep_const_expr): Use first_rtl_op. * ch/satisfy.c (satisfy): Use TREE_CODE_LENGTH. * cp/method.c (mangle_expression): Use TREE_CODE_LENGTH. * cp/tree.c (break_out_calls, build_min_nt): Use TREE_CODE_LENGTH. (built_min, cp_tree_equal): Likewise. From-SVN: r34203
2000-05-24calls.c (expand_call): Handle cleanups in tail-recursion arguments ↵Mark Mitchell1-3/+14
analagously to cleanups in sibling... * calls.c (expand_call): Handle cleanups in tail-recursion arguments analagously to cleanups in sibling calls. From-SVN: r34143
2000-05-15calls.c: Re-install both patches reverted by last patch.Jan Hubicka1-237/+270
* calls.c: Re-install both patches reverted by last patch. (struct arg_data): New field tail_call_reg. (initialize_argument_information): Initialize tail_call_reg (load_register_parameters): New argument flags, use tail_call_reg when emiting tail call sequence. (expand_call): Update call of load_register_parameters; copy unadjusted_args_size to adjusted_args_size. From-SVN: r33913
2000-05-15calls.c (expand_call): Move expand_start_target_temps call after ↵Jakub Jelinek1-6/+9
start_sequence(). * calls.c (expand_call): Move expand_start_target_temps call after start_sequence(). From-SVN: r33911
2000-05-11* calls.c: Revert both 05-09 patches.Richard Henderson1-253/+228
From-SVN: r33868
2000-05-09calls.c (expand_call): Increment currently_expanding_call before calling ↵Richard Henderson1-4/+2
optimize_tail_recursion. * calls.c (expand_call): Increment currently_expanding_call before calling optimize_tail_recursion. From-SVN: r33813
2000-05-09calls.c (expand_call): Reorganize somewhat in order to avoid unnecesary ↵Jan Hubicka1-227/+254
recalculation inside loop and... * calls.c (expand_call): Reorganize somewhat in order to avoid unnecesary recalculation inside loop and make tail call failure code cleaner. From-SVN: r33798
2000-05-03Add missing blankRichard Kenner1-1/+1
From-SVN: r33628
2000-05-01* calls.c (expand_call): Don't emit reg notes for a sibcall.Richard Henderson1-1/+2
From-SVN: r33596
2000-04-28calls.c (calls_function_1): Propertly handle TREE_LIST expressions; use ↵Jan Hubicka1-12/+13
special_function_p to detect alloca. * calls.c (calls_function_1): Propertly handle TREE_LIST expressions; use special_function_p to detect alloca. From-SVN: r33528
2000-04-28calls.c (combine_pending_stack_adjustment_and_call): Return the adjustment; ↵Richard Henderson1-52/+77
don't do the stack adjust. * calls.c (combine_pending_stack_adjustment_and_call): Return the adjustment; don't do the stack adjust. (expand_call): Call compute_argument_block_size right before allocating the block; update comment; don't do alignment sanity checking for sibling call; use args_size instead of unadjusted_args_size before args_size is adjusted. Use combine_pending_stack_adjustment_and_call to compute stack adjust for must_preallocate case. * expr.c (push_block): Remove shadow `temp' in inner scope. Co-Authored-By: Jan Hubicka <jh@suse.cz> From-SVN: r33516
2000-04-27calls.c (combine_pending_stack_adjustment_and_call): New function.Mark Mitchell1-15/+72
* calls.c (combine_pending_stack_adjustment_and_call): New function. (expand_call): Use it. From-SVN: r33491
2000-04-25calls.c (expand_call): Disable tail call generation once ↵Richard Henderson1-1/+8
rtx_equal_function_value_matters is false. * calls.c (expand_call): Disable tail call generation once rtx_equal_function_value_matters is false. * reg-stack.c (convert_regs_1): Treat EDGE_ABNORMAL_CALL edges like EDGE_EH edges. From-SVN: r33431