Commit Graph

608 Commits

Author SHA1 Message Date
John David Anglin
084a11066f expr.c (gen_group_rtx, [...]): New functions.
* expr.c (gen_group_rtx, emit_group_move): New functions.
	* expr.h (gen_group_rtx, emit_group_move): Prototype.
	* function.c (expand_function_start): Use gen_group_rtx to create a
	PARALLEL rtx to hold the return value when the real return rtx is a
	PARALLEL.
	(expand_function_end): Use emit_group_move to move the return value
	from a PARALLEL to the real return registers.
	* rtl.h (REG_FUNCTION_VALUE_P): Allow function values to be returned
	in PARALLELs.

From-SVN: r59554
2002-11-27 02:29:12 +00:00
Mark Mitchell
a3b885703b re PR rtl-optimization/6631 (Miscompiled structure access)
PR optimization/6631
	* Makefile.in (function.o): Depend on langhooks.h.
	* alias.c (objects_must_conflict_p): Check honor_readonly when
	examining TYPE_READONLY.
	* function.c (assign_stack_temp_for_type): Likewise.

	PR optimization/6631
	* g++.dg/opt/const2.C: New test.

From-SVN: r58136
2002-10-14 21:19:05 +00:00
Jan Hubicka
db6556348d re PR c/7344 (performance regression on huge case statements)
* calls.c (expand_call): Simplify noreturn call.

	PR c/7344
	* cfgbuild.c (make_edges): Create edge cache when we do have
	large jumptable.
	(do_tablejump): Note size of maximal jumptable.
	* function.c (prepare_function_start): Zero out size.
	* function.h (function): Add max_jumptable_ents.

	* cfgcleanup.c (insn_match_p): Verify sibcall flag for calls to.

From-SVN: r58063
2002-10-11 20:26:50 +00:00
Kaveh R. Ghazi
7bdfd72e8d decl.c (typename_hash): Use htab_hash_pointer.
cp:
	* decl.c (typename_hash): Use htab_hash_pointer.

gcc:
	* fold-const.c (size_htab_hash): Use htab_hash_pointer.
	* function.c (insns_for_mem_hash): Likewise.
	* varasm.c (STRHASH): Likewise.

java:
	* class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer.

From-SVN: r58036
2002-10-11 01:28:28 +00:00
Kazu Hirata
cc2902df52 dbxout.c: Follow spelling conventions.
* dbxout.c: Follow spelling conventions.
	* defaults.h: Likewise.
	* df.c: Likewise.
	* diagnostic.h: Likewise.
	* doloop.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* except.c: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* expr.h: Likewise.
	* flags.h: 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.
	* genattrtab.c: Likewise.
	* genconfig.c: Likewise.
	* genrecog.c: Likewise.
	* ggc-page.c: Likewise.
	* ggc.h: Likewise.
	* global.c: Likewise.
	* gthr-win32.h: Likewise.
	* integrate.c: Likewise.
	* jump.c: Likewise.
	* langhooks.c: Likewise.
	* langhooks.h: Likewise.
	* line-map.h: Likewise.
	* local-alloc.c: Likewise.
	* longlong.h: Likewise.
	* loop.c: Likewise.
	* loop.h: Likewise.

From-SVN: r57406
2002-09-22 14:09:34 +00:00
John David Anglin
9dff28ab53 calls.c (store_one_arg): Set default alignment for BLKmode arguments to BITS_PER_UNIT when...
* calls.c (store_one_arg): Set default alignment for BLKmode arguments
	to BITS_PER_UNIT when ARGS_GROW_DOWNWARD and the padding direction is
	downward.
	* function.c (pad_below):  Always compile.
	(locate_and_pad_parm): If defined ARGS_GROW_DOWNWARD, pad argument to
	alignment when it is not in a register or REG_PARM_STACK_SPACE is true.
	Pad below when the argument is not in a register and the padding
	direction is downward.
	* pa-64.h (MUST_PASS_IN_STACK): Move define to pa.h.
	(PAD_VARARGS_DOWN): Define.
	* pa.c (function_arg_padding): Revise padding directions to make them
	compatible with the 32 and 64-bit runtime architecture documentation.
	(hppa_va_arg):  Add code to handle variable and size zero arguments
	passed by reference on TARGET_64BIT.  Reformat.
	(function_arg): Use a PARALLEL for BLKmode and aggregates args on
	TARGET_64BIT.  Use a DImode PARALLEL for BLKmode args 5 to 8 bytes
	wide when !TARGET_64BIT.  Move forward check for mode==VOIDmode.
	Add comments.
	* pa.h (MAX_PARM_BOUNDARY): Correct define for TARGET_64BIT.
	(RETURN_IN_MEMORY): Return size zero types in memory.
	(FUNCTION_VALUE): Return TFmode in general registers.
	(MUST_PASS_IN_STACK): Define.
	(FUNCTION_ARG_BOUNDARY): Simplify.
	(FUNCTION_ARG_PASS_BY_REFERENCE): Pass variable and zero sized types
	by reference.
	(FUNCTION_ARG_CALLEE_COPIES): Define to FUNCTION_ARG_PASS_BY_REFERENCE.

From-SVN: r57226
2002-09-17 03:30:37 +00:00
Kazu Hirata
8d9afc4e2b ABOUT-NLS: Follow spelling conventions.
* ABOUT-NLS: Follow spelling conventions.
	* ChangeLog: Likewise.
	* ChangeLog.1: Likewise.
	* ChangeLog.2: Likewise.
	* ChangeLog.3: Likewise.
	* ChangeLog.4: Likewise.
	* ChangeLog.5: Likewise.
	* ChangeLog.6: Likewise.
	* FSFChangeLog.10: Likewise.
	* FSFChangeLog.11: Likewise.
	* c-common.c: Likewise.
	* c-lex.c: Likewise.
	* c-objc-common.c: Likewise.
	* cppexp.c: Likewise.
	* cppinit.c: Likewise.
	* cpplex.c: Likewise.
	* doloop.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* reg-stack.c: Likewise.
	* reload.h: Likewise.
	* ssa.c: Likewise.

From-SVN: r57188
2002-09-16 11:42:00 +00:00
Richard Henderson
44bb111a78 expr.h (enum block_op_methods): New.
* expr.h (enum block_op_methods): New.
        (emit_block_move): Update prototype.
        * expr.c (block_move_libcall_safe_for_call_parm): New.
        (emit_block_move_via_loop): New.
        (emit_block_move): Use them.  New argument METHOD.
        (emit_push_insn): Always respect the given alignment.
        (expand_assignment): Update call to emit_block_move.
        (store_expr, store_field, expand_expr): Likewise.
        * builtins.c (expand_builtin_apply): Likewise.
        (expand_builtin_memcpy, expand_builtin_va_copy): Likewise.
        * function.c (expand_function_end): Likewise.
        * config/sh/sh.c (sh_initialize_trampoline): Likewise.
        * config/sparc/sparc.c (sparc_va_arg): Likewise.
        * calls.c (expand_call, emit_library_call_value_1): Likewise.
        (save_fixed_argument_area): Use emit_block_move with
        BLOCK_OP_CALL_PARM instead of move_by_pieces.
        (restore_fixed_argument_area): Likewise.
        (store_one_arg): Fix alignment parameter to emit_push_insn.

