Michael Meissner [Thu, 27 Nov 1997 00:06:53 +0000 (00:06 +0000)]
rs6000.c (SMALL_DATA_REG): Register to use for small data relocs.
* rs6000.c (SMALL_DATA_REG): Register to use for small data relocs.
(print_operand): Use SMALL_DATA_REG for the register involved in
small data relocations.
(print_operand_address): Ditto.
* rs6000/linux.h (LINK_SPEC): Pass -dynamic-linker /lib/ld.so.1 if
-dynamic linker is not used.
* rs6000.md (call insns): For local calls, use @local suffix under
System V. Don't use @plt under Solaris.
* configure.in (target frags): Add alpha*-linux-gnulibc1.
(pic frags): Its alpha*- not alpha-.
(stdio-lock): Kill everything. Add alpha*-linux-gnulibc1.
* libio.h: Check __GLIBC_MINOR__ to find stdio-lock.h. If not
_IO_MTSAFE_IO & GLIBC, make sure the lock pointer is still there.
* libioP.h: Check __GLIBC_MINOR__ to find libc-lock.h.
* config/linuxaxp1-libc-lock.h: New file.
* config/linuxaxp1-stdio-lock.h: New file.
* config/linuxaxp1.mt: New file.
* gen-params (va_list): Check for and use __gnuc_va_list.
(NULL): Work around some linux kernel headers and redefine NULL.
Cater to RH powerpc & alpha Linux systems with pre-release versions
of glibc2.
Michael Meissner [Wed, 26 Nov 1997 21:26:23 +0000 (21:26 +0000)]
(patches originally from Geoffrey Keating)
(patches originally from Geoffrey Keating)
* rs6000.c (function_arg): Excess floating point arguments don't
go into GPR registers after exhausting FP registers under the
System V.4 ABI.
(function_arg_partial_nregs): Ditto.
* rs6000.md (call insns): If -fPIC or -mrelocatable, add @plt
suffix to calls.
J"orn Rennecke [Tue, 25 Nov 1997 21:09:44 +0000 (21:09 +0000)]
va-sh.h (__va_arg_sh1): Define.
* va-sh.h (__va_arg_sh1): Define.
(va_arg): Use it.
SH3E doesn't use any integer registers for subsequent arguments
once a non-float value was passed in the stack.
* sh.h (PASS_IN_REG_P): Fix SH3E case.
Jason Merrill [Fri, 21 Nov 1997 20:23:42 +0000 (20:23 +0000)]
except.c (expand_start_catch_block): We only need the rethrow region for non-sjlj exceptions.
* except.c (expand_start_catch_block): We only need the rethrow
region for non-sjlj exceptions.
(expand_end_catch_block): Likewise. Use outer_context_label_stack.
Jason Merrill [Fri, 21 Nov 1997 20:21:39 +0000 (20:21 +0000)]
except.h: Add outer_context_label_stack.
* except.h: Add outer_context_label_stack.
* except.c: Likewise.
(expand_start_all_catch): Push the outer_context for the try block
onto outer_context_label_stack.
(expand_end_all_catch): Use it and pop it.
Jason Merrill [Thu, 20 Nov 1997 23:21:26 +0000 (23:21 +0000)]
Makefile.in (LIB2FUNCS): Remove C++ memory management support.
./: * Makefile.in (LIB2FUNCS): Remove C++ memory management support.
* libgcc2.c: Remove __builtin_new, __builtin_vec_new, set_new_handler,
__builtin_delete, and __builtin_vec_delete.
* except.c (output_exception_table): Don't bother with
__EXCEPTION_END__.
cp/:
* Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
(various.o): Likewise.
* inc/new: Add placement deletes. Add throw specs for default new.
* new.cc (set_new_handler): Move here from libgcc2.
* new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
(new): Move from libgcc2. Throw bad_alloc.
* new2.cc: Move the rest of the op news and op deletes from libgcc2.
* decl.c (init_decl_processing): Update exception specs on new and
delete.
Jason Merrill [Thu, 20 Nov 1997 21:38:39 +0000 (21:38 +0000)]
dwarf2out.c (ASM_OUTPUT_DWARF_OFFSET4): Rename from VALUE4.
* dwarf2out.c (ASM_OUTPUT_DWARF_OFFSET4): Rename from VALUE4.
Use assemble_name.
(ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Use assemble_name.
(output_call_frame_info): Emit a \n after using it.
Jason Merrill [Thu, 20 Nov 1997 03:55:02 +0000 (03:55 +0000)]
decl.c (make_implicit_typename): Handle case where t is not actually from context.
* decl.c (make_implicit_typename): Handle case where t is not
actually from context.
* tree.c (get_type_decl): Lose identifier case.
* spew.c (yylex): Lose useless call to identifer_typedecl_value.
* parse.y (nonnested_type): Just use lookup_name.
(complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
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.