* pa.h (enum processor_type): New enumeration describing the
processor to schedule for (700, 7100, 7100LC).
(pa_cpu_attr, TARGET_OPTIONS, OVERRIDE_OPTIONS): Define.
(pa_cpu_string, pa_cpu): Provide extern decls.
* pa.c (pa_cpu, pa_cpu_string): Provide definitions.
(override_options): New function.
(pa_adjust_cost): Handle PROCESSOR_7100 and PROCESSOR_7100LC
scheduling. Handle anti-dependendy cases involving fp division
and sqrt. Handle output dependencies correctly. Break TYPE_FPMUL
into TYPE_FPMULSGL and TYPE_FPMULDBL.
* pa.md (cpu attribute): New attribute.
Clean up comments for PROCESSOR_700 scheduling info. Slightly
simplify. Make conditional on PROCESSOR_700.
Add comments and scheduling information for PROCESSOR_7100 and
PROCESSOR_7100LC. Set types for instructions which use the shifter
to "shift". Explicitly set lengths and types for all instructions.
Break type "fpmul" into "fmulsgl" and "fpmuldbl".
From-SVN: r8723
* config/pa/pa.h (DO_GLOBAL_DTORS_BODY): Define. Include a
reference to __gcc_plt_call so __gcc_plt_call always appears in
executables which reference __main.
From-SVN: r8702
* pa.h (readonly_section): During PIC code generation, put
readonly data into the standard data section.
* pa.c (pic_label_operand): Disallow SYMBOL_REFs (constant data).
From-SVN: r8661
* pa.h (DEFAULT_PCC_STRUCT_RETURN): Define as zero.
(RETURN_IN_MEMORY): Only large structs (>8 bytes) and addressable
structs should be returned in memory.
ci -u calls.c
From-SVN: r8573
* 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.
From-SVN: r8422
* 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.
From-SVN: r8419
(REGNO_OK_FOR_FP_P): Use FP_REGNO_P.
(FUNCTION_VALUE_REGNO_P): Revert last change.
(CONDITIONAL_REGISTER_USAGE): Partially revert last changes;
Make non-existing 1.0 fp regs fixed, including odd-numbered regs.
(enum reg_class): Get rid of SNAKE_FP_REGS, GENERAL_OR_SNAKE_FP_REGS,
and NON_SHIFT_REGS.
(REG_CLASS_NAMES): Likewise.
(REG_CLASS_CONTENTS): Likewise.
(REGNO_REG_CLASS): Likewise.
(HARD_REGNO_MODE_OK): Corresponding changes. Don't force 1.0 fpregs
to even regno here; fixed_regs does the job better.
(FP_REG_CLASS_P): Get rid of SNAKE_FP_REGS.
(REG_CLASS_FROM_LETTER, case 'z'): Deleted.
(HARD_REGNO_NREGS): Partially revert last change.
(CLASS_MAX_NREGS): Partially revert last change.
From-SVN: r7438
* pa.h (TARGET_SWITCHES): Enable TARGET_LONG_CALLS when
TARGET_PORTABLE_RUNTIME is enabled.
* pa.c (output_call): If TARGET_LONG_CALLS is enabled, then emit
an inline long-call sequence.
* pa.md (millicode define_delay): Disable delay slots if
TARGET_LONG_CALLS.
(call_internal_reg, call_value_internal_reg): If TARGET_LONG_CALLS
is enabled, then emit an inline long-call sequence. Fix length
computation for TARGET_LONG_CALLS.
(millicode calls): Fix length computation for TARGET_LONG_CALLS.
From-SVN: r7434
* pa.h (ASM_OUTPUT_LABEL): TARGET_GAS no longer needs trailing colons.
(ASM_OUTPUT_INTERNAL_LABEL, ASM_OUTPUT_COMMON): Likewise.
* pa.h (TARGET_PORTABLE_RUNTIME): Define.
(TARGET_SWITCHES): Add -mportable-runtime and -mno-portable-runtime.
(CUMULATIVE_ARGS): Now a "struct hppa_args" rathern than an int.
All references changed.
(INIT_CUMULATIVE_ARGS): Also initialize nargs_prototype.
(INIT_CUMULATIVE_INCOMING_ARGS): Define.
(FUNCTION_ARG_ADVANCE): Decrement nargs_prototype for each arg seen.
(FUNCTION_ARG): Handle TARGET_PORTABLE_RUNTIME.
(ASM_DECLARE_FUNCTION_NAME): Explicitly disallow argument relocations
for TARGET_PORTABLE_RUNTIME.
(ASM_OUTPUT_INT): Do not use a P% prefix for function references
if TARGET_PORTABLE_RUNTIME.
* pa.md (high and lo_sum for function addresses): Provide alternate
definitions for TARGET_PORTABLE_RUNTIME.
* pa.c (output_arg_descriptor): Explicitly disallow argument
relocations for TARGET_PORTABLE_RUNTIME.
From-SVN: r6954
* pa.h (DBX_BLOCKS_FUNCTION_RELATIVE): Define.
(ASM_OUTPUT_SOURCE_LINE): Likewise.
(DBX_FUNCTION_FIRST): Likewise.
* pa.h (FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM): Change to %r3
for compatability with HP compilers.
* pa.h (READONLY_DATA_SECTION): Re-enable use of $LIT$.
From-SVN: r6325
* pa.c (output_function_prologue): Reverse last change. Output
both the function label and the .PROC here.
* pa.h (ASM_DECLARE_FUNCTION_NAME): Do not output the function
label or the .PROC here.
From-SVN: r6246
* pa.c (output_function_prologue): Do not output the .PROC directive
here.
* pa.h (ASM_DECLARE_FUNCTION_NAME): Emit the .PROC immediately
after the function's label.
From-SVN: r6233