From-SVN: r56661
2002-08-29 12:20:01 -07:00
Neil Booth
81d41e749d * function.c (TRAMPOLINE_ALIGNMENT): Always defined.
From-SVN: r56078
2002-08-06 20:39:41 +00:00
Geoffrey Keating
6d9f628e05 Index: ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* Makefile.in (sdbout.o): Doesn't need $(OBSTACK_H).
	* collect2.h (permanent_obstack): Delete declaration.
	* collect2.c (permanent_obstack): Delete definition.
	(main): Don't initialise permanent_obstack.  Use xstrdup instead.
	* expr.c: Don't include obstack.h.
	(permanent_obstack): Delete declaration.
	* function.c: Don't include obstack.h.
	(permanent_obstack): Delete declaration.
	* integrate.c: Don't include obstack.h.
	(function_maybepermanent_obstack): Delete declaration.
	* print-tree.c (debug_tree): Use x*alloc not permalloc.
	* sdbout.c (gen_fake_label): Use x*alloc not permalloc.
	* tlink.c (pfgets): Use xstrdup not permanent_obstack.
	* toplev.c (lang_independent_init): Rename init_obstacks to init_ttree.
	* tree.h: Rename init_obstacks to init_ttree.  Remove declarations
	of permalloc, expralloc, perm_calloc.
	* tree.c (permanent_obstack): Delete definition.
	(init_ttree): Rename from init_obstacks.
	(permalloc): Delete.
	(perm_calloc): Delete.
	(dump_tree_statistics): Don't print information about
	permanent_obstack.
	* varasm.c (assemble_start_function): Use xstrdup instead of
	permalloc/strcpy.
	(assemble_variable): Likewise.
	* config/alpha/alpha.c (unicosmk_need_dex): Use xmalloc instead of
	permalloc.
	(unicosmk_add_extern): Likewise.
	* config/c4x/c4x.c (c4x_external_ref): Likewise.
	(c4x_global_label): Likewise.
	* config/frv/frv.c (frv_encode_section_info): Likewise.
	* config/i386/winnt.c (i386_pe_record_external_function): Likewise.
	(i386_pe_record_exported_symbol): Likewise.
	* config/mips/mips.c (mips_output_external): Likewise.
	(mips_output_external_libcall): Likewise.
	* config/pa/pa.c: (permanent_obstack): Delete declaration.
	(output_call): Use ggc_strdup instead of allocating on
	permanent_obstack.
	* config/romp/romp.c: Include ggc.h.
	(get_symref): Don't declare permanent_obstack, use ggc_strdup
	intead of permanent_obstack.
	* config/rs6000/aix31.h (ASM_OUTPUT_EXTERNAL): Use concat
	instead of permalloc.
	* config/rs6000/rs6000.c (rs6000_gen_section_name): Use xmalloc
	instead of permalloc
	* config/rs6000/xcoff.h (ASM_OUTPUT_EXTERNAL): Use concat
	instead of permalloc.
	* config/vax/vax.c (vms_check_external): Use xmalloc instead of
	permalloc.

Index: cp/ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* cvt.c (ocp_convert): Delete obsolete code.
	* parse.y (permanent_obstack): Delete declaration.
	* pt.c (permanent_obstack): Delete declaration.
	* repo.c (permanent_obstack): Delete declaration.
	(open_repo_file): Use xmalloc instead of permanent_obstack.
	(init_repo): Use xstrdup instead of permanent_obstack.

Index: java/ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* class.c: (permanent_obstack): Delete declaration.
	* constants.c: (permanent_obstack): Delete declaration.
	* except.c: (permanent_obstack): Delete declaration.
	* expr.c: (permanent_obstack): Delete declaration.
	* jcf-parse.c: (permanent_obstack): Delete declaration.
	(saveable_obstack): Delete declaration.
	* parse.h: (permanent_obstack): Delete declaration.
	* typeck.c: (permanent_obstack): Delete declaration.

From-SVN: r56035
2002-08-04 22:45:31 +00:00
Jason Merrill
8e51619a4c function.c (assign_parms): Handle frontend-directed pass by invisible reference.
* function.c (assign_parms): Handle frontend-directed pass by
        invisible reference.
cp/
        * call.c (build_over_call): Likewise.
        (cp_convert_parm_for_inlining): New fn.
        (convert_for_arg_passing): New fn.
        (convert_default_arg, build_over_call): Use it.
        (type_passed_as): New fn.
        * pt.c (tsubst_decl): Use it.
        * decl2.c (cp_build_parm_decl): New fn.
        (build_artificial_parm): Use it.
        (start_static_storage_duration_function): Likewise.
        * decl.c (start_cleanup_fn, grokdeclarater): Likewise.
        (grokparms): Don't mess with DECL_ARG_TYPE.
        * typeck.c (convert_arguments): Use convert_for_arg_passing.
        * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
        Define.
        * cp-tree.h: Declare new fns.

From-SVN: r55781
2002-07-26 16:10:43 -04:00
Neil Booth
060a58c593 gengenrtl.c (gencode): Don't define obstack_alloc_rtx.
* gengenrtl.c (gencode): Don't define obstack_alloc_rtx.
	* function.c (SYMBOL__MAIN): Remove definition.
	* global.c (SET_CONFLICT, REGBITP, ALLOCNO_LIVE_P): Remove.
	* predict.c (PROB_NEVER, PROB_LIKELY, PROB_UNLIKELY): Remove.
	* profile.c (GCOV_INDEX_TO_BB): Remove.
	* sched-rgn.c (ABS_VALUE, MIN_DIFF_PRIORITY, MIN_PROB_DIFF): Remove.
	* simplify-rtx.c (FIXED_BASE_PLUS_P): Remove.

From-SVN: r55631
2002-07-21 22:01:58 +00:00
Zack Weinberg
6c535c69ee varargs.h: Replace with stub which issues #error.
* ginclude/varargs.h: Replace with stub which issues #error.
	* ginclude/stdarg.h: __builtin_stdarg_start is renamed
	__builtin_va_start.

	* builtins.def (BUILT_IN_VARARGS_START): Delete.
	(BUILT_IN_VA_START): New.
	* builtins.c (expand_builtin_va_start): Eliminate first
	argument and code to implement pre-ISO varargs.
	(std_expand_builtin_va_start): Ignore first argument; it is
	always 1.
	(expand_builtin): Handle BUILT_IN_VA_START and
	BUILT_IN_STDARG_START identically.  Delete
	BUILT_IN_VARARGS_START case.

	* function.c (assign_parms): Delete hide_last_arg and all
	its uses.
	(mark_varargs): Delete function.
	* function.h (struct function): Delete 'varargs' bit.
	(current_function_varargs): Delete macro.
	* tree.h: Don't declare mark_varargs.

	* c-decl.c (c_function_varargs, c_mark_varargs): Delete.
	(c_expand_body): Don't call mark_varargs.
	* c-objc-common.c: Handle BUILT_IN_VA_START and
	BUILT_IN_STDARG_START identically.  Delete
	BUILT_IN_VARARGS_START case.
	* c-tree.h: Don't declare c_mark_varargs.
	* c-parse.in: Remove grammar rules for '&...' (which has been
	commented out since before 2.7.2) and for '...' in K+R
	argument declarations.

	* builtins.c, function.c, integrate.c, sibcall.c,
	config/alpha/unicosmk.h, config/arc/arc.c, config/arc/arc.h,
	config/avr/avr.c, config/cris/cris.c, config/fr30/fr30.c,
	config/i960/i960.c, config/i960/i960.md, config/m32r/m32r.c,
	config/m32r/m32r.h, config/m88k/m88k.c, config/m88k/m88k.h,
	config/mips/mips.c, config/mmix/mmix.c, config/mmix/mmix.h,
	config/mn10300/mn10300.c, config/pa/som.h, config/s390/s390.c,
	config/sh/sh.c, config/sh/sh.h, config/sparc/sparc.h,
	config/stormy16/stormy16.c: Delete all references to
	current_function_varargs, and code predicated on that flag.

	* config/alpha/alpha.c (alpha_va_start),
	config/arc/arc.c (arc_va_start),
	config/i386/i386.c (ix86_va_start),
	config/mips/mips.c (mips_va_start),
	config/mn10300/mn10300.c (mn10300_va_start),
	config/rs6000/rs6000.c (rs6000_va_start),
	config/s390/s390.c (s390_va_start),
	config/sh/sh.c (sh_va_start),
	Ignore first argument; it is always 1.

	* config/c4x/c4x-protos.h, config/c4x/c4x.c: Delete c4x_va_start.
	* config/ia64/ia64-protos.h, config/ia64/ia64.c: Delete ia64_va_start.
	* config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c:
	Delete m68hc11_va_start.
	* config/c4x/c4x.h, config/ia64/ia64.h, config/m68hc11/m68hc11.h:
	No need to define EXPAND_BUILTIN_VA_START.

	* doc/invoke.texi, doc/sourcebuild.texi, doc/tm.texi,
	doc/trouble.texi: Remove references to GCC-provided <varargs.h>.

