dwarf2out.c (CIE_LENGTH_LABEL, [...]): New macros.
Wed Nov 19 12:03:04 1997 Philippe De Muyter <phdm@macqel.be>
* dwarf2out.c (CIE_LENGTH_LABEL, FDE_LENGTH_LABEL): New macros.
(ASM_OUTPUT_DWARF_VALUE4): New macro.
(ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Define if SET_ASM_OP is
defined.
(output_call_frame_info): Do not output forward label differences
if ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL is defined.
* m68k/mot3300.h (SET_ASM_OP): Define when not using gas.
Jim Wilson [Wed, 19 Nov 1997 05:49:11 +0000 (05:49 +0000)]
mips.c (save_restore_insns): If gp_offset or fp_offset are large_int...
* mips/mips.c (save_restore_insns): If gp_offset or fp_offset are
large_int, emit two insns instead of one splitable insn.
* dwarf2out.c (dwarf2out_frame_debug): When set cfa_store_offset
from cfa_temp_value, use cfa_offset. Abort if cfa_reg is not SP.
Jason Merrill [Tue, 18 Nov 1997 06:54:29 +0000 (01:54 -0500)]
call.c (build_new_method_call): Handle getting a TEMPLATE_ID_EXPR around a TEMPLATE_DECL.
* call.c (build_new_method_call): Handle getting a
TEMPLATE_ID_EXPR around a TEMPLATE_DECL. Don't look for a field
if we got template parms.
* typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
not just the args.
* decl2.c (build_expr_from_tree): Tweak last change.
* pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
(maybe_fold_nontype_arg): Split out from tsubst_copy.
* tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
Mon Nov 10 20:08:38 1997 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
* pt.c (tsubst_copy): Handle explicit template arguments in
function calls.
* typeck.c (build_x_function_call): Likewise.
* decl2.c (build_expr_from_tree): Lookup function name if it
hasn't been done.
* pt.c (tsubst): Instantiate template functions properly when
template parameter does not appear in function arguments and return
type.
(comp_template_args): Handle member templates required by tsubst.
Mon Nov 10 20:08:29 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
expr.c (expand_builtin_setjmp): Set current_function_has_nonlocal_label.
* expr.c (expand_builtin_setjmp): Set
current_function_has_nonlocal_label.
* stupid.c (stupid_life_analysis): If has_nonlocal_label, kill
call-saved registers across calls.
* alpha.md (exception_receiver): Remove.
(nonlocal_goto_receiver_osf): New
(nonlocal_goto_receiver_vms): Renamed from nonlocal_goto_receiver.
(nonlocal_goto_receiver): New, select _osf or _vms.
alpha.c (output_prolog [*]): Prefix entry labels with '$' to keep them from being propogated to the object file.
* alpha.c (output_prolog [*]): Prefix entry labels with '$' to
keep them from being propogated to the object file.
(alpha_write_linkage): Likewise.
* alpha.md (call_vms): Likewise.
(call_value_vms): Likewise.
(unnamed osf call insns): Likewise.
* alpha.h (ASM_OUTPUT_INTERNAL_LABEL): Don't omit L from local label.
(ASM_GENERATE_INTERNAL_LABEL): Likewise.
Paul Eggert [Fri, 14 Nov 1997 14:30:01 +0000 (14:30 +0000)]
Fix some confusion with IEEE minus zero.
* real.h (REAL_VALUES_IDENTICAL): New macro.
* expr.c (is_zeros_p): Don't consider -0.0 to be all zeros.
* fold-const.c (operand_equal_p): Don't consider -0.0 to be
identical to 0.0.
* tree.c (simple_cst_equal): Don't consider -0.0 to have the
same tree structure as 0.0.
* varasm.c (immed_real_const_1): Use new REAL_VALUES_IDENTICAL
macro instead of doing it by hand.
alpha.c (call_operand): Any reg is valid for WinNT.
* alpha.c (call_operand): Any reg is valid for WinNT.
* alpha.md (call_nt, call_value_nt): Don't force address into $27.
(anon nt calls): Add 'R' alternative.
* alpha/win-nt.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE,
INITIALIZE_TRAMPOLINE): Handle lack of original $27 and 32-bit ptrs.
Jeffrey A Law [Thu, 13 Nov 1997 23:08:15 +0000 (23:08 +0000)]
flow.c (find_basic_blocks): During marking phase...
* flow.c (find_basic_blocks): During marking phase, if we encounter
an insn with a REG_LABEL note, make the target block live and
create an edge from the insn to the target block. Do not make
edges from all blocks to the target block.
Another crack at the flow control problem.
Michael Meissner [Thu, 13 Nov 1997 18:46:01 +0000 (18:46 +0000)]
rs6000.c (num_insns_constant): Use REAL_VALUE_FROM_CONST_DOUBLE to pick apart floating point values...
* rs6000.c (num_insns_constant): Use REAL_VALUE_FROM_CONST_DOUBLE to
pick apart floating point values, instead of using CONST_DOUBLE_LOW
and CONST_DOUBLE_HIGH.
* rs6000.md (define_splits for DF constants): Use the appropriate
REAL_VALUE_* interface to pick apart DF floating point constants in
a machine independent fashion.
Jeffrey A Law [Wed, 12 Nov 1997 16:35:41 +0000 (16:35 +0000)]
flow.c (find_basic_blocks): Refine further to get a more correct cfg...
* flow.c (find_basic_blocks): Refine further to get a more correct
cfg, especially in the presense of exception handling, computed
gotos, and other non-trivial cases. Call abort if an inaccuracy
is detected in the cfg.
Jason Merrill [Wed, 12 Nov 1997 09:19:26 +0000 (09:19 +0000)]
init.c (build_new): Handle freeing allocated memory when the constructor throws.
* init.c (build_new): Handle freeing allocated memory when the
constructor throws.
* call.c (build_new_method_call): Fix flags arg.
* pt.c (do_type_instantiation): Don't try to instantiate
member templates.
(mark_decl_instantiated): If we support one_only but not
weak symbols, mark this one_only.
* decl2.c (import_export_vtable): Don't defer handling of vtables
if MULTIPLE_SYMBOL_SPACES.
Jason Merrill [Tue, 11 Nov 1997 02:32:50 +0000 (21:32 -0500)]
[multiple changes]
Sun Oct 19 09:07:38 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* stmt.c (using_eh_for_cleanups_p): New variable.
(using_eh_for_cleanups): New function.
(expand_decl_cleanup): Don't call expand_eh_region_start_tree
unless using EH for cleanups.
Sun Oct 26 01:28:29 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
Complete nested exception support.
* except.c (do_pop_exception): Split out...
(push_eh_cleanup): From here. Handle the EH region by hand.
(expand_start_catch_block): Add a new level for the catch parm.
Move the rethrow region outside the two cleanup regions.
Protect the initializer for the catch parm with terminate.
(expand_end_catch_block): Likewise. End the region for the eh_cleanup.
* exception.cc (__cp_pop_exception): Now takes two parms. Handle
popping off the middle of the stack.
* tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR,
WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
(build_cplus_new): Only wrap CALL_EXPRs.
* init.c (expand_default_init): Handle a TRY_CATCH_EXPR around
the constructor call.
Sun Nov 9 18:00:26 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* Make-lang.in (c++.distdir): Make inc subdirectory.
* alpha.c (summarize_insn): Handle ASM_OPERANDS. Don't recurse
for SUBREG, just fall through.
* alpha.c (alpha_handle_trap_shadows): Init sum.defd to zero.
* alpha.md (attr trap): Make TRAP_YES non-zero for sanity's sake.
* combine.c (try_combine): When setting elim_i1, check if newi2pat
sets i1dest.
* combine.c (try_combine): When setting elim_i2, check whether newi2pat
sets i2dest. When calling distribute_notes for i3dest_killed, pass
elim_i2 and elim_i1.
Co-Authored-By: Jim Wilson <wilson@cygnus.com>
From-SVN: r16313
combine.c (try_combine): Don't elim_i1 when it is used in i2src.
* combine.c (try_combine): Don't elim_i1 when it is used in i2src.
* combine.c (try_combine): When setting elim_i2, check whether newi2pat
sets i2dest. When calling distribute_notes for i3dest_killed, pass
elim_i2 and elim_i1.
Co-Authored-By: Jim Wilson <wilson@cygnus.com>
From-SVN: r16295
Jeffrey A Law [Sun, 2 Nov 1997 02:15:01 +0000 (02:15 +0000)]
flow.c (find_basic_blocks): If we delete the label for an exception handler...
* flow.c (find_basic_blocks): If we delete the label for an
exception handler, remove it from the EH label list and remove
the EH_BEGIN/EH_END notes for that EH region.
Brendan Kehoe [Sat, 1 Nov 1997 19:50:18 +0000 (19:50 +0000)]
lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
* lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
(file_name_nondirectory): New function, doing the same as the macro.
(set_typedecl_interface_info): Use it instead of the macro.
(check_newline): Likewise.
(handle_cp_pragma): Likewise.
* repo.c (get_base_filename): Cast result of rindex to char*.
(open_repo_file): Likewise.
* xref.c (open_xref_file): Likewise.
* error.c (dump_char): Make its arg int, not char.
bring over the changes that went in yesterday to fix irix6 native cc
build problems
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.