Doug Evans [Thu, 30 Oct 1997 22:52:41 +0000 (22:52 +0000)]
configure.in (sparc-*-elf*): Use sparc/elf.h, sparc/t-elf.
* configure.in (sparc-*-elf*): Use sparc/elf.h, sparc/t-elf.
Set extra_parts.
(sparc*-*-*): Recognize --with-cpu=v9.
* sparc/elf.h: New file.
* sparc/t-elf: New file.
Jeffrey A Law [Thu, 30 Oct 1997 20:34:59 +0000 (20:34 +0000)]
mn10300.c (const_8bit_operand): New function.
* mn10300.c (const_8bit_operand): New function.
(mask_ok_for_mem_btst): New funtion.
* mn10300.md (btst patterns with mem operands): Use new functions
to avoid creating btst instructions with invalid operands.
alpha.md (reload_inqi): Check for MEM before strict_memory_address_p...
* alpha.md (reload_inqi): Check for MEM before strict_memory_address_p,
since any_memory_operand() allows pseudos during reload.
(reload_inhi, reload_outqi, reload_outhi): Likewise.
Toon Moene [Tue, 28 Oct 1997 19:02:23 +0000 (20:02 +0100)]
fold-const.c (fold): For ((a * C1) / C3) or (((a * C1) + C2) / C3) optimizations...
* fold-const.c (fold): For ((a * C1) / C3) or (((a * C1) + C2) / C3)
optimizations, look inside dividend to determine if the expression
can be simplified by using EXACT_DIV_EXPR.
alpha.md (movqi, movhi): Make sure new insns created during reload won't need reloading themselves.
* alpha.md (movqi, movhi): Make sure new insns created during reload
won't need reloading themselves.
(reload_inqi, reload_inhi, reload_outqi, reload_outhi): Likewise.
Jason Merrill [Sun, 26 Oct 1997 19:54:42 +0000 (19:54 +0000)]
dwarf2out.c (output_call_frame_info): The CIE pointer is now a 32 bit PC-relative offset.
* dwarf2out.c (output_call_frame_info): The CIE pointer is now a 32
bit PC-relative offset. The exception range table pointer is now in
the CIE.
* frame.c (dwarf_cie, dwarf_fde): Rename CIE_pointer to CIE_delta.
(count_fdes, add_fdes, get_cie): Adjust.
(cie_info, extract_cie_info, __frame_state_for): Adjust eh_ptr uses.
From H.J. Lu:
* frame.c (count_fdes, add_fdes): Skip linked once FDE entries.
Makefile.in (bootstrap-lean): Combined with `normal' bootstrap targets using "$@" to provide support for...
* Makefile.in (bootstrap-lean): Combined with `normal' bootstrap
targets using "$@" to provide support for similar but not identical
targets without having to duplicate code.
(bootstrap4): New goal.
Makefile.in (bootstrap-lean): Combined with `normal' bootstrap targets using "$@" to provide support for...
* Makefile.in (bootstrap-lean): Combined with `normal' bootstrap
targets using "$@" to provide support for similar but not identical
targets without having to duplicate code.
Makefile.in (compare, [...]): Combined to one ruleset determining actions to be performed via $@.
* Makefile.in (compare, compare-lean, compare3): Combined to one
ruleset determining actions to be performed via $@.
(compare4, compare4-lean): New targets.
(gnucompare, gnucompare3): Combined to one ruleset determining
actions to be performed via $@. Also, note which files failed
the comparison test in .bad_compare.
(gnucompare-lean, gnucompare3-lean, gnucompare4-lean): New targets.
Jeffrey A Law [Sun, 26 Oct 1997 16:56:15 +0000 (16:56 +0000)]
toplev.c (flag_rerun_loop_opt): New variable.
* toplev.c (flag_rerun_loop_opt): New variable.
(f_options): Handle -frerun-loop-opt.
(rest_of_compilation): If -frerun-loop-opt, then run the loop
optimizer twice.
(main): Enable -frerun-loop-opt by default for -O2 or greater.
* alpha.md (call patterns): Revert Oct 16 change; if we are to elide
the callee's ldgp, we must do it ourselves, and we use the jsr tag
for more than scheduling.
Jeffrey A Law [Thu, 23 Oct 1997 01:29:14 +0000 (01:29 +0000)]
toplev.c (flag_exceptions): Default value is 2.
* toplev.c (flag_exceptions): Default value is 2.
(compile_file): If flag_exceptions still has the value 2, then
set it to 0.
* lex.c (lang_init): Enable flag_exceptions by default if no
command line switch was specified.
Gross hacks to allow front-ends to override -fexceptions.
Brendan Kehoe [Thu, 23 Oct 1997 00:00:20 +0000 (00:00 +0000)]
method.c (build_template_parm_names, [...]): Add static to definitions.
* method.c (build_template_parm_names, build_decl_overload_real):
Add static to definitions.
* pt.c (add_to_template_args, note_template_header,
processing_explicit_specialization, type_unification_real): Likewise.
({determine,check}_explicit_specialization): Use a single string for
error messages.
com.c (ffecom_expr_): Take an new arg TREE_TYPE that if non-null specifies the type in which to do...
* com.c (ffecom_expr_): Take an new arg TREE_TYPE that if non-null
specifies the type in which to do the calculation. Change all callers.
[FFEBLD_opARRAYREF]: Force the index expr to use sizetype.
Jeff Law [Tue, 21 Oct 1997 19:55:51 +0000 (13:55 -0600)]
mn10200.h (GO_IF_LEGITIMATE_ADDRESS): Do not allow indexed addresses.
* mn10200.h (GO_IF_LEGITIMATE_ADDRESS): Do not allow indexed
addresses.
* mn10200.md (neghi2): Provide an alternative which works if
the input and output register are the same.
Jeff Law [Tue, 21 Oct 1997 19:52:12 +0000 (13:52 -0600)]
mn10200.h (GO_IF_LEGITIMATE_ADDRESS): Do not allow indexed addresses.
* mn10200.h (GO_IF_LEGITIMATE_ADDRESS): Do not allow indexed
addresses.
* mn10200.md (neghi2): Provide an alternative which works if
the input and output register are the same.
Jim Wilson [Mon, 20 Oct 1997 23:49:48 +0000 (23:49 +0000)]
Patches to fix minor optimizer bugs
Patches to fix minor optimizer bugs
* expmed.c (extract_bit_field): Don't make flag_force_mem disable
extzv for memory operands.
* cse.c (simplify_ternary_operation, case IF_THEN_ELSE): Collapse
redundant conditional moves to single operand.
Mon Oct 20 11:44:20 1997 Mark Mitchell <mmitchell@usa.net>
* decl.c (duplicate_decls): Handle template specializations
correctly.
* error.c (dump_function_name): Fix printing of specializations of
member functions that are not member templates.
* cp-tree.h (processing_specialization): Make global.
* pt.c (processing_specialization): Likewise.
* lex.c (cons_up_default_function): Save and restore
processing_specialization to avoid confusion.
Jason Merrill [Sat, 18 Oct 1997 21:10:32 +0000 (21:10 +0000)]
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.
* 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.
Jim Wilson [Sat, 18 Oct 1997 05:46:19 +0000 (05:46 +0000)]
v850.c (ep_memory_offset): New function.
* v850.c (ep_memory_offset): New function.
(ep_memory_operand, substitute_ep_register, v850_reorg): Call it.
* v850.h (CONST_OK_FOR_*): Add and correct comments.
(CONSTANT_ADDRESS_P): Add comment.
(EXTRA_CONSTRAINT): Define 'U'.
* v850.md: Add comments on bit field instructions.
(addsi3): Delete &r/r/r alternative. Add r/r/U alternative.
(lshrsi3): Use N not J constraint.
* v850.md (v850_tst1+1): New define_split for tst1 instruction.
* v850.c (reg_or_0_operand): Call register_operand.
(reg_or_int5_operand): Likewise.
* v850.h (MASK_BIG_SWITCH, TARGET_BIG_SWITCH): New macros.
(TARGET_SWITCHES): Add "big-switch".
(ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT, CASE_VECTOR_MODE,
ASM_OUTPUT_BEFORE_BASE_LABEL): Add support for TARGET_BIG_SWITCH.
(CASE_DROPS_THROUGH): Comment out.
(CASE_VECTOR_PC_RELATIVE, JUMP_TABLES_IN_TEXT_SECTION): Define.
* v850.md (cmpsi): Delete compare mode.
(casesi): New pattern.
* v850.h (CONST_OK_FOR_N): Delete redundant compare against zero.
* v850.md (ashlsi3): Use SImode not QImode for shift count.
(lshrsi3): Likewise.
* v850.c (print_operand): Add 'c', 'C', and 'z' support. Delete
unreachable switch statement after 'b' support. Remove "b" from
strings for 'b' support.
* v850.md (branch_normal, branch_invert): Change %b to b%b.
Doug Evans [Fri, 17 Oct 1997 23:20:03 +0000 (23:20 +0000)]
sparc.c (output_fp_move_quad): If TARGET_V9 and not TARGET_HARD_QUAD...
* sparc.c (output_fp_move_quad): If TARGET_V9 and not TARGET_HARD_QUAD, use
fmovd so it works if a quad float ends up in one of the upper 32
float regs.