testsuite:
	* c-torture/execute/991216-3.c, c-torture/execute/strct-varg-1.c,
	c-torture/execute/va-arg-7.c, c-torture/execute/va-arg-8.c,
	c-torture/execute/va-arg-15.c, c-torture/execute/va-arg-16.c,
	c-torture/execute/va-arg-17.c, c-torture/execute/va-arg-19.c:
	Convert to use <stdarg.h>.
	* c-torture/execute/va-arg-3.c, c-torture/execute/va-arg-3.x:
	Delete.
	* gcc.dg/va-arg-2.c: New.
	* lib/gcc.exp, lib/objc.exp: Remove code to set -DNO_VARARGS.

From-SVN: r55472
2002-07-16 02:16:47 +00:00
Ulrich Weigand
faa964e5dd re PR middle-end/6963 (Linux kernel miscompile due to clobbered MEM_SIZE)
PR middle-end/6963
	* function.c (assign_stack_temp_for_type): Do not return
	the same MEM rtx for multiple uses of a stack slot.

From-SVN: r54912
2002-06-22 14:26:53 +00:00
Richard Henderson
df696a7573 function.h (struct function): Rename profile_label_no.
* function.h (struct function) [funcdef_no]: Rename profile_label_no.
        (current_function_funcdef_no): Similarly.
        * function.c (funcdef_no): Similarly.
        (prepare_function_start): Set current_function_funcdef_no.
        (expand_function_start): Don't set current_function_profile_label_no.
        * dwarf2out.h (current_funcdef_number): Remove.
        * dwarf2out.c (current_funcdef_number): Remove.  Replace with
        current_function_funcdef_no throughout.
        * dwarfout.c, vmsdbgout.c: Similarly.
        * except.c (sjlj_funcdef_number): Remove.
        (sjlj_emit_function_enter): Use current_function_funcdef_no instead.
        (output_function_exception_table): Likewise.
        * final.c (profile_function): Use current_function_funcdef_no
        instead of current_function_profile_label_no.

From-SVN: r54709
2002-06-17 10:47:22 -07:00
Richard Earnshaw
0af5c89673 function.c (epilogue_done): Correctly build a sequence of insns for a sibcall epilogue.
* function.c (epilogue_done): Correctly build a sequence of insns for
a sibcall epilogue.

From-SVN: r54702
2002-06-17 08:42:00 +00:00
Jeff Law
7f24367410 alias.c (argument_registers): Remove.
* alias.c (argument_registers): Remove.
	(init_alias_once): Initialize static_reg_base_value here.  Remove
	initialization of argument_registers.
	(init_alias_once_per_function): Remove.
	(init_alias_analysis): Copy all the entries from static_reg_base_value
	into new_reg_base_value all at once.
	* rtl.h (init_alias_once_per_function): Remove declaration.
	* function.c (prepare_function_start): Do not call
	init_alias_once_per_function.

	* caller-save.c (init_caller_save): Use gen_rtx_INSN instead of
	starting a sequence and emitting an INSN.

