Richard Kenner [Fri, 18 Nov 1994 23:23:49 +0000 (18:23 -0500)]
(record_reg_classes): When handling case of single SET between a hard register alone in a class and a pseudo...
(record_reg_classes): When handling case of single SET
between a hard register alone in a class and a pseudo, make sure the
register is the only member of the class.
(GCC_INSTALL_NAME, GCC_CROSS_NAME): Define.
(install-common): Use them.
(install-man): Likewise.
(distclean): Delete *.asm.
(stage*, risky-stage*): If as/ld/real-ld exist, copy them to stage dir.
Richard Kenner [Wed, 16 Nov 1994 12:55:26 +0000 (07:55 -0500)]
(fold): If moved conversion into COND_EXPR, leave it there if it is an integral conversion to word or narrower.
(fold): If moved conversion into COND_EXPR, leave it there if it is an
integral conversion to word or narrower.
(fold, case NOP_EXPR): Ignore conversion to same type as operand.
(fold, case COND_EXPR): Make third operand the simplest.
Richard Kenner [Wed, 16 Nov 1994 12:47:58 +0000 (07:47 -0500)]
(convert_move): Don't put FROM in a register if it is a SUBREG.
(store_expr): If don't want a value and storing into promoted
variable, do conversion at tree level; don't copy volatile MEM unless
want value, as comment says.
Jason Merrill [Wed, 16 Nov 1994 00:45:41 +0000 (00:45 +0000)]
(FUNCTION_VALUE): Use POINTER_TYPE_P rather than checking the type against POINTER_TYPE (to include references).
(FUNCTION_VALUE): Use
POINTER_TYPE_P rather than checking the type against POINTER_TYPE
(to include references).
Don't define __PTR_TO_INT and
__INT_TO_PTR.
Richard Kenner [Wed, 16 Nov 1994 00:17:27 +0000 (19:17 -0500)]
(specs, float.h-cross, xlimits.h): Use temporary instead of redirecting output directly to make target.
(specs, float.h-cross, xlimits.h): Use temporary instead of redirecting
output directly to make target.
($(MD_FILE), xsys-protos.h): Likewise.
(mostlyclean): Remove any of these temporaries.
Richard Kenner [Tue, 15 Nov 1994 23:57:29 +0000 (18:57 -0500)]
(redundant_insn_p): Change return type to rtx.
(redundant_insn_p): Change return type to rtx. Return the redundant insn
instead of true.
(update_reg_unused_notes): New function.
(fill_slots_from_thread): Call update_reg_unused_notes after one of the
redundant_insn_p calls.
Doug Evans [Tue, 15 Nov 1994 15:38:07 +0000 (15:38 +0000)]
(flow_delete_insn): New function.
(find_basic_blocks): Call it to physically delete insns in
unreachable blocks. When scanning blocks after dead ones,
start scanning after the dead one (not at the dead one).
If there are lots of unreachable blocks, make another pass to squeeze
them out (this reduces memory usage in some pathalogical cases by a
significant amount without resorting to sparse matrices).
(propagate_block): Make code a bit more efficient (for example,
no need to test `loop_depth' for each insn, just notes).
Jeff Law [Tue, 15 Nov 1994 04:56:03 +0000 (21:56 -0700)]
x-pa (TAROUTOPTS): Delete.
* config/pa/x-pa (TAROUTOPTS): Delete. It was an HPUX host
conditional, and x-pa is a BSD host target fragment.
(INSTALL_HEADERS): Define.
(STMP_FIXPROTO): Define.
Jeff Law [Tue, 15 Nov 1994 04:52:54 +0000 (21:52 -0700)]
pa-hiux.h: Include "pa/pa-hpux.h" and just override the CPP predefines.
* config/pa/pa-hiux.h: Include "pa/pa-hpux.h" and just override
the CPP predefines.
(CPP_PREDEFINES): Add -A assertions.
* config/pa/{pa1-hiux.h, pa-ghiux.h, pa1-ghiux.h}: Likewise.
Richard Kenner [Tue, 15 Nov 1994 00:14:54 +0000 (19:14 -0500)]
Fixes for NextStep 3.2.
Fixes for NextStep 3.2. Remove ``__const__'' from sin and cos
prototypes in ansi/math.h. Remove keyword ``template'' from
bfd/libc.h. Remove ``volatile'' from abort in bsd/libc.h and abort
and exit in ansi/stdlib.h.
* pa.md (pic2_lo_sum): New pattern matching when -fPIC using UNSPEC.
* pa.c (legitimize_pic_address): Generate an insn matching
pic2_lo_sum when -fPIC.
* pa.md (pic_highpart): Add missing mode for PLUS.
(add_high_const): Likewise.
* pa.md (matcher for plain lo_sum): Call abort if this happens
when generating pic or PIC.
Jeff Law [Fri, 11 Nov 1994 04:53:33 +0000 (21:53 -0700)]
* Automatic generation of inline long call sequences when needed.
* pa.h (TARGET_LONG_CALLS): Delete. Replace all uses of with
TARGET_PORTABLE_RUNTIME.
(TARGET_MILLICODE_LONG_CALLS): New target flag.
* pa.c (output_function_prologue): Keep track of the total number
of code bytes emitted for each source file.
(output_call): Handle TARGET_PORTABLE_RUNTIME and millicode calls
for TARGET_MILLICODE_LONG_CALLS. Emit an inline long-call if
needed. If emitting an inline long-call, perform argument relocations
before the call if they are needed, unfill the delay slot of the
call if necessary.
* pa.md (define_delay for millicode): Disable the delay slot if
TARGET_MILLICODE_LONG_CALLS.
(millicode insns and indirect calls): Properly compute length for
both TARGET_PORTABLE_RUNTIME and TARGET_MILLICODE_LONG_CALLS.
(call_internal_symref): Properly compute the length when more
than 240000 bytes of code have already been output. Take
TARGET_MILLICODE_LONG_CALLS into account in the length
computation.
Jeff Law [Fri, 11 Nov 1994 04:33:43 +0000 (21:33 -0700)]
* PA PIC support.
* pa.c (secondary_reload_class): Refine. Readonly data needs a
secondary reload only during PIC generation. Loading a floating
point register with a constant requires a register from R1_REGS
during -fPIC code generation.
(read_only_operand): Constant pool entries are no longer read only
during PIC code generation.
(hppa_legitimize_address): If flag_pic is nonzero, then
immediately call legitimize_pic_address.
(emit_move_sequence): Call legitimize_pic_address to handle
constant data. Handle secondary reloads for PIC. Use
pic_label_operand rather than open coding the test. Handle
loading a LABEL_REF when generating PIC.
(legitimzie_pic_address): Handle constant data addressing for PIC
here. Fix loading of symbolic addresses for -fPIC generation.
(pic_label_operand): Renamed from pic_operand. Handle any read
only operand (such as constant data). Reject function addresses,
Accept SYMBOL_REF with the read-only bit set. Generalize to
handle (const (plus (reg) (int))).
(finalize_pic): Delete unused function.
(check_pic): Delete function.
(pic_pc_rtx): Delete variable definition.
(current_function_uses_pic_offset_table): Delete extern decl.
(force_reg, validize_mem): Likewise.
(output_global_address): Don't tack on "-$global$" when generating
PIC code.
(finalize_pic): Don't emit code for initialization of
hppa_save_pic_table_rtx here. Don't claim we USE
pic_offset_table_rtx at function end.
* pa.h (SELECT_RTX_SECTION): Define. During PIC generation
everything (in the constant pool) goes into the data space.
(PRINT_OPERAND_ADDRESS): Handle CONST_INTs during PIC
generation. Handle LO_SUM address during -fPIC generation.
(LEGITIMATE_CONSTANT_P): Reject function labels when generating
PIC code.
(GO_IF_LEGITIMATE_ADDRESS): Only accept pic_reg + SYMBOL_REF for
-fpic.
(EXTRA_SECTION_FUNCTIONS): For -fpic, use the TEXT section for
constants to avoid GAS lossage.
(OVERRIDE_OPTIONS): Delete.
(PIC_OFFSET_TABLE_REG_CALL_CLOBBERED): Define.
(FINALIZE_PIC): Delete definition.
(INIT_EXPANDERS): Define. Clear hppa_save_pic_table_rtx here.
* pa.md: Use !flag_pic rather than calling check_pic.
(HImode high and lo_sum): Only accept const_int_operands.
(pic_load_label): Force output to be in %r1.
(pic_highpart): New pattern. Output must go into %r1. More
linker trickery.
(symbolic high and lo_sum): Disallow during PIC generation if
source is a symbolic operand. Handle CONST_INT LO_SUM during PIC
generation. Simplify.
(define_split for symbolic_operand load): Do not accept a symbolic
operand that is a pic_label_operand.
(pic_load_label): Name this pattern. Mask least significant bits
and optimize when a simple label is within reach of an ldo.
(call, call_value): Emit new-style USE information for
pic_offset_table_rtx. Emit code for initialization of
hppa_save_pic_table_rtx and wrap it into push_topmost_sequence()
and pop_topmost_sequence() calls.