Mike Stump [Wed, 2 Apr 1997 03:31:36 +0000 (03:31 +0000)]
libgcc2.c (find_exception_table): Fix to logic to deal with functions that are in their own section...
* libgcc2.c (find_exception_table): Fix to logic to deal with
functions that are in their own section, such as template
instantiations, that cause overlapping EH tables.
Jeff Law [Wed, 2 Apr 1997 01:33:45 +0000 (18:33 -0700)]
stdarg.h: Include va-mn10300.h.
* ginclude/stdarg.h: Include va-mn10300.h.
* ginclude/varargs.h: Likewise.
* ginclude/va-mn10300.h: New file.
* mn10300/mn10300.c (expand_prologue): If current_function_varargs is
nonzero, then flush d0/d1 back into the stack.
(mn10300_builtin_saveregs): New function.
(function_arg, function_arg_partial_nregs): New functions.
(initial_offset): Tweak now that the RP save area is allocated
and deallocated around each call again.
* mn10300/mn10300.h (FIRST_PARM_OFFSET): Now 4.
(FRAME_POINTER_REQUIRED): Require a frame pointer for all non-leaf
functions.
(REG_PARM_STACK_SPACE): Now 8 bytes.
(FUNCTION_ARG_REGNO_P): Update for new parameter passing conventions.
(CUMULATIVE_ARGS, INIT_CUMULATIVE_ARGS): Likewise.
(FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Likewise.
(FUNCTION_ARG_PARTIAL_NREGS): Likewise.
(TRAMPOLINE_TEMPLATE): Don't clobber d0 anymore.
(TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Corresponding changes.
(EXPAND_BUILTIN_SAVEREGS): Define.
* mn10300/mn10300.md (call, call_value patterns): Allocate and
deallocate a stack slot for the return pointer around each call.
* mn10300/mn10300.h (RTX_COSTS): Refine.
(CASE_VALUES_THRESHHOLD, NO_FUNCTION_CSE): Likewise.
* mn10300/mn10300.c (output_tst): New function.
* mn10300/mn10300.md (movdi, movdf): Improve code to load constants
into registers.
(tst insns): Use output_tst to optimize some cases. Add versions to
encourage more zero extensions instead of sign extensions of HImode
and QImode values.
(divsi3, udivsi3): Remove patterns. Replaced by...
(divmodsi4, udivmodsi4): New expanders/patterns.
(andsi3): Optimize "and" operations with certain constants.
Doug Evans [Fri, 28 Mar 1997 22:37:37 +0000 (22:37 +0000)]
jump.c (jump_optimize, [...]): Disable some optimizations when flag_test_coverage and there is a line number...
* jump.c (jump_optimize, follow_jumps, mark_jump_label): Disable some
optimizations when flag_test_coverage and there is a line number note
in the way.
(invert_jump): Add REG_BR_PROB when flag_branch_probabililties.
Doug Evans [Fri, 28 Mar 1997 22:35:56 +0000 (22:35 +0000)]
final.c (LONG_TYPE_SIZE): Define.
* final.c (LONG_TYPE_SIZE): Define.
(count_instrumented_arcs): New variable.
(end_final, profile_after_prologue, leaf_function_p): Add support
for profile_arc_flag.
(add_bb): Only call CC_STATUS_INIT if HAVE_cc0.
Richard Kenner [Tue, 25 Mar 1997 19:27:59 +0000 (14:27 -0500)]
(find_dummy_reload): New parameter earlyclobber.
(find_dummy_reload): New parameter earlyclobber. If set then don't
use IN for the reload if it also appears elsewhere in the insn. All
callers changed.
Jeff Law [Thu, 20 Mar 1997 19:25:46 +0000 (12:25 -0700)]
mn10300.md (cmpsi): Handle comparing a register with itself by adding zero to the reg.
* mn10300/mn10300.md (cmpsi): Handle comparing a register with
itself by adding zero to the reg. Z bit for such an insn is
inverted.
* mn10300/mn10300.c (notice_update_cc): Handle CC_INVERT.
Richard Kenner [Wed, 19 Mar 1997 21:59:23 +0000 (16:59 -0500)]
(unsafe_chars): `p' is unsafe before `-' or `+', since it might generate a C9X-style hexadecimal floating-point number.
(unsafe_chars): `p' is unsafe before `-' or `+', since it
might generate a C9X-style hexadecimal floating-point number.
(cpp_handle_options): Set c89 option to 1 if -lang-c89.
Jim Wilson [Tue, 18 Mar 1997 22:55:01 +0000 (14:55 -0800)]
(shorten_branches): Split all insns before computing insn lengths.
(shorten_branches): Split all insns before computing insn
lengths.
(final_scan_insn, case default): If HAVE_ATTR_length defined, call
abort for any insn that has a '#' output template.
Jeff Law [Tue, 18 Mar 1997 18:38:59 +0000 (11:38 -0700)]
m68k.c (m68k_last_compare_had_fp_operands): New variable.
* m68k/m68k.c (m68k_last_compare_had_fp_operands): New variable.
* m68k/m68k.h (m68k_last_compare_had_fp_operands): Declare it.
* m68k/m68k.md (tst*, cmp*): Turn all of these into
define_expand/define_insn pairs. Keep track of whether or not
the test/compare has fp operands.
(seq, sne, sgt, slt, sge, sle): Turn these into
define_expand/define_insn pairs. Make the expanders FAIL if
TARGET_68060 and the last comparison/test had fp operands.
Richard Kenner [Mon, 17 Mar 1997 22:00:10 +0000 (17:00 -0500)]
(__objc_block_return): Remove function.
(__objc_word_return, __objc_double_return): Remove functions.
(__objc_get_forward_imp): New function.
(__objc_init_dispatch_tables): Install zero instead of
__objc_init_install_dtable.
(__objc_init_install_dtable): No longer call the method but
allow objc_msg_lookup return it for normal execution.
(obj_msg_lookup): Differentiate between when a method isn't
implemented and when the dispatch table needs to be installed.
Return the IMP when the dispatch table is installed versus
having __objc_init_install_dtable call it.
(get_imp): Install dispatch table if needed and return IMP
from the newly installed dispatch table.
(__objc_responds_to): Install dispatch table if needed before
checking if method is implemented.
Richard Kenner [Mon, 17 Mar 1997 18:46:42 +0000 (13:46 -0500)]
(expr_no_commas): Do not store temporary skip_evaluation increments on yacc value stack...
(expr_no_commas): Do not store temporary skip_evaluation increments on
yacc value stack; the code was buggy and occasionally wrote past the
end of the stack.