From-SVN: r54582
2002-06-13 06:24:00 -06:00
David S. Miller
2f937369fa Delete SEQUENCE rtl usage outside of reorg and ssa passes.
2002-06-05  David S. Miller  <davem@redhat.com>

	Delete SEQUENCE rtl usage outside of reorg and ssa passes.
	* rtl.h (gen_sequence, emit_insns, emit_insns_before,
	emit_insns_before_scope, emit_insns_after,
	emit_insns_after_scope): Delete declaration.
	* ada/misc.c (insert_code_for): Use emit_insn* instead of
	emit_insns_foo.
	* config/alpha/alpha.c (alpha_set_memflags_1): Abort on SEQUENCE.
	(alpha_set_memflags): Fix comment.
	(set_frame_related_p): Use get_insns instead of gen_sequence.
	* config/alpha/alpha.md (setjmp receiver splitter): Avoid
	emitting no insns.
	* config/arm/arm.c (arm_finalize_pic): Use get_insns instead of
	gen_sequence.
	(arm_gen_load_multiple, arm_gen_store_multiple): Likewise.
	* config/fr30/fr30.c (fr30_move_double): Likewise.
	* config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_movstr):
	Likewise.
	* config/ia64/ia64.c (spill_restore_mem): Likewise.
	* config/ia64/ia64.md (conditional move spliiter): Avoid emitting
	no insns.
	* config/m32r/m32r.c (gen_split_move_double): Use get_insns
	instead of gen_sequence.
	* config/mips/mips.c (embedded_pic_fnaddr_reg): Likewise.
	(mips_expand_prologue, mips16_gp_pseudo_reg): Likewise.
	* config/sh/sh.c (sh_need_epilogue): Likewise.
	* config/sparc/sparc.md (current_function_calls_alloca, flat): New
	attributes.
	(setjmp pattern and split): Use them to avoid splitter which emits
	no RTL.
	* genattrtab.c (main): Emit include of function.h
	* config/stormy16/stormy16.c (xstormy16_split_cbranch): Use
	get_insns instead of gen_sequence.
	* config/cris/cris.c (cris_split_movdx): Likewise.
	* emit-rtl.c (emit_insns*): Kill.
	(try_split): Expect insn list instead of SEQUENCE.
	(make_jump_insn_raw, make_call_insn_raw): Fix comments.
	(emit_*insn*): Reimplement to work with INSN lists and PATTERNs.
	Make them abort if a SEQUENCE is given and RTL checking is
	enabled.
	(emit_*_scope): Don't forget to set scope on final insn.
	(gen_sequence): Move from here...
	* ssa.c (gen_sequence): To here as private function.
	* builtins.c (expand_builtin_apply_args): Use emit_insn_foo, fix
	comments.
	(expand_builtin_return, expand_builtin_mathfn): Likewise.
	(expand_builtin_strlen): Use get_insns instead of gen_sequence.
	(expand_builtin_saveregs): Use emit_insn_foo, fix comments.
	(expand_builtin_expect_jump): Use get_insns and fix comments.
	* calls.c (try_to_integrate): Use emit_insn_foo.
	(expand_call, emit_library_call_value_1): Likewise.
	* expr.c (emit_queue): Handle insn lists instead of SEQUENCE.
	(emit_move_insn_1): Use get_insns instead of gen_sequence.
	(expand_expr): Use emit_insn_foo.
	* cfgrtl.c (commit_one_edge_insertion): Use emit_insn_foo.
	* except.c (build_post_landing_pads): Likewise.
	* flow.c (attempt_auto_inc): Likewise.
	* stmt.c (expand_fixup, fixup_gotos, expand_nl_handler_label,
	expand_nl_goto_receivers, expand_decl_cleanup): Likewise.
	* function.c (fixup_var_refs_insn): Use get_insns instead of
	gen_sequence.
	(fixup_var_refs_1): Likewise and expect insn list from gen_foo.
	(fixup_memory_subreg): Use get_insns instead of gen_sequence.
	(fixup_stack_1, purge_addressof_1, expand_main_function,
	get_arg_pointer_save_area): Likewise.
	(optimize_bit_field, instantiate_virtual_regs_1, assign_parms,
	expand_function_end): Use emit_insn_foo.
	(record_insns, keep_stack_depressed): Work with insn list instead
	of SEQUENCE, fix comments.
	* ifcvt.c (noce_emit_store_flag, noce_try_store_flag,
	noce_try_store_flag_constants, noce_try_store_flag_inc,
	noce_try_store_flag_mask, noce_emit_cmove, noce_try_cmove_arith,
	noce_try_minmax, noce_try_abs): Use emit_insn_foo.
	(noce_process_if_block): Use get_insns instead of gen_sequence.
	* optabs.c (add_equal_note): Work with insn list, fix comments.
	(expand_binop): Expect insn list from GEN_FCN(), use emit_insn_foo.
	(expand_unop, expand_complex_abs, expand_unop_insn,
	expand_no_conflict_block): Likewise.
	(gen_move_insn): Use get_insns instead of gen_sequence.
	(gen_cond_trap): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	(emit_initial_value_sets): Use emit_insn_foo.
	* reload1.c (emit_output_reload_insns, emit_reload_insns): Likewise.
	(fixup_abnormal_edges): Avoid losing REG_NOTES more intelligently
	now that RTL generators give insn lists.
	* sibcall.c (replace_call_placeholder): Use emit_insn_foo.
	* doloop.c (doloop_modify, doloop_modify_runtime): Use get_insns
	instead of gen_sequence.
	(doloop_optimize): Work with insn lists instead of SEQUENCE rtl.
	* explow.c (emit_stack_save, emit_stack_restore): Use get_insns
	instead of gen_sequence.
	* loop.c (move_movables, emit_prefetch_instructions,
	gen_add_mult, check_dbra_loop, gen_load_of_final_value):
	Likewise.
	(loop_regs_update): Work with insn list instead of SEQUENCE rtl.
	(product_cheap_p): Likewise, and add commentary about RTL wastage
	here.
	* lcm.c (optimize_mode_switching): Use get_insns instead of
	gen_sequence.
	* profile.c (gen_edge_profiler): Likewise.
	* regmove.c (copy_src_to_dest): Likewise.
	* reg-stack.c (compensate_edge): Likewise and fix comment.
	* gcse.c (process_insert_insn): Likewise.
	(insert_insn_end_bb): Work with insn list instead of SEQUENCE rtl.
	* jump.c (delete_prior_computation): Update comment.
	* genemit.c (gen_expand, gen_split, main): Use get_insns instead
	of gen_sequence, update comments to match.
	* recog.c (peephole2_optimize): Work with insn lists instead of
	SEQUENCE rtl.
	* sched-vis.c (print_pattern): Abort on SEQUENCE.
	* unroll.c (unroll_loop, find_splittable_givs, final_giv_value):
	Use get_insns instead of gen_sequence.
	(copy_loop_body): Likewise and don't emit dummy NOTE.
	* genrecog.c: Don't mention SEQUENCE rtl in comments.
	* combine.c (try_combine): Expect insn lists from split generator.
	* reorg.c (relax_delay_slots): Emit SEQUENCE into insn list by
	hand.

From-SVN: r54497
2002-06-11 05:22:48 -07:00
Jeff Law
bf1660a670 alias.c (static_reg_base_value): New to hold RTL for items allocated once per function for the aliasing code.
* alias.c (static_reg_base_value): New to hold RTL for
	items allocated once per function for the aliasing code.
	(init_alias_once_per_function): Initialize static_reg_base_value.
	(init_alias_analysis): Avoid throw-away allocations of RTL by
	using pre-computed values in static_reg_base_value.
	* function.c (prepare_function_start): Call
	init_alias_once_per_function appropriately.
	* rtl.h (init_alias_once_per_function): Declare.
	* caller-save (init_caller_save): Restructure slightly to
	avoid lots of silly RTL generation.
	* expr.c (init_expr_once): Likewise.
	* reload1.c (reload_cse_regs_1): Allocate throw-away register
	RTL object here.  Pass it into children.
	(reload_cse_simplify_operands): Use passed-in register RTL
	object.
	(reload_cse_simplify): Pass through throw-away register
	RTL object.

From-SVN: r54442
2002-06-10 10:32:45 -06:00
Geoffrey Keating
e2500fedef Merge from pch-branch up to tag pch-commit-20020603.
From-SVN: r54232
2002-06-04 07:11:05 +00:00
Zdenek Dvorak
f6366fc7ad bb-reorder.c (make_reorder_chain_1): Modified.
* bb-reorder.c (make_reorder_chain_1): Modified.
	* cfganal.c (can_fallthru, flow_call_edges_add,
	flow_preorder_transversal_compute): Modified.
	* cfgbuild.c (make_edges, find_basic_blocks, find_many_sub_basic_blocks,
	find_sub_basic_blocks): Modified.
	* cfgcleanup.c (try_simplify_condjump, try_optimize_cfg): Modified.
	* cfglayout.c (skip_insns_after_block, fixup_reorder_chain,
	fixup_fallthru_exit_predecessor, cfg_layout_redirect_edge): Modified.
	* cfgrtl.c (tidy_fallthru_edges, verify_flow_info): Modified.
	* combine.c (this_basic_block): Type changed to basic_block.
	(combine_instructions, set_nonzero_bits_and_sign_copies, try_combine,
	nonzero_bits, num_sign_bit_copies, get_last_value_validate,
	get_last_value, distribute_notes, distribute_links): Modified.
	* final.c (compute_alignments): Modified.
	* flow.c (regno_uninitialized, regno_clobbered_at_setjmp): Modified.
	* function.c (thread_prologue_and_epilogue_insns): Modified.
	* gcse.c (compute_code_hoist_vbeinout): Modified.
	* global.c (build_insn_chain): Modified.
	* ifcvt.c (find_if_block, find_cond_trap): Modified.
	* predict.c (last_basic_block_p, note_prediction_to_br_prob): Modified.
	* regmove.c (regmove_optimize): Modified.
	* resource.c (find_basic_block): Modified.
	* sched-ebb.c (schedule_ebbs): Modified.
	* ssa-dce.c (find_control_dependence, find_pdom): Modified.

From-SVN: r53695
2002-05-21 20:37:43 +00:00
Kazu Hirata
dd3f010165 final.c: Fix formatting.
* final.c: Fix formatting.
	* fix-header.c: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.

