From: Jeffrey A Law Date: Sun, 23 Nov 1997 01:57:15 +0000 (+0000) Subject: pa-hpux10.h (NEW_HP_ASSEMBLER): Define. X-Git-Tag: releases/egcs-1.0.0~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=67af3bf1e10ad72595e5b18284fb64151f7f5a85;p=thirdparty%2Fgcc.git pa-hpux10.h (NEW_HP_ASSEMBLER): Define. * pa-hpux10.h (NEW_HP_ASSEMBLER): Define. * pa.h (LEGITIMATE_CONSTANT_P): Reject LABEL_REFs if not using gas and not using the new HP assembler. Also remove unwanted pa.md change accidentally committed. From-SVN: r16684 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 58bd3429fa0a..d270f339d55a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Sat Nov 22 18:58:20 1997 Jeffrey A Law (law@cygnus.com) + + * pa-hpux10.h (NEW_HP_ASSEMBLER): Define. + * pa.h (LEGITIMATE_CONSTANT_P): Reject LABEL_REFs if not using + gas and not using the new HP assembler. + Fri Nov 21 15:20:05 1997 Jeffrey A Law (law@cygnus.com) * Makefile.in (program_transform_cross_name): Clean up "-e" confusion. diff --git a/gcc/config/pa/pa-hpux10.h b/gcc/config/pa/pa-hpux10.h index 1c57d5ee6ea7..c4b8ddd36dcc 100644 --- a/gcc/config/pa/pa-hpux10.h +++ b/gcc/config/pa/pa-hpux10.h @@ -69,3 +69,6 @@ do { \ #define MD_STARTFILE_PREFIX "/usr/ccs/lib/" #endif +/* hpux10 has the new HP assembler. It's still lousy, but it's a whole lot + better than the assembler shipped with older versions of hpux. */ +#define NEW_HP_ASSEMBLER diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 7d6c826a594e..5944448a849c 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -1396,12 +1396,21 @@ extern struct rtx_def *hppa_builtin_saveregs (); && (reload_in_progress || reload_completed || ! symbolic_expression_p (X))) /* Include all constant integers and constant doubles, but not - floating-point, except for floating-point zero. */ + floating-point, except for floating-point zero. + Reject LABEL_REFs if we're not using gas or the new HP assembler. */ +#ifdef NEW_HP_ASSEMBLER #define LEGITIMATE_CONSTANT_P(X) \ ((GET_MODE_CLASS (GET_MODE (X)) != MODE_FLOAT \ || (X) == CONST0_RTX (GET_MODE (X))) \ && !function_label_operand (X, VOIDmode)) +#else +#define LEGITIMATE_CONSTANT_P(X) \ + ((GET_MODE_CLASS (GET_MODE (X)) != MODE_FLOAT \ + || (X) == CONST0_RTX (GET_MODE (X))) \ + && (GET_CODE (X) != LABEL_REF || TARGET_GAS)\ + && !function_label_operand (X, VOIDmode)) +#endif /* Subroutine for EXTRA_CONSTRAINT. diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index d1e89a1ddf19..a13a06ee7950 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -2058,20 +2058,18 @@ ;; that anything generated as this insn will be recognized as one ;; and that it will not successfully combine with anything. (define_expand "movstrsi" - [(parallel [(set (match_operand:BLK 0 "" "") - (match_operand:BLK 1 "" "")) - (clobber (match_dup 7)) - (clobber (match_dup 8)) + [(parallel [(set (mem:BLK (match_operand:BLK 0 "" "")) + (mem:BLK (match_operand:BLK 1 "" ""))) + (clobber (match_dup 0)) + (clobber (match_dup 1)) (clobber (match_dup 4)) (clobber (match_dup 5)) - (clobber (match_dup 6)) (use (match_operand:SI 2 "arith_operand" "")) (use (match_operand:SI 3 "const_int_operand" ""))])] "" " { int size, align; - /* HP provides very fast block move library routine for the PA; this routine includes: @@ -2104,25 +2102,22 @@ /* If size/alignment > 8 (eg size is large in respect to alignment), then use the library routines. */ - if (size / align > 16) + if (size/align > 16) FAIL; /* This does happen, but not often enough to worry much about. */ - if (size / align < MOVE_RATIO) + if (size/align < MOVE_RATIO) FAIL; /* Fall through means we're going to use our block move pattern. */ - operands[0] - = change_address (operands[0], VOIDmode, - copy_to_mode_reg (SImode, XEXP (operands[0], 0))); - operands[1] - = change_address (operands[1], VOIDmode, - copy_to_mode_reg (SImode, XEXP (operands[1], 0))); + operands[0] = copy_to_mode_reg (SImode, XEXP (operands[0], 0)); + operands[1] = copy_to_mode_reg (SImode, XEXP (operands[1], 0)); operands[4] = gen_reg_rtx (SImode); operands[5] = gen_reg_rtx (SImode); - operands[6] = gen_reg_rtx (SImode); - operands[7] = XEXP (operands[0], 0); - operands[8] = XEXP (operands[1], 0); + emit_insn (gen_movstrsi_internal (operands[0], operands[1], operands[4], + operands[5], operands[2], operands[3], + gen_reg_rtx (SImode))); + DONE; }") ;; The operand constraints are written like this to support both compile-time