Jeffrey A Law [Fri, 31 Oct 1997 16:30:48 +0000 (16:30 +0000)]
dwarf2out.c (output_call_frame_info): Use ASM_OUTPUT_ASCII to output ASCII by default.
* dwarf2out.c (output_call_frame_info): Use ASM_OUTPUT_ASCII to
output ASCII by default. Only use ASM_OUTPUT_DWARF_STRING if
flag_debug_asm is on.
(output_die, output_pubnames, output_line_info): Likewise.
Jeffrey A Law [Fri, 31 Oct 1997 15:35:31 +0000 (15:35 +0000)]
alias.c (init_alias_analysis): Add struct_value_incoming_rtx and static_chain_rtx into the potential base...
* alias.c (init_alias_analysis): Add struct_value_incoming_rtx
and static_chain_rtx into the potential base values array if
they are registers.
Fixes bugs exposed by improved alias propagation code.
* alias.c (new_reg_base_value): New array of potential base values.
(unique_id): Now file scoped static.
(find_base_value, case REG): Return the value in reg_base_value
array for the REG if it exists. Else, return the value from
new_reg_base_value if copying args and REG is a hard register.
(find_base_value, case PLUS): If either operand of the PLUS is
a REG, try to get its base value. Handle base + index and
index + base.
(record_set): Use new_reg_base_value instead of reg_base_value.
(init_alias_analysis): Allocate space for new_reg_base_value too.
Rework code to iterate over the insns propagating base value
information until nothing changes.
Improve alias propagation significantly.
Fri Oct 31 01:47:57 1997 Jason Merrill <jason@yorick.cygnus.com>
Support for nested exceptions.
* tinfo2.cc (__is_pointer): New fn.
* exception.cc (struct cp_eh_info): Define.
(__cp_exception_info, __uncatch_exception): New fns.
(__cp_push_exception, __cp_pop_exception): New fns.
* except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
Lose empty_fndecl.
(init_exception_processing): Likewise. __eh_pc is now external.
(push_eh_info): New fn.
(get_eh_{info,value,type,caught}): New fns.
(push_eh_cleanup): Just call __cp_pop_exception.
(expand_start_catch_block): Use push_eh_info. Start the eh region
sooner.
(expand_end_eh_spec): Use push_eh_info.
(expand_throw): Call __cp_push_exception to set up the exception info.
Just pass the destructor or 0 as the cleanup. Call __uncatch_exception
when we rethrow.
(expand_builtin_throw): Don't refer to empty_fndecl.
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.