From-SVN: r53563
2002-05-17 18:07:01 +00:00
Richard Henderson
0b17ab2f5b Revert "Basic block renumbering removal", and two followup patches.
From-SVN: r53537
2002-05-16 19:31:56 -07:00
Zdenek Dvorak
355e4ec445 Basic block renumbering removal.
From-SVN: r53522
2002-05-16 10:34:53 -07:00
Jan Hubicka
194734e9e5 invoke.texi (-malign-double): Re-add lost warning.
* invoke.texi (-malign-double): Re-add lost warning.

	* i386-protos.h (x86_output_mi_thunk): Declare.
	* unix.h (ASM_OUTPUT_MI_THUNK): Move offline to ...
	* i386.c (x86_output_mi_thunk): ... here; handle 64bits.

	* dwarf2out.c (output_call_frame_info): Do not skip unwind info
	when flag_asynchronous_unwind_tables is set.

	* flags.h (flag_reorder_functions): Declare.
	* function.c (prepare_function_start): Initialize frequnecy.
	* params.def (HOT_BB_COUNT_FRACTION, HOT_BB_FREQUENCY_FRACTION): New paramters.
	* Makefile.in (predict.o): Add dependency on target.h and params.h
	* defaults.h (HOT_TEXT_SECTION_NAME,
	UNLIKELY_EXECUTED_TEXT_SECTION_NAME): New macros.
	* predict.c (choose_function_section): New function.
	(estimate_bb_frequencies): Use it.
	* toplev.c (flag_reorder_functions): New global variable.
	(lang_independent_options): New.
	(parse_options_and_default_flags): Set.
	* varasm.c (assemble_start_function): Bypass functdion alignment
	for never executed functions.
	* invoke.texi (-freorder-blocks, -freorder-functions): Document.
	(param hot-bb-count-fraction, hot-bb-frequency-fraction): New.
	* tm.texi (HOT_TEXT_SECTION_NAME, UNLIKELY_EXECUTED_TEXT_SECTION_NAME):
	Document.

	Thu Jan  3 21:52:09 CET 2002  Jan Hubicka  <jh@suse.cz>

	* predict.c: Inlude profile.h
	(MIN_COUNT): Rename to MIN_COUNT_FRACTION
	(maybe_hot_bb_p, probably_cold_bb_p, probably_never_executed_bb_p):
	Use the information about maximal counter in the program.

	Thu Dec 20 22:14:00 CET 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (maybe_hot_bb_p, probably_cold_bb_p,
	probably_never_executed_bb_p): New functions.
	* cfgcleanup.c (outgoing_edges_match): Use them.
	* predict.c (MIN_COUNT, MIN_FREQUENCY): New macros.
	(maybe_hot_bb_p, probably_cold_bb_p,
	probably_never_executed_bb_p): New functions.

	* function.h (function): Add new field function_frequency.
	* predict.c (compute_function_frequency): New function.
	(estimate_probability): Call it.

From-SVN: r53478
2002-05-15 09:00:30 +00:00
Jan Hubicka
b7c9bf289f final.c (end_final): Use C trees to output data structures for profiling.
* final.c (end_final): Use C trees to output data structures for profiling.

	* Makefile.in (LIBGCC_DEPS): Added missing dependency on gcov-io.h
        (profile.o): New dependency profile.h
        (final.o): New dependency profile.h
        * profile.h: New file. New global structure profile_info.
        * final.h (count_edges_instrumented_now): Declare.
        (current_function_cfg_checksum): Declare.
        (function_list): New structure.
        (functions_head, functions_tail): New static variables.
        (end_final): Emits more data, removed some -ax stuff.
        (final): Stores function names and chcksums.
        * gcov-io.h (__write_gcov_string): New function.
        (__read_gcov_string): New function.
        * gcov.c (read_profile): New function.
        (create_program_flow_graph): Uses read_profile instead of reading
	da_file.
        (read_files): Removed da_file checking, it's done by read_profile now.
        * libgcc2.c (bb_function_info): New structure.
        (bb): New field in structure, removed some -ax stuff.
        (__bb_exit_func): Changed structure of da_file.
        * profile.c (count_edges_instrumented_now): New global variable.
        (current_function_cfg_checksum): New global variable.
        (max_counter_in_program): New global variable.
        (get_exec_counts): New function.
        (compute_checksum): New function.
        (instrument_edges): Sets count_edges_instrumented_now.
        (compute_branch_probabilities): Uses get_exec_counts instead of
	reading da_file.
        (branch_prob): Calls compute_checksum and writes extra data to bbg_file.
        (init_branch_prob): Removed da_file checking, done in get_exec_counts
	now.
        (end_branch_prob): Removed da_file checking, done in get_exec_counts
	now.
        * gcov.texi: Updated information about gcov file format.

Co-Authored-By: Pavel Nejedly <bim@atrey.karlin.mff.cuni.cz>

From-SVN: r53326
2002-05-09 12:54:19 +00:00
Kazu Hirata
797a6ac12c * function.c: Fix formatting.
From-SVN: r53075
2002-05-03 00:23:55 +00:00
Kazu Hirata
1eeeb6a437 cpplex.c: Fix comment formatting.
* cpplex.c: Fix comment formatting.
	* function.c: Likewise.
	* integrate.c: Likewise.
	* regrename.c: Likewise.
	* sibcall.c: Likewise.
	* simplify-rtx.c: Likewise.
	* tree-inline.c: Likewise.

From-SVN: r52972
2002-04-30 20:48:55 +00:00
Alan Modra
f6f315fe11 re PR target/6413 (PROFILE_HOOK label_no)
PR target/6413
	* function.h: (struct function): Add profile_label_no field.
	(current_function_profile_label_no): Define.
	* function.c: (profile_label_no): New static var.
	(expand_function_start): Increment it, and copy to
	current_function_profile_label_no.
	* output.h (profile_label_no): Delete.
	* final.c (profile_label_no): Delete.
	(profile_function): Use current_function_profile_label_no.
	(final_end_function): Don't increment profile_label_no here.
	* config/i386/i386.c (ix86_osf_output_function_prologue): Replace
	profile_label_no with current_function_profile_label_no.
	* config/pa/pa.c (current_function_number): Delete.
	(pa_output_function_prologue): Don't output profile label here.
	(hppa_profile_hook): Use label_no param rather than
	current_function_number.
	(FUNC_BEGIN_PROLOG_LABEL): Move to ..
	* config/pa/pa.h: .. here.
	(FUNCTION_PROFILER): Output profile label here.

From-SVN: r52656
2002-04-23 16:50:55 +09:30
Mark Mitchell
8ed8f73189 re PR fortran/6138 (Incorrect access of integer*1 variables on PA)
PR f/6138.
	* function.c (fixup_memory_subreg): Add promoted_mode parameter.
	(walk_fixup_memory_subreg): Likewise.
	(fixup_var_refs_insn): Adjust accordingly.
	(fixup_var_refs_1): Likewise.

