diff options
author | Richard Henderson <rth@redhat.com> | 2001-07-15 00:17:29 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-07-15 00:17:29 -0700 |
commit | be7b80f42726389bd25888ede4f13d276bb12ef0 (patch) | |
tree | dff3d108662cdda2dbc8d2f9a916e7dcebd3c4c9 | |
parent | 4a82c9509df641811f41ab3e6684fa06c7c01825 (diff) | |
download | gcc-be7b80f42726389bd25888ede4f13d276bb12ef0.zip gcc-be7b80f42726389bd25888ede4f13d276bb12ef0.tar.gz gcc-be7b80f42726389bd25888ede4f13d276bb12ef0.tar.bz2 |
alpha.h (TARGET_ABI_OSF): New.
* config/alpha/alpha.h (TARGET_ABI_OSF): New.
(TARGET_ABI_WINDOWS_NT, TARGET_ABI_OPEN_VMS): Rename; update users.
* config/alpha/alpha-protos.h: Update TARGET_ABI_* users.
* config/alpha/alpha.c: Likewise.
* config/alpha/alpha.md: Likewise.
* config/alpha/alpha32.h: Likewise.
* config/alpha/vms.h: Likewise.
(OPEN_VMS): Remove.
From-SVN: r44016
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/config/alpha/alpha-protos.h | 4 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 117 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.h | 13 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.md | 162 | ||||
-rw-r--r-- | gcc/config/alpha/alpha32.h | 4 | ||||
-rw-r--r-- | gcc/config/alpha/vms.h | 6 |
7 files changed, 166 insertions, 151 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0e3a357..b7e9e88 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2001-07-15 Richard Henderson <rth@redhat.com> + + * config/alpha/alpha.h (TARGET_ABI_OSF): New. + (TARGET_ABI_WINDOWS_NT, TARGET_ABI_OPEN_VMS): Rename; update users. + * config/alpha/alpha-protos.h: Update TARGET_ABI_* users. + * config/alpha/alpha.c: Likewise. + * config/alpha/alpha.md: Likewise. + * config/alpha/alpha32.h: Likewise. + * config/alpha/vms.h: Likewise. + (OPEN_VMS): Remove. + 2001-07-14 Richard Henderson <rth@redhat.com> * config/alpha/alpha.md: Use define_constants for unspec values. diff --git a/gcc/config/alpha/alpha-protos.h b/gcc/config/alpha/alpha-protos.h index a625ece..c6c4b7b 100644 --- a/gcc/config/alpha/alpha-protos.h +++ b/gcc/config/alpha/alpha-protos.h @@ -111,7 +111,7 @@ extern int check_float_value PARAMS ((enum machine_mode, REAL_VALUE_TYPE *, int)); #endif -#if OPEN_VMS +#if TARGET_ABI_OPEN_VMS #ifdef HAVE_MACHINE_MODES extern enum avms_arg_type alpha_arg_type PARAMS ((enum machine_mode)); #endif @@ -121,7 +121,7 @@ extern rtx alpha_arg_info_reg_val PARAMS ((CUMULATIVE_ARGS)); #ifdef BUFSIZ extern void alpha_write_linkage PARAMS ((FILE *)); #endif -#endif /* OPEN_VMS */ +#endif /* TARGET_ABI_OPEN_VMS */ #ifdef RTX_CODE extern rtx alpha_need_linkage PARAMS ((const char *, int)); diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 1f62d0d..5daa1b9 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -133,7 +133,7 @@ static void alpha_output_function_end_prologue PARAMS ((FILE *)); /* Get the number of args of a function in one of two ways. */ -#ifdef OPEN_VMS +#if TARGET_ABI_OPEN_VMS #define NUM_ARGS current_function_args_info.num_args #else #define NUM_ARGS current_function_args_info @@ -143,7 +143,7 @@ static void alpha_output_function_end_prologue #define REG_RA 26 /* Initialize the GCC target structure. */ -#ifdef OPEN_VMS +#if TARGET_ABI_OPEN_VMS static int vms_valid_decl_attribute_p PARAMS ((tree, tree, tree, tree)); # undef TARGET_VALID_DECL_ATTRIBUTE # define TARGET_VALID_DECL_ATTRIBUTE vms_valid_decl_attribute_p @@ -740,9 +740,17 @@ call_operand (op, mode) if (mode != Pmode) return 0; - return (GET_CODE (op) == SYMBOL_REF - || (GET_CODE (op) == REG - && (TARGET_OPEN_VMS || TARGET_WINDOWS_NT || REGNO (op) == 27))); + if (GET_CODE (op) == SYMBOL_REF) + return 1; + if (GET_CODE (op) == REG) + { + if (TARGET_ABI_OSF) + return REGNO (op) == 27; + else + return 1; + } + + return 0; } /* Return 1 if OP is a valid Alpha comparison operator. Here we know which @@ -1059,7 +1067,9 @@ addition_operation (op, mode) int direct_return () { - return (! TARGET_OPEN_VMS && reload_completed && alpha_sa_size () == 0 + return (! TARGET_ABI_OPEN_VMS + && reload_completed + && alpha_sa_size () == 0 && get_frame_size () == 0 && current_function_outgoing_args_size == 0 && current_function_pretend_args_size == 0); @@ -2156,7 +2166,7 @@ alpha_lookup_xfloating_lib_func (code) knowledge of the G_floating routines. */ if (TARGET_FLOAT_VAX) { - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) { if (code == FLOAT_EXTEND) return "OTS$CVT_FLOAT_G_X"; @@ -2172,7 +2182,7 @@ alpha_lookup_xfloating_lib_func (code) } } - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) ops = vms_xfloating_ops; else ops = osf_xfloating_ops; @@ -4057,7 +4067,7 @@ alpha_initialize_trampoline (tramp, fnaddr, cxt, fnofs, cxtofs, jmpofs) { rtx temp, temp1, addr; /* VMS really uses DImode pointers in memory at this point. */ - enum machine_mode mode = TARGET_OPEN_VMS ? Pmode : ptr_mode; + enum machine_mode mode = TARGET_ABI_OPEN_VMS ? Pmode : ptr_mode; #ifdef POINTERS_EXTEND_UNSIGNED fnaddr = convert_memory_address (mode, fnaddr); @@ -4126,7 +4136,14 @@ function_arg (cum, mode, type, named) int basereg; int num_args; -#ifndef OPEN_VMS +#if TARGET_ABI_OPEN_VMS + if (mode == VOIDmode) + return alpha_arg_info_reg_val (cum); + + num_args = cum.num_args; + if (num_args >= 6 || MUST_PASS_IN_STACK (mode, type)) + return NULL_RTX; +#else if (cum >= 6) return NULL_RTX; num_args = cum; @@ -4138,14 +4155,7 @@ function_arg (cum, mode, type, named) return NULL_RTX; else if (FUNCTION_ARG_PASS_BY_REFERENCE (cum, mode, type, named)) basereg = 16; -#else - if (mode == VOIDmode) - return alpha_arg_info_reg_val (cum); - - num_args = cum.num_args; - if (num_args >= 6 || MUST_PASS_IN_STACK (mode, type)) - return NULL_RTX; -#endif /* OPEN_VMS */ +#endif /* TARGET_ABI_OPEN_VMS */ else if (TARGET_FPREGS && (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT || GET_MODE_CLASS (mode) == MODE_FLOAT)) @@ -4161,7 +4171,7 @@ alpha_build_va_list () { tree base, ofs, record, type_decl; - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) return ptr_type_node; record = make_lang_type (RECORD_TYPE); @@ -4198,7 +4208,7 @@ alpha_va_start (stdarg_p, valist, nextarg) if (TREE_CODE (TREE_TYPE (valist)) == ERROR_MARK) return; - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) std_expand_builtin_va_start (stdarg_p, valist, nextarg); /* For Unix, SETUP_INCOMING_VARARGS moves the starting address base @@ -4246,7 +4256,7 @@ alpha_va_arg (valist, type) tree wide_type, wide_ofs; int indirect = 0; - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) return std_expand_builtin_va_arg (valist, type); tsize = ((TREE_INT_CST_LOW (TYPE_SIZE (type)) / BITS_PER_UNIT + 7) / 8) * 8; @@ -4343,7 +4353,7 @@ alpha_sa_mask (imaskP, fmaskP) if (!current_function_is_thunk) #endif { - if (TARGET_OPEN_VMS && vms_is_stack_procedure) + if (TARGET_ABI_OPEN_VMS && vms_is_stack_procedure) imask |= (1L << HARD_FRAME_POINTER_REGNUM); /* One for every register we have to save. */ @@ -4396,7 +4406,7 @@ alpha_sa_size () sa_size++; } - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) { /* Start by assuming we can use a register procedure if we don't make any calls (REG_RA not used) or need to save any @@ -4462,7 +4472,7 @@ alpha_using_fp () return vms_unwind_regno == HARD_FRAME_POINTER_REGNUM; } -#ifdef OPEN_VMS +#if TARGET_ABI_OPEN_VMS static int vms_valid_decl_attribute_p (decl, attributes, identifier, args) @@ -4484,7 +4494,7 @@ alpha_does_function_need_gp () rtx insn; /* We never need a GP for Windows/NT or VMS. */ - if (TARGET_WINDOWS_NT || TARGET_OPEN_VMS) + if (TARGET_ABI_WINDOWS_NT || TARGET_ABI_OPEN_VMS) return 0; if (TARGET_PROFILING_NEEDS_GP && profile_flag) @@ -4593,7 +4603,7 @@ alpha_expand_prologue () sa_size = alpha_sa_size (); frame_size = get_frame_size (); - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) frame_size = ALPHA_ROUND (sa_size + (vms_is_stack_procedure ? 8 : 0) + frame_size @@ -4604,7 +4614,7 @@ alpha_expand_prologue () + ALPHA_ROUND (frame_size + current_function_pretend_args_size)); - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) reg_offset = 8; else reg_offset = ALPHA_ROUND (current_function_outgoing_args_size); @@ -4612,7 +4622,7 @@ alpha_expand_prologue () alpha_sa_mask (&imask, &fmask); /* Emit an insn to reload GP, if needed. */ - if (!TARGET_OPEN_VMS && !TARGET_WINDOWS_NT) + if (TARGET_ABI_OSF) { alpha_function_needs_gp = alpha_does_function_need_gp (); if (alpha_function_needs_gp) @@ -4682,7 +4692,7 @@ alpha_expand_prologue () emit_move_insn (last, const0_rtx); } - if (TARGET_WINDOWS_NT) + if (TARGET_ABI_WINDOWS_NT) { /* For NT stack unwind (done by 'reverse execution'), it's not OK to take the result of a loop, even though the value @@ -4737,7 +4747,7 @@ alpha_expand_prologue () } /* Save regs in stack order. Beginning with VMS PV. */ - if (TARGET_OPEN_VMS && vms_is_stack_procedure) + if (TARGET_ABI_OPEN_VMS && vms_is_stack_procedure) { mem = gen_rtx_MEM (DImode, stack_pointer_rtx); set_mem_alias_set (mem, alpha_sr_alias_set); @@ -4773,7 +4783,7 @@ alpha_expand_prologue () reg_offset += 8; } - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) { if (!vms_is_stack_procedure) /* Register frame procedures fave the fp. */ @@ -4847,7 +4857,7 @@ alpha_start_function (file, fnname, decl) sa_size = alpha_sa_size (); frame_size = get_frame_size (); - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) frame_size = ALPHA_ROUND (sa_size + (vms_is_stack_procedure ? 8 : 0) + frame_size @@ -4858,7 +4868,7 @@ alpha_start_function (file, fnname, decl) + ALPHA_ROUND (frame_size + current_function_pretend_args_size)); - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) reg_offset = 8; else reg_offset = ALPHA_ROUND (current_function_outgoing_args_size); @@ -4883,7 +4893,7 @@ alpha_start_function (file, fnname, decl) } /* Issue function start and label. */ - if (TARGET_OPEN_VMS || !flag_inhibit_size_directive) + if (TARGET_ABI_OPEN_VMS || !flag_inhibit_size_directive) { fputs ("\t.ent ", file); assemble_name (file, fnname); @@ -4891,8 +4901,7 @@ alpha_start_function (file, fnname, decl) /* If the function needs GP, we'll write the "..ng" label there. Otherwise, do it here. */ - if (! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT - && ! alpha_function_needs_gp) + if (TARGET_ABI_OSF && ! alpha_function_needs_gp) { putc ('$', file); assemble_name (file, fnname); @@ -4901,15 +4910,15 @@ alpha_start_function (file, fnname, decl) } strcpy (entry_label, fnname); - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) strcat (entry_label, "..en"); ASM_OUTPUT_LABEL (file, entry_label); inside_function = TRUE; - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) fprintf (file, "\t.base $%d\n", vms_base_regno); - if (!TARGET_OPEN_VMS && TARGET_IEEE_CONFORMANT + if (!TARGET_ABI_OPEN_VMS && TARGET_IEEE_CONFORMANT && !flag_inhibit_size_directive) { /* Set flags in procedure descriptor to request IEEE-conformant @@ -4925,7 +4934,7 @@ alpha_start_function (file, fnname, decl) /* Describe our frame. If the frame size is larger than an integer, print it as zero to avoid an assembler error. We won't be properly describing such a frame, but that's the best we can do. */ - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) { fprintf (file, "\t.frame $%d,", vms_unwind_regno); fprintf (file, HOST_WIDE_INT_PRINT_DEC, @@ -4945,7 +4954,7 @@ alpha_start_function (file, fnname, decl) } /* Describe which registers were spilled. */ - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) { if (imask) /* ??? Does VMS care if mask contains ra? The old code did'nt @@ -4979,7 +4988,7 @@ alpha_start_function (file, fnname, decl) } } -#ifdef OPEN_VMS +#if TARGET_ABI_OPEN_VMS /* Ifdef'ed cause readonly_section and link_section are only available then. */ readonly_section (); @@ -5009,9 +5018,9 @@ static void alpha_output_function_end_prologue (file) FILE *file; { - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) fputs ("\t.prologue\n", file); - else if (TARGET_WINDOWS_NT) + else if (TARGET_ABI_WINDOWS_NT) fputs ("\t.prologue 0\n", file); else if (!flag_inhibit_size_directive) fprintf (file, "\t.prologue %d\n", alpha_function_needs_gp); @@ -5046,7 +5055,7 @@ alpha_expand_epilogue () sa_size = alpha_sa_size (); frame_size = get_frame_size (); - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) frame_size = ALPHA_ROUND (sa_size + (vms_is_stack_procedure ? 8 : 0) + frame_size @@ -5057,15 +5066,15 @@ alpha_expand_epilogue () + ALPHA_ROUND (frame_size + current_function_pretend_args_size)); - if (TARGET_OPEN_VMS) + if (TARGET_ABI_OPEN_VMS) reg_offset = 8; else reg_offset = ALPHA_ROUND (current_function_outgoing_args_size); alpha_sa_mask (&imask, &fmask); - fp_is_frame_pointer = ((TARGET_OPEN_VMS && vms_is_stack_procedure) - || (!TARGET_OPEN_VMS && frame_pointer_needed)); + fp_is_frame_pointer = ((TARGET_ABI_OPEN_VMS && vms_is_stack_procedure) + || (!TARGET_ABI_OPEN_VMS && frame_pointer_needed)); fp_offset = 0; sa_reg = stack_pointer_rtx; @@ -5077,9 +5086,9 @@ alpha_expand_epilogue () if (sa_size) { /* If we have a frame pointer, restore SP from it. */ - if ((TARGET_OPEN_VMS + if ((TARGET_ABI_OPEN_VMS && vms_unwind_regno == HARD_FRAME_POINTER_REGNUM) - || (!TARGET_OPEN_VMS && frame_pointer_needed)) + || (!TARGET_ABI_OPEN_VMS && frame_pointer_needed)) FRP (emit_move_insn (stack_pointer_rtx, hard_frame_pointer_rtx)); /* Cope with very large offsets to the register save area. */ @@ -5188,7 +5197,7 @@ alpha_expand_epilogue () set_mem_alias_set (mem, alpha_sr_alias_set); FRP (emit_move_insn (hard_frame_pointer_rtx, mem)); } - else if (TARGET_OPEN_VMS) + else if (TARGET_ABI_OPEN_VMS) { emit_insn (gen_blockage ()); FRP (emit_move_insn (hard_frame_pointer_rtx, @@ -5202,7 +5211,7 @@ alpha_expand_epilogue () } else { - if (TARGET_OPEN_VMS && !vms_is_stack_procedure) + if (TARGET_ABI_OPEN_VMS && !vms_is_stack_procedure) { emit_insn (gen_blockage ()); FRP (emit_move_insn (hard_frame_pointer_rtx, @@ -6270,7 +6279,7 @@ check_float_value (mode, d, overflow) return 0; } -#if OPEN_VMS +#if TARGET_ABI_OPEN_VMS /* Return the VMS argument type corresponding to MODE. */ @@ -6466,4 +6475,4 @@ alpha_need_linkage (name, is_local) return NULL_RTX; } -#endif /* OPEN_VMS */ +#endif /* TARGET_ABI_OPEN_VMS */ diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index b04be35..1a1bb71 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -173,12 +173,9 @@ extern enum alpha_fp_trap_mode alpha_fptm; #define TARGET_SUPPORT_ARCH (target_flags & MASK_SUPPORT_ARCH) /* These are for target os support and cannot be changed at runtime. */ -#ifndef TARGET_WINDOWS_NT -#define TARGET_WINDOWS_NT 0 -#endif -#ifndef TARGET_OPEN_VMS -#define TARGET_OPEN_VMS 0 -#endif +#define TARGET_ABI_WINDOWS_NT 0 +#define TARGET_ABI_OPEN_VMS 0 +#define TARGET_ABI_OSF (!TARGET_ABI_WINDOWS_NT && !TARGET_ABI_OPEN_VMS) #ifndef TARGET_AS_CAN_SUBTRACT_LABELS #define TARGET_AS_CAN_SUBTRACT_LABELS TARGET_GAS @@ -2147,7 +2144,7 @@ literal_section () \ /* This is how to output an element of a case-vector that is relative. */ #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \ - fprintf (FILE, "\t.%s $L%d\n", TARGET_WINDOWS_NT ? "long" : "gprel32", \ + fprintf (FILE, "\t.%s $L%d\n", TARGET_ABI_WINDOWS_NT ? "long" : "gprel32", \ (VALUE)) /* This is how to output an assembler line @@ -2197,7 +2194,7 @@ do { \ const char *fn_name = XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0); \ int reg; \ \ - if (! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT) \ + if (TARGET_ABI_OSF) \ fprintf (FILE, "\tldgp $29,0($27)\n"); \ \ /* Mark end of prologue. */ \ diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 4f277b5..dc9f507 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -227,14 +227,14 @@ (and (eq_attr "cpu" "ev5") (eq_attr "type" "fadd,fcmov,fmul,fcpys,fbr,fdiv")) 4 1) - + (define_function_unit "ev5_fm" 1 0 (and (eq_attr "cpu" "ev5") (eq_attr "type" "fmul")) 4 1) ; Add and cmov as you would expect; fbr never produces a result; -; fdiv issues through fa to the divider, +; fdiv issues through fa to the divider, (define_function_unit "ev5_fa" 1 0 (and (eq_attr "cpu" "ev5") (eq_attr "type" "fadd,fcmov,fbr,fdiv")) @@ -259,7 +259,7 @@ ;; EV6 has two symmetric pairs ("clusters") of two asymetric integer units ;; ("upper" and "lower"), yielding pipe names U0, U1, L0, L1. -;; Conditional moves decompose into two independant primitives, each +;; Conditional moves decompose into two independant primitives, each ;; taking one cycle. Since ev6 is out-of-order, we can't see anything ;; but two cycles. (define_function_unit "ev6_ebox" 4 0 @@ -344,7 +344,7 @@ ;; For the FPU we are very similar to EV5, except there's no insn that ;; can issue to fm & fa, so we get to leave that out. - + (define_function_unit "ev6_fm" 1 0 (and (eq_attr "cpu" "ev6") (eq_attr "type" "fmul")) @@ -614,7 +614,7 @@ ;; (that's a bug, but not one we can do anything about). As of NT4.0 SP3, ;; the exception handling code will loop if a subq is used and an ;; exception occurs. -;; +;; ;; The 19980616 change to emit prologues as RTL also confused some ;; versions of GDB, which also interprets prologues. This has been ;; fixed as of GDB 4.18, but it does not harm to unconditionally @@ -986,7 +986,7 @@ (clobber (reg:DI 28))]) (set (match_operand:SI 0 "nonimmediate_operand" "") (subreg:SI (reg:DI 27) 0))] - "!TARGET_OPEN_VMS" + "! TARGET_ABI_OPEN_VMS" "") (define_expand "udivsi3" @@ -1000,7 +1000,7 @@ (clobber (reg:DI 28))]) (set (match_operand:SI 0 "nonimmediate_operand" "") (subreg:SI (reg:DI 27) 0))] - "!TARGET_OPEN_VMS" + "! TARGET_ABI_OPEN_VMS" "") (define_expand "modsi3" @@ -1014,7 +1014,7 @@ (clobber (reg:DI 28))]) (set (match_operand:SI 0 "nonimmediate_operand" "") (subreg:SI (reg:DI 27) 0))] - "!TARGET_OPEN_VMS" + "! TARGET_ABI_OPEN_VMS" "") (define_expand "umodsi3" @@ -1028,7 +1028,7 @@ (clobber (reg:DI 28))]) (set (match_operand:SI 0 "nonimmediate_operand" "") (subreg:SI (reg:DI 27) 0))] - "!TARGET_OPEN_VMS" + "! TARGET_ABI_OPEN_VMS" "") (define_expand "divdi3" @@ -1041,7 +1041,7 @@ (clobber (reg:DI 28))]) (set (match_operand:DI 0 "nonimmediate_operand" "") (reg:DI 27))] - "!TARGET_OPEN_VMS" + "! TARGET_ABI_OPEN_VMS" "") (define_expand "udivdi3" @@ -1054,7 +1054,7 @@ (clobber (reg:DI 28))]) (set (match_operand:DI 0 "nonimmediate_operand" "") (reg:DI 27))] - "!TARGET_OPEN_VMS" + "! TARGET_ABI_OPEN_VMS" "") (define_expand "moddi3" @@ -1067,7 +1067,7 @@ (clobber (reg:DI 28))]) (set (match_operand:DI 0 "nonimmediate_operand" "") (reg:DI 27))] - "!TARGET_OPEN_VMS" + "! TARGET_ABI_OPEN_VMS" "") (define_expand "umoddi3" @@ -1080,7 +1080,7 @@ (clobber (reg:DI 28))]) (set (match_operand:DI 0 "nonimmediate_operand" "") (reg:DI 27))] - "!TARGET_OPEN_VMS" + "! TARGET_ABI_OPEN_VMS" "") ;; Lengths of 8 for ldq $t12,__divq($gp); jsr $t9,($t12),__divq as @@ -1091,7 +1091,7 @@ [(reg:DI 24) (reg:DI 25)]))) (clobber (reg:DI 23)) (clobber (reg:DI 28))] - "!TARGET_OPEN_VMS" + "! TARGET_ABI_OPEN_VMS" "%E0 $24,$25,$27" [(set_attr "type" "jsr") (set_attr "length" "8")]) @@ -1102,7 +1102,7 @@ [(reg:DI 24) (reg:DI 25)])) (clobber (reg:DI 23)) (clobber (reg:DI 28))] - "!TARGET_OPEN_VMS" + "! TARGET_ABI_OPEN_VMS" "%E0 $24,$25,$27" [(set_attr "type" "jsr") (set_attr "length" "8")]) @@ -1212,7 +1212,7 @@ if (! TARGET_BWX) operands[1] = force_reg (QImode, operands[1]); }") - + (define_insn "*zero_extendqidi2_bwx" [(set (match_operand:DI 0 "register_operand" "=r,r") (zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "r,m")))] @@ -1228,7 +1228,7 @@ "! TARGET_BWX" "and %1,0xff,%0" [(set_attr "type" "ilog")]) - + (define_expand "zero_extendhisi2" [(set (match_operand:SI 0 "register_operand" "") (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))] @@ -1339,7 +1339,7 @@ "eqv %r1,%2,%0" [(set_attr "type" "ilog")]) -;; Handle the FFS insn iff we support CIX. +;; Handle the FFS insn iff we support CIX. (define_expand "ffsdi2" [(set (match_dup 2) @@ -1361,7 +1361,7 @@ (unspec:DI [(match_operand:DI 1 "register_operand" "r")] UNSPEC_CTTZ))] "TARGET_CIX" "cttz %1,%0" - ; EV6 calls all mvi and cttz/ctlz/popc class imisc, so just + ; EV6 calls all mvi and cttz/ctlz/popc class imisc, so just ; reuse the existing type name. [(set_attr "type" "mvi")]) @@ -1407,7 +1407,7 @@ ;; return \"s%P2addl %r1,0,%0\"; ;; }" ;; [(set_attr "type" "iadd")]) - + (define_insn "lshrdi3" [(set (match_operand:DI 0 "register_operand" "=r") (lshiftrt:DI (match_operand:DI 1 "reg_or_0_operand" "rJ") @@ -1440,7 +1440,7 @@ force_reg (QImode, operands[1]))); DONE; } - + /* If we have an unaligned MEM, extend to DImode (which we do specially) and then copy to the result. */ if (unaligned_memory_operand (operands[1], HImode)) @@ -1687,7 +1687,7 @@ [(set_attr "type" "shift")]) ;; Combine has some strange notion of preserving existing undefined behaviour -;; in shifts larger than a word size. So capture these patterns that it +;; in shifts larger than a word size. So capture these patterns that it ;; should have turned into zero_extracts. (define_insn "*extxl_1" @@ -1774,11 +1774,11 @@ ;; (match_dup 4)))] ;; " ;;{ -;; operands[6] = plus_constant (operands[3], +;; operands[6] = plus_constant (operands[3], ;; INTVAL (operands[2]) / BITS_PER_UNIT); ;; operands[7] = GEN_INT (- INTVAL (operands[2]) / BITS_PER_UNIT); ;;}") - + (define_insn "*insbl_const" [(set (match_operand:DI 0 "register_operand" "=r") (ashift:DI (zero_extend:DI (match_operand:QI 1 "register_operand" "r")) @@ -2353,7 +2353,7 @@ bit at bit 48 of the fraction, which is representable in DFmode, which prevents rounding error in the final conversion to SFmode. */ - emit_insn (gen_rtx_SET (VOIDmode, sticky, + emit_insn (gen_rtx_SET (VOIDmode, sticky, gen_rtx_NE (DImode, lo, const0_rtx))); emit_insn (gen_iordi3 (hi, hi, sticky)); emit_insn (gen_trunctfdf2 (tmpf, arg)); @@ -3039,7 +3039,7 @@ [(set_attr "type" "icmov")]) (define_expand "umaxdi3" - [(set (match_dup 3) + [(set (match_dup 3) (leu:DI (match_operand:DI 1 "reg_or_0_operand" "") (match_operand:DI 2 "reg_or_8bit_operand" ""))) (set (match_operand:DI 0 "register_operand" "") @@ -3250,7 +3250,7 @@ (define_insn "*movdfcc_internal" [(set (match_operand:DF 0 "register_operand" "=f,f") - (if_then_else:DF + (if_then_else:DF (match_operator 3 "signed_comparison_operator" [(match_operand:DF 4 "reg_or_fp0_operand" "fG,fG") (match_operand:DF 2 "fp0_operand" "G,G")]) @@ -3264,7 +3264,7 @@ (define_insn "*movsfcc_internal" [(set (match_operand:SF 0 "register_operand" "=f,f") - (if_then_else:SF + (if_then_else:SF (match_operator 3 "signed_comparison_operator" [(match_operand:DF 4 "reg_or_fp0_operand" "fG,fG") (match_operand:DF 2 "fp0_operand" "G,G")]) @@ -3278,7 +3278,7 @@ (define_insn "*movdfcc_ext1" [(set (match_operand:DF 0 "register_operand" "=f,f") - (if_then_else:DF + (if_then_else:DF (match_operator 3 "signed_comparison_operator" [(match_operand:DF 4 "reg_or_fp0_operand" "fG,fG") (match_operand:DF 2 "fp0_operand" "G,G")]) @@ -3292,9 +3292,9 @@ (define_insn "*movdfcc_ext2" [(set (match_operand:DF 0 "register_operand" "=f,f") - (if_then_else:DF + (if_then_else:DF (match_operator 3 "signed_comparison_operator" - [(float_extend:DF + [(float_extend:DF (match_operand:SF 4 "reg_or_fp0_operand" "fG,fG")) (match_operand:DF 2 "fp0_operand" "G,G")]) (match_operand:DF 1 "reg_or_fp0_operand" "fG,0") @@ -3307,7 +3307,7 @@ (define_insn "*movdfcc_ext3" [(set (match_operand:SF 0 "register_operand" "=f,f") - (if_then_else:SF + (if_then_else:SF (match_operator 3 "signed_comparison_operator" [(float_extend:DF (match_operand:SF 4 "reg_or_fp0_operand" "fG,fG")) @@ -3322,7 +3322,7 @@ (define_insn "*movdfcc_ext4" [(set (match_operand:DF 0 "register_operand" "=f,f") - (if_then_else:DF + (if_then_else:DF (match_operator 3 "signed_comparison_operator" [(float_extend:DF (match_operand:SF 4 "reg_or_fp0_operand" "fG,fG")) @@ -3766,7 +3766,7 @@ && ! (extended_count (operands[2], DImode, unsignedp) >= 1 && extended_count (operands[3], DImode, unsignedp) >= 1))) FAIL; - + if (GET_CODE (operands[3]) == CONST_INT) tem = gen_rtx_PLUS (SImode, operands[2], GEN_INT (- INTVAL (operands[3]))); @@ -3842,7 +3842,7 @@ GEN_INT (- INTVAL (operands[3]))); else tem = gen_rtx_MINUS (SImode, operands[2], operands[3]); - + operands[5] = gen_rtx_SIGN_EXTEND (DImode, tem); operands[6] = gen_rtx_fmt_ee (GET_CODE (operands[1]), VOIDmode, operands[4], const0_rtx); @@ -4082,9 +4082,9 @@ (use (match_operand 3 "" ""))] "" " -{ if (TARGET_WINDOWS_NT) +{ if (TARGET_ABI_WINDOWS_NT) emit_call_insn (gen_call_nt (operands[0], operands[1])); - else if (TARGET_OPEN_VMS) + else if (TARGET_ABI_OPEN_VMS) emit_call_insn (gen_call_vms (operands[0], operands[2])); else emit_call_insn (gen_call_osf (operands[0], operands[1])); @@ -4095,7 +4095,7 @@ (define_expand "sibcall" [(call (mem:DI (match_operand 0 "" "")) (match_operand 1 "" ""))] - "!TARGET_OPEN_VMS && !TARGET_WINDOWS_NT" + "TARGET_ABI_OSF" " { if (GET_CODE (operands[0]) != MEM) @@ -4187,9 +4187,10 @@ (use (match_operand 4 "" ""))] "" " -{ if (TARGET_WINDOWS_NT) +{ + if (TARGET_ABI_WINDOWS_NT) emit_call_insn (gen_call_value_nt (operands[0], operands[1], operands[2])); - else if (TARGET_OPEN_VMS) + else if (TARGET_ABI_OPEN_VMS) emit_call_insn (gen_call_value_vms (operands[0], operands[1], operands[3])); else @@ -4202,7 +4203,7 @@ [(set (match_operand 0 "" "") (call (mem:DI (match_operand 1 "" "")) (match_operand 2 "" "")))] - "!TARGET_OPEN_VMS && !TARGET_WINDOWS_NT" + "TARGET_ABI_OSF" " { if (GET_CODE (operands[1]) != MEM) @@ -4288,32 +4289,31 @@ (match_operand 1 "" "")) (clobber (reg:DI 27)) (clobber (reg:DI 26))] - "! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS - && find_reg_note (insn, REG_NORETURN, NULL_RTX)" + "TARGET_ABI_OSF && find_reg_note (insn, REG_NORETURN, NULL_RTX)" "@ jsr $26,($27),0 bsr $26,$%0..ng jsr $26,%0" [(set_attr "type" "jsr") (set_attr "length" "*,*,8")]) - + (define_insn "*call_osf_1" [(call (mem:DI (match_operand:DI 0 "call_operand" "c,R,i")) (match_operand 1 "" "")) (clobber (reg:DI 27)) (clobber (reg:DI 26))] - "! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS" + "TARGET_ABI_OSF" "@ jsr $26,($27),0\;ldgp $29,0($26) bsr $26,$%0..ng jsr $26,%0\;ldgp $29,0($26)" [(set_attr "type" "jsr") (set_attr "length" "12,*,16")]) - + (define_insn "*sibcall_osf_1" [(call (mem:DI (match_operand:DI 0 "call_operand" "R,i")) (match_operand 1 "" ""))] - "! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS" + "TARGET_ABI_OSF" "@ br $31,$%0..ng jmp $31,%0" @@ -4324,14 +4324,14 @@ [(call (mem:DI (match_operand:DI 0 "call_operand" "r,R,i")) (match_operand 1 "" "")) (clobber (reg:DI 26))] - "TARGET_WINDOWS_NT" + "TARGET_ABI_WINDOWS_NT" "@ jsr $26,(%0) bsr $26,%0 jsr $26,%0" [(set_attr "type" "jsr") (set_attr "length" "*,*,12")]) - + (define_insn "*call_vms_1" [(call (mem:DI (match_operand:DI 0 "call_operand" "r,i")) (match_operand 1 "" "")) @@ -4339,7 +4339,7 @@ (use (reg:DI 25)) (use (reg:DI 26)) (clobber (reg:DI 27))] - "TARGET_OPEN_VMS" + "TARGET_ABI_OPEN_VMS" "@ mov %2,$27\;jsr $26,0\;ldq $27,0($29) ldq $27,%2\;jsr $26,%0\;ldq $27,0($29)" @@ -4414,9 +4414,9 @@ "" " { - if (TARGET_WINDOWS_NT) + if (TARGET_ABI_WINDOWS_NT) emit_jump_insn (gen_tablejump_nt (operands[0], operands[1])); - else if (TARGET_OPEN_VMS) + else if (TARGET_ABI_OPEN_VMS) emit_jump_insn (gen_tablejump_vms (operands[0], operands[1])); else emit_jump_insn (gen_tablejump_osf (operands[0], operands[1])); @@ -4465,7 +4465,7 @@ (plus (match_operand:DI 0 "register_operand" "r") (label_ref (match_operand 1 "" "")))) (clobber (match_scratch:DI 2 "=r"))] - "! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS && next_active_insn (insn) != 0 + "TARGET_ABI_OSF && next_active_insn (insn) != 0 && GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC && PREV_INSN (next_active_insn (insn)) == operands[1]" "* @@ -4509,7 +4509,7 @@ [(set (pc) (match_operand:DI 0 "register_operand" "r")) (use (label_ref (match_operand 1 "" "")))] - "TARGET_WINDOWS_NT && next_active_insn (insn) != 0 + "TARGET_ABI_WINDOWS_NT && next_active_insn (insn) != 0 && GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC && PREV_INSN (next_active_insn (insn)) == operands[1]" "* @@ -4557,7 +4557,7 @@ [(set (pc) (plus (match_operand:DI 0 "register_operand" "r") (label_ref (match_operand 1 "" ""))))] - "TARGET_OPEN_VMS" + "TARGET_ABI_OPEN_VMS" "jmp $31,(%0),0" [(set_attr "type" "ibr")]) @@ -4724,7 +4724,7 @@ (define_insn "*movsi_nofix" [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,m,*f,*f,m") (match_operand:SI 1 "input_operand" "rJ,K,L,m,rJ,*fJ,m,*f"))] - "! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS && ! TARGET_FIX + "TARGET_ABI_OSF && ! TARGET_FIX && (register_operand (operands[0], SImode) || reg_or_0_operand (operands[1], SImode))" "@ @@ -4741,7 +4741,7 @@ (define_insn "*movsi_fix" [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,m,*f,*f,m,r,*f") (match_operand:SI 1 "input_operand" "rJ,K,L,m,rJ,*fJ,m,*f,*f,r"))] - "! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS && TARGET_FIX + "TARGET_ABI_OSF && TARGET_FIX && (register_operand (operands[0], SImode) || reg_or_0_operand (operands[1], SImode))" "@ @@ -4760,7 +4760,7 @@ (define_insn "*movsi_nt_vms" [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,r,m,*f,*f,m") (match_operand:SI 1 "input_operand" "rJ,K,L,s,m,rJ,*fJ,m,*f"))] - "(TARGET_WINDOWS_NT || TARGET_OPEN_VMS) + "(TARGET_ABI_WINDOWS_NT || TARGET_ABI_OPEN_VMS) && (register_operand (operands[0], SImode) || reg_or_0_operand (operands[1], SImode))" "@ @@ -4953,7 +4953,7 @@ } else abort(); - + tem = alpha_emit_set_long_const (operands[0], i0, i1); if (rtx_equal_p (tem, operands[0])) DONE; @@ -5012,10 +5012,10 @@ (zero_extract:DI (subreg:DI (match_dup 3) 0) (const_int 8) (match_operand:DI 2 "const_int_operand" "")))] - + "" "") - + (define_expand "aligned_loadhi" [(set (match_operand:SI 3 "register_operand" "") (match_operand:SI 1 "memory_operand" "")) @@ -5023,10 +5023,10 @@ (zero_extract:DI (subreg:DI (match_dup 3) 0) (const_int 16) (match_operand:DI 2 "const_int_operand" "")))] - + "" "") - + ;; Similar for unaligned loads, where we use the sequence from the ;; Alpha Architecture manual. ;; @@ -5060,7 +5060,7 @@ "") ;; Storing an aligned byte or word requires two temporaries. Operand 0 is the -;; aligned SImode MEM. Operand 1 is the register containing the +;; aligned SImode MEM. Operand 1 is the register containing the ;; byte or word to store. Operand 2 is the number of bits within the word that ;; the value should be placed. Operands 3 and 4 are SImode temporaries. @@ -5212,7 +5212,7 @@ } else if (GET_CODE (operands[0]) == MEM - || (GET_CODE (operands[0]) == SUBREG + || (GET_CODE (operands[0]) == SUBREG && GET_CODE (SUBREG_REG (operands[0])) == MEM) || (reload_in_progress && GET_CODE (operands[0]) == REG && REGNO (operands[0]) >= FIRST_PSEUDO_REGISTER) @@ -5330,7 +5330,7 @@ } else if (GET_CODE (operands[0]) == MEM - || (GET_CODE (operands[0]) == SUBREG + || (GET_CODE (operands[0]) == SUBREG && GET_CODE (SUBREG_REG (operands[0])) == MEM) || (reload_in_progress && GET_CODE (operands[0]) == REG && REGNO (operands[0]) >= FIRST_PSEUDO_REGISTER) @@ -5423,7 +5423,7 @@ if (aligned_memory_operand (operands[1], HImode)) { - seq = gen_reload_inhi_help (operands[0], operands[1], + seq = gen_reload_inhi_help (operands[0], operands[1], gen_rtx_REG (SImode, REGNO (operands[2]))); } else @@ -5567,7 +5567,7 @@ operands[2])); DONE; }") - + (define_split [(set (match_operand:HI 0 "register_operand" "") (match_operand:HI 1 "memory_operand" "")) @@ -5582,7 +5582,7 @@ operands[2])); DONE; }") - + (define_split [(set (match_operand:QI 0 "memory_operand" "") (match_operand:QI 1 "register_operand" "")) @@ -5750,7 +5750,7 @@ ;; bytes, we need do nothing. ;; ;; If it is more than 4096 bytes, we need to probe the stack -;; periodically. +;; periodically. (define_expand "allocate_stack" [(set (reg:DI 30) (plus:DI (reg:DI 30) @@ -5901,7 +5901,7 @@ (define_expand "sibcall_epilogue" [(return)] - "!TARGET_OPEN_VMS && !TARGET_WINDOWS_NT" + "TARGET_ABI_OSF" " { alpha_expand_epilogue (); @@ -5921,7 +5921,7 @@ (define_expand "builtin_longjmp" [(use (match_operand:DI 0 "register_operand" "r"))] - "! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT" + "TARGET_ABI_OSF" " { /* The elements of the buffer are, in order: */ @@ -5957,21 +5957,21 @@ (define_insn "*builtin_setjmp_receiver_sub_label" [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)] - "! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT && TARGET_AS_CAN_SUBTRACT_LABELS" + "TARGET_ABI_OSF && TARGET_AS_CAN_SUBTRACT_LABELS" "\\n$LSJ%=:\;ldgp $29,$LSJ%=-%l0($27)" [(set_attr "length" "8") (set_attr "type" "multi")]) (define_insn "builtin_setjmp_receiver" [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)] - "! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT" + "TARGET_ABI_OSF" "br $29,$LSJ%=\\n$LSJ%=:\;ldgp $29,0($29)" [(set_attr "length" "12") (set_attr "type" "multi")]) (define_expand "exception_receiver" [(unspec_volatile [(match_dup 0)] UNSPECV_EHR)] - "! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT" + "TARGET_ABI_OSF" " { if (TARGET_LD_BUGGY_LDGP) @@ -6005,7 +6005,7 @@ (set (reg:DI 27) (mem:DI (reg:DI 29))) (unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE) (use (reg:DI 27))] - "TARGET_OPEN_VMS" + "TARGET_ABI_OPEN_VMS" "") (define_insn "arg_home" @@ -6028,7 +6028,7 @@ (clobber (reg:DI 24)) (clobber (reg:DI 25)) (clobber (reg:DI 0))] - "TARGET_OPEN_VMS" + "TARGET_ABI_OPEN_VMS" "lda $0,OTS$HOME_ARGS\;ldq $0,8($0)\;jsr $0,OTS$HOME_ARGS" [(set_attr "length" "16") (set_attr "type" "multi")]) @@ -6077,7 +6077,7 @@ (match_operand 2 "" ""))) (clobber (reg:DI 27)) (clobber (reg:DI 26))] - "! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS" + "TARGET_ABI_OSF" "@ jsr $26,($27),0\;ldgp $29,0($26) bsr $26,$%1..ng @@ -6089,7 +6089,7 @@ [(set (match_operand 0 "" "") (call (mem:DI (match_operand:DI 1 "call_operand" "R,i")) (match_operand 2 "" "")))] - "! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS" + "TARGET_ABI_OSF" "@ br $31,$%1..ng jmp $31,%1" @@ -6101,7 +6101,7 @@ (call (mem:DI (match_operand:DI 1 "call_operand" "r,R,i")) (match_operand 2 "" ""))) (clobber (reg:DI 26))] - "TARGET_WINDOWS_NT" + "TARGET_ABI_WINDOWS_NT" "@ jsr $26,(%1) bsr $26,%1 @@ -6117,7 +6117,7 @@ (use (reg:DI 25)) (use (reg:DI 26)) (clobber (reg:DI 27))] - "TARGET_OPEN_VMS" + "TARGET_ABI_OPEN_VMS" "@ mov %3,$27\;jsr $26,0\;ldq $27,0($29) ldq $27,%3\;jsr $26,%1\;ldq $27,0($29)" diff --git a/gcc/config/alpha/alpha32.h b/gcc/config/alpha/alpha32.h index 8214279..8ef8333 100644 --- a/gcc/config/alpha/alpha32.h +++ b/gcc/config/alpha/alpha32.h @@ -30,8 +30,8 @@ along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#undef TARGET_WINDOWS_NT -#define TARGET_WINDOWS_NT 1 +#undef TARGET_ABI_WINDOWS_NT +#define TARGET_ABI_WINDOWS_NT 1 /* WinNT (and thus Interix) use unsigned int */ #define SIZE_TYPE "unsigned int" diff --git a/gcc/config/alpha/vms.h b/gcc/config/alpha/vms.h index 34acc74..3f8fa07 100644 --- a/gcc/config/alpha/vms.h +++ b/gcc/config/alpha/vms.h @@ -18,8 +18,6 @@ along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#define OPEN_VMS 1 - #define TARGET_OBJECT_SUFFIX ".obj" #define TARGET_EXECUTABLE_SUFFIX ".exe" @@ -69,8 +67,8 @@ Boston, MA 02111-1307, USA. */ #undef TARGET_DEFAULT #define TARGET_DEFAULT (MASK_FP|MASK_FPREGS|MASK_GAS) -#undef TARGET_OPEN_VMS -#define TARGET_OPEN_VMS 1 +#undef TARGET_ABI_OPEN_VMS +#define TARGET_ABI_OPEN_VMS 1 #undef TARGET_NAME #define TARGET_NAME "OpenVMS/Alpha" |