From-SVN: r52631
2002-04-22 19:26:19 +00:00
Neil Booth
b03e38e17e Makefile.in: Update.
* Makefile.in: Update.
	* decl.c (push_c_function_context, pop_c_function_context,
	mark_c_function_context): Rename for consistency.
	* c-objc-common.c (c_objc_common_init): Langhooks set elsewhere.
	* c-tree.h (push_c_function_context, pop_c_function_context,
	mark_c_function_context): Rename for consistency.
	* c-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.
	* function.c (init_lang_status, save_lang_status,
	restore_lang_status, mark_lang_status, free_lang_status):
	Move to langhooks.h.
	(push_function_context_to, pop_function_context_from,
	free_after_parsing, prepare_function_start, ggc_mark_struct_function):
	Update.
	* function.h (init_lang_status, save_lang_status,
	restore_lang_status, mark_lang_status, free_lang_status):
	Move to langhooks.h.
	* langhooks-def.h (LANG_HOOKS_FUNCTION_INIT,
	LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK,
	LANG_HOOKS_FUNCTION_INITIALIZER): New.
	(LANG_HOOKS_INITIALIZER): Update.
	(lhd_do_nothing_f): New.
	* langhooks.h (struct lang_hooks_for_functions): New.
	(struct lang_hooks): New hooks.
	* langhooks.c (lhd_do_nothing_f): New.
cp:
	* cp-lang.c (LANG_HOOKS_FUNCTION_INIT,
	LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_MARK): Redefine.
	* cp-tree.h (cxx_push_function_context, cxx_pop_function_context,
	cxx_mark_function_context): New.
	* decl.c (push_cp_function_context, pop_cp_function_context,
	mark_cp_function_context): Rename for consistency.
	(cxx_init_decl_processing): Don't set old hooks.
objc:
	* objc-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.

From-SVN: r52551
2002-04-20 09:14:37 +00:00
Jakub Jelinek
ce5e43d03e re PR c/6358 (GCC 3.1 ICE on statement expressions)
PR c/6358
	* function.c: Reapply patch for c/6358.
	(expand_function_end): Copy decl_rtl's mode, not
	current_function_return_rtx mode.

From-SVN: r52538
2002-04-19 23:02:52 +02:00
Richard Henderson
58533fa280 * function.c: Revert patch for c/6358.
From-SVN: r52511
2002-04-18 21:41:34 -07:00
Jakub Jelinek
a3acf46d44 re PR c/6358 (GCC 3.1 ICE on statement expressions)
PR c/6358
	* function.c (assign_parms): Assign hard current_function_return_rtx
	register here...
	(expand_function_end): ...not here.

	* gcc.c-torture/compile/20020418-1.c: New test.

From-SVN: r52485
2002-04-18 21:10:11 +02:00
Hans-Peter Nilsson
1ab3e58a2f function.c (fixup_var_refs_1): For paradoxical (subreg VAR), replace VAR, don't try the subreg.
* function.c (fixup_var_refs_1) <SET, handling VAR in SET_SRC>:
	For paradoxical (subreg VAR), replace VAR, don't try the subreg.

From-SVN: r52217
2002-04-12 11:31:25 +00:00
Eric Botcazou
9432c136e5 function.c (assign_temp): Accept either type or decl argument.
* function.c (assign_temp): Accept either type or decl argument.
        Detect variables whose size is too large to fit into an integer.
        * stmt.c (expand_decl): Pass the decl, not the type.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r51788
2002-04-02 19:41:40 -08:00
Neil Booth
b0c4822985 Makefile.in (convert.o, [...]): Update.
* Makefile.in (convert.o, calls.o, expmed.o): Update.
	* attribs.c (handle_mode_attribute, handle_vector_size_attribute):
	Use new hooks.
	* builtin-types.def (BT_PTRMODE): Update.
	* c-common.c (type_for_size): Rename c_common_type_for_size.
	(type_for_mode): Similarly.
	(shorten_compare, pointer_int_sum, c_common_nodes_and_builtins):
	Use new hook.
	* c-bommon.h (c_common_type_for_size, c_common_type_for_mode): New.
	* c-decl.c (finish_enum, build_enumerator): Use new hooks.
	* c-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* c-typeck.c (common_type, comptypes, default_conversion):
	Use new hooks.
	* calls.c: Include langhooks.h.
	(emit_library_call_value_1): Use new hooks.  Avoid redundant
	calls.
	* convert.c: Include langhooks.h
	(convert_to_pointer, convert_to_integer): Use new hooks.
	* except.c (init_eh): Similarly.
	* expmed.c: Include langhooks.h.
	(expand_mult_add): Use new hooks.
	* expr.c (store_expr, store_constructor, expand_expr, do_jump,
	try_casesi): Similarly.
	* fold-const.c (optimize_bit_field_compare, make_range,
	decode_field_reference, fold_truthop, fold): Similarly.
	* function.c (assign_stack_local_1, assign_stack_temp_for_type,
	put_var_into_stack): Similarly.
	* langhooks-def.h (LANG_HOOKS_TYPE_FOR_MODE,
	LANG_HOOKS_TYPE_FOR_SIZE): New.
	(LANG_HOOKS_TYPES_INITIALIZER): Update.
	* langhooks.h (lang_hooks_for_types): New hooks.
	* stmt.c (expand_decl_cleanup, emit_case_nodes): Use new hooks.
	* tree.c (get_unwidened, get_narrower): Similarly.
	* tree.h (type_for_mode, type_for_size): Remove.
	* varasm.c (force_const_mem): Use new hooks.
ada:
	* gigi.h (type_for_size, type_for_mode): Rename.
	* misc.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* trans.c (tree_transform): Update.
	* utils.c (gnat_init_decl_processing, init_gigi_decls,
	builtin_function, float_type_for_size, signed_or_unsigned_type,
	build_vms_descriptor, unchecked_convert): Update.
	(type_for_mode, type_for_size): Rename.
	* utils2.c (nonbinary_modular_operation): Update.
cp:
	* cp-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* cvt.c (cp_convert_to_pointer, type_promotes_to): Use new hooks.
	* decl.c (finish_enum): Similarly.
	* error.c (dump_type): Similarly.
	* lex.c (cxx_init): Similarly.
	* mangle.c (write_builtin_type): Similarly.
	* typeck.c (comptypes): Similarly.
f:
	* com.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	(type_for_mode, type_for_size): Rename.
	(signed_or_unsigned_type, signed_type, truthvalue_conversion,
	unsigned_type):	Use new hooks.
java:
	* Make-lang.in (builtins.o): Update.
	* boehm.c (get_boehm_type_descriptor): Update.
	* builtins.c: Include langhooks.h.
	* decl.c (java_init_decl_processing): Update.
	* java-tree.h (java_type_for_mode, java_type_for_size): New.
	* lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
	Redefine.
	* typeck.c (type_for_mode, type_for_size): Update.
objc:
	* objc-act.c (handle_impent): Update.
	* objc-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
	Redefine.

From-SVN: r51571
2002-03-29 21:46:27 +00:00
Neil Booth
7afff7cfb0 Makefile.in: Update.
* Makefile.in: Update.
	* c-common.c: Include langhooks.h.
	(inline_forbidden_p): Use new hook.
	* diagnostic.c: Include langhooks.h.
	(format_with_decl, announce_function,
	default_print_error_function): Use new hook.
	* dwarf2out.c (dwarf2_name): Use new hook.
	* function.c: Include langhooks.h.
	(init_function_start): Use new hook.
	* langhooks-def.h (lhd_decl_printable_name): New.
	(LANGHOOKS_DECL_PRINTABLE_NAME): New.
	(LANGHOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_decl_printable_name): New.
	* langhooks.h (struct lang_hooks): New hook.
	* toplev.c (decl_name, decl_printable_name): Remove.
	(open_dump_file): Use new hook.
	(process_options): Remove old hook.
	* tree.h (decl_printable_name): Remove.
ada:
	* misc.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(gnat_init): Remove old hook.
cp:
	* cp-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	* cp-tree.h (lang_printable_name): Rename.
	* error.c (lang_decl_name): Use new hook.
	* lex.c (cxx_init): Remove old hook.
	* pt.c (tsubst_expr): Use new hook.
	* tree.c (lang_printable_name): Rename.
f:
	* com.c (lang_printable_name): Rename.
	(LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(ffe_init): Don't use old hook.
java:
	* decl.c (start_java_method): Use new hook.
	* lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(java_init): Remove old hook.
objc:
	* objc-act.c (objc_init): Remove old hook.
	(objc_printable_name): Export.
	* objc-act.h (objc_printable_name): New.
	* objc-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.

From-SVN: r51066
2002-03-20 07:58:41 +00:00
Richard Henderson
9f53e9654b re PR target/5901 ([IA64] misplaced .body)
PR optimization/5901
        * function.c (reposition_prologue_and_epilogue_notes): Position
        the markers after/before the last/first insn not deleted.

From-SVN: r50715
2002-03-12 22:10:23 -08:00
Richard Kenner
93fe8e9229 emit-rtl.c (copy_most_rtx): Accept EXPR_LIST for may_share.
* emit-rtl.c (copy_most_rtx): Accept EXPR_LIST for may_share.
	* function.c (fixup_var_refs): Add MAY_SHARE parameter.
	(fixup_var_refs_insns, fixup_var_refs_insns_with_has): Likewise.
	(fixup_var_refs_insn, fixup_var_refs_1): Likewise.
	(pop_function_context): Compute MAY_SHARE parameter for
	fixup_var_refs.
	(fixup_var_refs_1, case MEM): Pass MAY_SHARE to copy_most_rtx, not VAR.
	(gen_mem_addressof): Call fixup_var_refs with new parm.

From-SVN: r50493
2002-03-09 07:53:21 -05:00
Steve Ellcey
7879b81e6c rtl.texi (SUBREG_PROMOTED_UNSIGNED_P): Change definition to take ptr_extend into account as third type of extension.
* doc/rtl.texi (SUBREG_PROMOTED_UNSIGNED_P): Change definition
        to take ptr_extend into account as third type of extension.
        (SUBREG_PROMOTED_UNSIGNED_SET): Definition of new macro to set bit
        fields used by SUBREG_PROMOTED_UNSIGNED_P.
        * rtl.h (SUBREG_PROMOTED_UNSIGNED_SET): New macro.
        (SUBREG_PROMOTED_UNSIGNED_P): Change to return -1 as well as 0 or 1.
        * calls.c (precompute_arguments): Use new macro.
        (expand_call): Ditto.
        * combine.c (nonzero_bits): Ditto.
        (record_promoted_value): Ditto.
        * expr.c (store_expr): Ditto.
        (expand_expr): Ditto.
        * function.c (assign_parms): Ditto.

From-SVN: r50174
2002-02-28 17:19:52 -08:00
Aldy Hernandez
69ef87e2bc i386.md ("mmx_uavgv8qi3"): Use const_vector.
2002-02-19  Aldy Hernandez  <aldyh@redhat.com>

	* config/i386/i386.md ("mmx_uavgv8qi3"): Use const_vector.
	("mmx_uavgv4hi3"): Same.
	("pmulhrwv4hi3"): Same.

	* tree-inline.c (walk_tree): Handle vectors.

	* c-common.c (constant_expression_warning): Handle vectors.
	(overflow_warning): Same.

	* sched-deps.c (sched_analyze_2): Handle vectors.

	* rtlanal.c (rtx_unstable_p): Handle vectors.
	(rtx_varies_p): Same.
	(count_occurrences): Same.
	(regs_set_between_p): Same.
	(modified_between_p): Same.
	(modified_in_p): Same.
	(volatile_insn_p): Same.
	(volatile_refs_p): Same.
	(side_effects_p): Same.
	(may_trap_p): Same.
	(inequality_comparisons_p): Same.
	(replace_regs): Same.
	(computed_jump_p_1): Same.

	* rtl.c (DEF_MACHMODE): Change all definitions to accept 8th
	argument.
	(inner_mode_array): New.
	(copy_rtx): Handle vectors.
	(copy_most_rtx): Same.
	(rtx_equal_p): Same.
	(get_mode_alignment): Adjust for vectors.

	* resource.c (mark_referenced_resources): Handle vectors.
	(mark_set_resources): Same.

	* reload1.c (eliminate_regs): Handle vectors.
	(elimination_effects): Same.
	(scan_paradoxical_subregs): Same.

	* reload.c (subst_reg_equivs): Handle vectors.

	* regrename.c (scan_rtx): Handle vectors.

	* regclass.c (reg_scan_mark_refs): Handle vectors.

	* recog.c (find_single_use_1): Handle vectors.

	* local-alloc.c (equiv_init_varies_p): Handle vectors.
	(contains_replace_regs): Same.
	(memref_referenced_p): Same.

	* integrate.c (copy_rtx_and_substitute): Handle vectors.
	(subst_constants): Same.

	* genattrtab.c (attr_copy_rtx): Handle vectors.
	(encode_units_mask): Same.
	(clear_struct_flag): Same.
	(count_sub_rtxs): Same.

	* gcse.c (want_to_gcse_p): Handle vectors.
	(oprs_unchanged_p): Same.
	(hash_expr_1): Same.
	(oprs_not_set_p): Same.
	(expr_killed_p): Same.
	(compute_transp): Same.
	(store_ops_ok): Same.

	* function.c (purge_addressof_1): Do not allow paradoxical subregs
	of vectors.
	(fixup_var_refs_1): Same.
	(instantiate_virtual_regs_1): Same.

	* fold-const.c (operand_equal_p): Handle vectors.
	(fold): Same.
	(rtl_expr_nonnegative_p): Same.

	* flow.c (mark_used_regs): Handle vectors.

	* df.c (df_uses_record): Handle vectors.

	* cselib.c (cselib_subst_to_values): Handle vectors.
	(cselib_mem_conflict_p): Same.
	(hash_rtx): Same.

	* cse.c (canon_reg): Handle vectors.
	(fold_rt): Same.
	(cse_process_notes): Same.
	(count_reg_usage): Same.
	(canon_hash): Same.

	* alias.c (nonlocal_mentioned_p): Add case for CONST_VECTOR.

	* combine.c (mark_used_regs_combine): Add case for CONST_VECTOR.

	* emit-rtl.c (init_emit_once): Generate const0_rtx for vectors.
	(gen_rtx): Handle CONST_VECTOR.
	(gen_const_vector_0): New.
	(copy_rtx_if_shared): CONST_VECTORs can be shared.
	(reset_used_flags): Same.
	(copy_insn_1): Same.
	(initializer_constant_valid_p): Handle VECTOR_CST.

	* doc/c-tree.texi (Expression trees): Document VECTOR_CST.

	* doc/rtl.texi (Constants): Document const_vector.
	(CONST0_RTX): Update for vectors.
	(RTL sharing): Same.

	* print-tree.c (print_node): Add case for VECTOR_CST.

	* tree.h (TREE_VECTOR_CST_ELTS): New.
	(struct tree_vector): New.
	(union tree_node): Add vector node.
	(build_vector): Add prototype.

	* tree.def (VECTOR_CST): New.

	* tree.c (build_vector): New.

	* expmed.c (make_tree): Handle CONST_VECTOR.

	* rtl.h (CONSTANT_P): CONST_VECTORs are constants too.
	(CONST_VECTOR_ELT): New.
	(CONST_VECTOR_NUNITS): New.

	* machmode.h (GET_MODE_INNER): New.
	(DEF_MACHMODE): Accept 8th arg.

	* machmode.def: Add 8th argument for vector inner mode.
	Add inner vector modes for vectors.

	* rtl.def (VEC_CONST): Remove.
	(CONST_VECTOR): New.

	* expr.c (clear_storage): Allow vectors.
	(is_zeros_p): Handle VECTOR_CST.

	* varasm.c (output_constant_pool): Handle vectors.
	(rtx_const): Add veclo and vechi fields.
	(kind): Add RTX_VECTOR.
	(decode_rtx_const): Add case for vector.

	* config/rs6000/rs6000-protos.h: Add zero_constant.

	* config/rs6000/rs6000.c (rs6000_emit_move): Handle vector
	constants.  Force easy vector constants into memory.
	(easy_vector_constant): New.
	(emit_easy_vector_constant): New.
	(rs6000_legitimize_reload_address): Do not generate bad reloads on
	darwin.

	* config/rs6000/rs6000.md ("altivec_lvx"): Reflect what
	instruction does.
	("altivec_lvxl"): Same.
	(altivec_lvebx): Same.
	(altivec_lvehx): Same.
	(altivec_lvewx): Same.
	("*movv4si_const0"): New.
	("*movv4sf_const0"): New.
	("*movv8hi_const0"): New.
	("*movv16qi_const0"): New.

From-SVN: r49853
2002-02-19 02:53:41 +00:00
Alexandre Oliva
4606272bc4 function.c (assign_parms): Demote promoted argument passed by transparent reference.
* function.c (assign_parms): Demote promoted argument passed by
transparent reference.

From-SVN: r49774
2002-02-14 19:27:21 +00:00
Jason Merrill
b21155754f function.c (assign_parms): Don't put args of inline functions into registers when not optimizing.
* function.c (assign_parms): Don't put args of inline functions
        into registers when not optimizing.
        * cp/decl2.c (grokclassfn): Don't set DECL_REGISTER on 'this'.

From-SVN: r49131
2002-01-23 07:39:30 -05:00
Aldy Hernandez
58dbcf0581 tm.texi: Remove STARTING_FRAME_PHASE.
* doc/tm.texi: Remove STARTING_FRAME_PHASE.

        * config/rs6000/rs6000.h: Same.

        * function.c (instantiate_virtual_regs): Remove
        STARTING_FRAME_PHASE.
        (assign_stack_local_1): Same.
        Calculate frame phase.

From-SVN: r49063
2002-01-22 02:36:54 +00:00
Aldy Hernandez
1d690052f8 20020118-1.c: New.
2002-01-18  Aldy Hernandez  <aldyh@redhat.com>

        * gcc.dg/20020118-1.c: New.

        * tm.texi (STARTING_FRAME_PHASE): Document.

        * function.c (assign_stack_local_1): Adjust x_frame_offset with
        STARTING_FRAME_PHASE.
        (STARTING_FRAME_PHASE): New.
        (instantiate_virtual_regs): Check saneness of
        STARTING_FRAME_PHASE.

        * rs6000.h (STARTING_FRAME_PHASE): New.

From-SVN: r49006
2002-01-19 03:06:55 +00:00
Kazu Hirata
3ef42a0c4f bitmap.h: Fix comment formatting.
* bitmap.h: Fix comment formatting.
	* combine.c: Likewise.
	* cppfiles.c: Likewise.
	* c-pragma.h: Likewise.
	* c-typeck.c: Likewise.
	* df.c: Likewise.
	* dwarf2out.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* genattrtab.c: Likewise.
	* gthr-win32.h: Likewise.
	* haifa-sched.c: Likewise.
	* predict.c: Likewise.
	* rtlanal.c: Likewise.
	* rtl.h: Likewise.
	* unwind-dw2-fde.h: Likewise.
	* unwind-pe.h: Likewise.
	* vmsdbgout.c: Likewise.

From-SVN: r48987
2002-01-18 13:40:36 +00:00
Kazu Hirata
c4f2c49991 cse.c: Fix formatting.
* cse.c: Fix formatting.
	* dwarf2asm.c: Likewise.
	* dwarf2out.c: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* function.c: Likewise.
	* gcov.c: Likewise.
	* gencheck.c: Likewise.
	* genrecog.c: Likewise.
	* ggc-common.c: Likewise.
	* ggc-page.c: Likewise.
	* global.c: Likewise.

From-SVN: r48570
2002-01-05 22:11:21 +00:00
William Cohen
70f4f91ca9 function.h (struct function): Add profile.
* function.h (struct function): Add profile.
	(current_function_profile): New.
	doc/extend.texi: Update documentation.
	* final.c (final_start_function): Use current_function_profile
	instead of profile_flag.
	(profile_after_prologue): Likewise.
	* function.c (expand_function_start): Likewise.
	(expand_function_start): Likewise.
	* config/alpha/alpha.c (direct_call_operand):
	(alpha_does_function_need_gp): Likewise.
	(alpha_expand_prologue): Likewise.
	* config/arm/arm.c (arm_expand_prologue): Likewise.
	thumb_expand_prologue: Likewise.
	* config/d30v/d30v.c (d30v_stack_info): Likewise.
	* config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Likewise.
	(fr30_expand_prologue): Likewise.
	* config/i386/cygwin.h (SUBTARGET_PROLOGUE): Likewise.
	* config/i386/i386.c (ix86_osf_output_function_prologue): Likewise.
	* config/i386/i386.h (FINALIZE_PIC): Likewise.
	* config/i386/win32.h (SUBTARGET_PROLOGUE): Likewise.
	* config/i960/i960.c (i960_output_function_prologue): Likewise.
	* config/ia64/ia64.c (ia64_compute_frame_size): Likewise.
	* config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Likewise.
	(m32r_expand_prologue): Likewise.
	* config/m88k/m88k.c (m88k_layout_frame): Likewise.
	(m88k_expand_prologue): Likewise.
	* config/m88k/m88k.h (ADJUST_INSN_LENGTH): Likewise.
	* config/mips/mips.c (compute_frame_size): Likewise.
	(mips_expand_prologue): Likewise.
	(mips_can_use_return_insn): Likewise.
	* config/pa/elf.h (ASM_FILE_START): Likewise.
	* config/pa/pa-linux.h (ASM_FILE_START): Likewise.
	* config/pa/pa64-hpux.h (ASM_FILE_START): Likewise.
	* config/pa/som.h (ASM_FILE_START): Likewise.
	* config/romp/romp.c (romp_using_r14): Likewise.
	* config/rs6000/rs6000.c (first_reg_to_save): Likewise.
	(rs6000_stack_info): Likewise.
	* config/rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
	* config/rs6000/xcoff.h (toc_section): Likewise.
	* config/v850/v850.c (compute_register_save_size): Likewise.

From-SVN: r48515
2002-01-03 17:40:07 +00:00
Richard Henderson
df8992f8f3 haifa-sched.c (reemit_other_notes): New.
* haifa-sched.c (reemit_other_notes): New.
        (schedule_block): Use it.
        * sched-ebb.c (schedule_ebbs): Call remove_unnecessary_notes.
        * sched-rgn.c (schedule_insns): Likewise.
        * cfglayout.c (remove_scope_notes): Handle removing note at
        the end of the insn chain.
        * function.c (debug_find_var_in_block_tree): New.

        * gcc.dg/debug-1.c, gcc.dg/debug-2.c: New.

From-SVN: r48333
2001-12-27 14:19:59 -08:00