Commit Graph

44068 Commits

Author SHA1 Message Date
Rodney Brown
40165636b5 encoding.h: Fix formatting.
2002-07-02  Rodney Brown  <rbrown64@csc.com.au>

	* objc/encoding.h: Fix formatting.
	* objc/hash.h: Likewise.
	* objc/objc-api.h: Likewise.
	* objc/runtime.h: Likewise.
	* objc/thr.h: Likewise.
	* archive.c: Likewise.
	* class.c: Likewise.
	* encoding.c: Likewise.
	* gc.c: Likewise.
	* hash.c: Likewise.
	* init.c: Likewise.
	* misc.c: Likewise.
	* nil_method.c: Likewise.
	* objects.c: Likewise.
	* sarray.c: Likewise.
	* selector.c: Likewise.
	* sendmsg.c: Likewise.
	* thr-mach.c: Likewise.
	* thr.c: Likewise.

From-SVN: r55190
2002-07-02 19:43:03 +00:00
J"orn Rennecke
52702ae16e sh.c (print_operand, case 'N'): Allow zero vector.
Tue Jul  2 18:45:45 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (print_operand, case 'N'): Allow zero vector.
	(arith_reg_or_0_operand): Likewise.
	(zero_vec_operand): Check for CONST_VECTOR, not PARALLEL.
	* sh.h (CONST_COSTS): 0 has 0 cost.  Check OUTER_CODE for
	IOR, XOR, PLUS and SET and take their respective constant
	ranges into account.
	(PREDICATE_CODES, arith_reg_or_0_operand): Can be CONST_VECTOR.
	* sh.md (subdi3, subdi3_media): Allow zero operand.
	(movv8qi_i+3): Only vector that is not split is the zero vector.
	Fix operand 3 to simplify_subreg.
	(movv2si_i): Split alternative 1.
	(mshfhi_l_di_rev+1): New splitter.

Index: config/sh/sh.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/sh/sh.c,v
retrieving revision 1.155
diff -p -r1.155 sh.c
*** config/sh/sh.c	2 Jul 2002 04:01:04 -0000	1.155
--- config/sh/sh.c	2 Jul 2002 17:45:37 -0000
*************** print_operand (stream, x, code)
*** 434,440 ****
        break;

      case 'N':
!       if (x == const0_rtx)
  	{
  	  fprintf ((stream), "r63");
  	  break;
--- 434,441 ----
        break;

      case 'N':
!       if (x == const0_rtx
! 	  || (GET_CODE (x) == CONST_VECTOR && zero_vec_operand (x, VOIDmode)))
  	{
  	  fprintf ((stream), "r63");
  	  break;
*************** arith_reg_or_0_operand (op, mode)
*** 5940,5946 ****
    if (arith_reg_operand (op, mode))
      return 1;

!   if (GET_CODE (op) == CONST_INT && CONST_OK_FOR_N (INTVAL (op)))
      return 1;

    return 0;
--- 5941,5947 ----
    if (arith_reg_operand (op, mode))
      return 1;

!   if (EXTRA_CONSTRAINT_U (op))
      return 1;

    return 0;
*************** zero_vec_operand (v, mode)
*** 6222,6228 ****
  {
    int i;

!   if (GET_CODE (v) != PARALLEL
        || (GET_MODE (v) != mode && mode != VOIDmode))
      return 0;
    for (i = XVECLEN (v, 0) - 1; i >= 0; i--)
--- 6223,6229 ----
  {
    int i;

!   if (GET_CODE (v) != CONST_VECTOR
        || (GET_MODE (v) != mode && mode != VOIDmode))
      return 0;
    for (i = XVECLEN (v, 0) - 1; i >= 0; i--)
Index: config/sh/sh.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/sh/sh.h,v
retrieving revision 1.154
diff -p -r1.154 sh.h
*** config/sh/sh.h	1 Jul 2002 19:41:53 -0000	1.154
--- config/sh/sh.h	2 Jul 2002 17:45:37 -0000
*************** while (0)
*** 2689,2698 ****
    case CONST_INT:				\
      if (TARGET_SHMEDIA)				\
        {						\
  	if ((OUTER_CODE) == AND && and_operand ((RTX), DImode)) \
  	  return 0;				\
  	if (CONST_OK_FOR_J (INTVAL (RTX)))	\
!           return COSTS_N_INSNS (1);		\
  	else if (CONST_OK_FOR_J (INTVAL (RTX) >> 16)) \
  	  return COSTS_N_INSNS (2);		\
  	else if (CONST_OK_FOR_J ((INTVAL (RTX) >> 16) >> 16)) \
--- 2689,2704 ----
    case CONST_INT:				\
      if (TARGET_SHMEDIA)				\
        {						\
+ 	if (INTVAL (RTX) == 0)			\
+ 	  return 0;				\
  	if ((OUTER_CODE) == AND && and_operand ((RTX), DImode)) \
  	  return 0;				\
+ 	if (((OUTER_CODE) == IOR || (OUTER_CODE) == XOR \
+ 	     || (OUTER_CODE) == PLUS) \
+ 	    && CONST_OK_FOR_P (INTVAL (RTX)))	\
+ 	  return 0;				\
  	if (CONST_OK_FOR_J (INTVAL (RTX)))	\
!           return COSTS_N_INSNS ((OUTER_CODE) != SET);		\
  	else if (CONST_OK_FOR_J (INTVAL (RTX) >> 16)) \
  	  return COSTS_N_INSNS (2);		\
  	else if (CONST_OK_FOR_J ((INTVAL (RTX) >> 16) >> 16)) \
*************** extern int rtx_equal_function_value_matt
*** 3225,3231 ****
    {"arith_operand", {SUBREG, REG, CONST_INT}},				\
    {"arith_reg_dest", {SUBREG, REG}},					\
    {"arith_reg_operand", {SUBREG, REG}},					\
!   {"arith_reg_or_0_operand", {SUBREG, REG, CONST_INT}},			\
    {"binary_float_operator", {PLUS, MULT}},				\
    {"commutative_float_operator", {PLUS, MULT}},				\
    {"extend_reg_operand", {SUBREG, REG, TRUNCATE}},			\
--- 3231,3237 ----
    {"arith_operand", {SUBREG, REG, CONST_INT}},				\
    {"arith_reg_dest", {SUBREG, REG}},					\
    {"arith_reg_operand", {SUBREG, REG}},					\
!   {"arith_reg_or_0_operand", {SUBREG, REG, CONST_INT, CONST_VECTOR}},	\
    {"binary_float_operator", {PLUS, MULT}},				\
    {"commutative_float_operator", {PLUS, MULT}},				\
    {"extend_reg_operand", {SUBREG, REG, TRUNCATE}},			\
Index: config/sh/sh.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/sh/sh.md,v
retrieving revision 1.107
diff -p -r1.107 sh.md
*** config/sh/sh.md	1 Jul 2002 19:41:54 -0000	1.107
--- config/sh/sh.md	2 Jul 2002 17:45:38 -0000
***************
*** 546,552 ****
  ;; There is no way to model this with gcc's function units.  This problem is
  ;; actually mentioned in md.texi.  Tackling this problem requires first that
  ;; it is possible to speak about the target in an open discussion.
! ;;
  ;; However, simple double-precision operations always conflict.

  (define_function_unit "fp"    1 0
--- 546,552 ----
  ;; There is no way to model this with gcc's function units.  This problem is
  ;; actually mentioned in md.texi.  Tackling this problem requires first that
  ;; it is possible to speak about the target in an open discussion.
! ;;
  ;; However, simple double-precision operations always conflict.

  (define_function_unit "fp"    1 0
***************
*** 1048,1054 ****
    "@
  	addz.l	%1, %2, %0
  	addz.l	%1, r63, %0")
!
  (define_insn "adddi3_compact"
    [(set (match_operand:DI 0 "arith_reg_operand" "=r")
  	(plus:DI (match_operand:DI 1 "arith_reg_operand" "%0")
--- 1048,1054 ----
    "@
  	addz.l	%1, %2, %0
  	addz.l	%1, r63, %0")
!
  (define_insn "adddi3_compact"
    [(set (match_operand:DI 0 "arith_reg_operand" "=r")
  	(plus:DI (match_operand:DI 1 "arith_reg_operand" "%0")
***************
*** 1122,1128 ****
    "@
  	add.l	%1, %2, %0
  	addi.l	%1, %2, %0")
!
  (define_insn "*addsi3_compact"
    [(set (match_operand:SI 0 "arith_reg_operand" "=r")
  	(plus:SI (match_operand:SI 1 "arith_operand" "%0")
--- 1122,1128 ----
    "@
  	add.l	%1, %2, %0
  	addi.l	%1, %2, %0")
!
  (define_insn "*addsi3_compact"
    [(set (match_operand:SI 0 "arith_reg_operand" "=r")
  	(plus:SI (match_operand:SI 1 "arith_operand" "%0")
***************
*** 1138,1162 ****

  (define_expand "subdi3"
    [(set (match_operand:DI 0 "arith_reg_operand" "")
! 	(minus:DI (match_operand:DI 1 "arith_reg_operand" "")
  		  (match_operand:DI 2 "arith_reg_operand" "")))]
    ""
    "
  {
    if (TARGET_SH1)
      {
        emit_insn (gen_subdi3_compact (operands[0], operands[1], operands[2]));
        DONE;
      }
  }")
!
  (define_insn "*subdi3_media"
    [(set (match_operand:DI 0 "arith_reg_operand" "=r")
! 	(minus:DI (match_operand:DI 1 "arith_reg_operand" "r")
  		  (match_operand:DI 2 "arith_reg_operand" "r")))]
    "TARGET_SHMEDIA"
!   "sub	%1, %2, %0")
!
  (define_insn "subdi3_compact"
    [(set (match_operand:DI 0 "arith_reg_operand" "=r")
  	(minus:DI (match_operand:DI 1 "arith_reg_operand" "0")
--- 1138,1163 ----

  (define_expand "subdi3"
    [(set (match_operand:DI 0 "arith_reg_operand" "")
! 	(minus:DI (match_operand:DI 1 "arith_reg_or_0_operand" "")
  		  (match_operand:DI 2 "arith_reg_operand" "")))]
    ""
    "
  {
    if (TARGET_SH1)
      {
+       operands[1] = force_reg (DImode, operands[1]);
        emit_insn (gen_subdi3_compact (operands[0], operands[1], operands[2]));
        DONE;
      }
  }")
!
  (define_insn "*subdi3_media"
    [(set (match_operand:DI 0 "arith_reg_operand" "=r")
! 	(minus:DI (match_operand:DI 1 "arith_reg_or_0_operand" "rN")
  		  (match_operand:DI 2 "arith_reg_operand" "r")))]
    "TARGET_SHMEDIA"
!   "sub	%N1, %2, %0")
!
  (define_insn "subdi3_compact"
    [(set (match_operand:DI 0 "arith_reg_operand" "=r")
  	(minus:DI (match_operand:DI 1 "arith_reg_operand" "0")
***************
*** 1558,1564 ****
  					   : \"__sdivsi3\")));

        if (TARGET_SHMEDIA)
! 	last = gen_divsi3_i1_media (operands[0],
  				    Pmode == DImode
  				    ? operands[3]
  				    : gen_rtx_SUBREG (DImode, operands[3],
--- 1559,1565 ----
  					   : \"__sdivsi3\")));

        if (TARGET_SHMEDIA)
! 	last = gen_divsi3_i1_media (operands[0],
  				    Pmode == DImode
  				    ? operands[3]
  				    : gen_rtx_SUBREG (DImode, operands[3],
***************
*** 1771,1777 ****
  		 (sign_extend:DI (match_operand:SI 2 "arith_reg_operand" "r"))))]
    "TARGET_SHMEDIA"
    "muls.l	%1, %2, %0")
!
  (define_insn "mulsidi3_compact"
    [(set (match_operand:DI 0 "arith_reg_operand" "=r")
  	(mult:DI
--- 1772,1778 ----
  		 (sign_extend:DI (match_operand:SI 2 "arith_reg_operand" "r"))))]
    "TARGET_SHMEDIA"
    "muls.l	%1, %2, %0")
!
  (define_insn "mulsidi3_compact"
    [(set (match_operand:DI 0 "arith_reg_operand" "=r")
  	(mult:DI
***************
*** 1841,1847 ****
  		 (zero_extend:DI (match_operand:SI 2 "arith_reg_operand" "r"))))]
    "TARGET_SHMEDIA"
    "mulu.l	%1, %2, %0")
!
  (define_insn "umulsidi3_compact"
    [(set (match_operand:DI 0 "arith_reg_operand" "=r")
  	(mult:DI
--- 1842,1848 ----
  		 (zero_extend:DI (match_operand:SI 2 "arith_reg_operand" "r"))))]
    "TARGET_SHMEDIA"
    "mulu.l	%1, %2, %0")
!
  (define_insn "umulsidi3_compact"
    [(set (match_operand:DI 0 "arith_reg_operand" "=r")
  	(mult:DI
***************
*** 3440,3446 ****
     (set_attr "type" "pcload,move,load,store,move,pcload,move,move")])

  ;; If the output is a register and the input is memory or a register, we have
! ;; to be careful and see which word needs to be loaded first.

  (define_split
    [(set (match_operand:DI 0 "general_movdst_operand" "")
--- 3441,3447 ----
     (set_attr "type" "pcload,move,load,store,move,pcload,move,move")])

  ;; If the output is a register and the input is memory or a register, we have
! ;; to be careful and see which word needs to be loaded first.

  (define_split
    [(set (match_operand:DI 0 "general_movdst_operand" "")
***************
*** 4195,4201 ****
  }")

  ;; If the output is a register and the input is memory or a register, we have
! ;; to be careful and see which word needs to be loaded first.

  (define_split
    [(set (match_operand:DF 0 "general_movdst_operand" "")
--- 4196,4202 ----
  }")

  ;; If the output is a register and the input is memory or a register, we have
! ;; to be careful and see which word needs to be loaded first.

  (define_split
    [(set (match_operand:DF 0 "general_movdst_operand" "")
***************
*** 4392,4398 ****
    DONE;
  }"
    [(set_attr "length" "8")])
!
  (define_expand "movv4sf"
    [(set (match_operand:V4SF 0 "nonimmediate_operand" "=f,f,m")
  	(match_operand:V4SF 1 "nonimmediate_operand" "f,m,f"))]
--- 4393,4399 ----
    DONE;
  }"
    [(set_attr "length" "8")])
!
  (define_expand "movv4sf"
    [(set (match_operand:V4SF 0 "nonimmediate_operand" "=f,f,m")
  	(match_operand:V4SF 1 "nonimmediate_operand" "f,m,f"))]
***************
*** 4444,4450 ****
    DONE;
  }"
    [(set_attr "length" "32")])
!
  (define_expand "movv16sf"
    [(set (match_operand:V16SF 0 "nonimmediate_operand" "=f,f,m")
  	(match_operand:V16SF 1 "nonimmediate_operand" "f,m,f"))]
--- 4445,4451 ----
    DONE;
  }"
    [(set_attr "length" "32")])
!
  (define_expand "movv16sf"
    [(set (match_operand:V16SF 0 "nonimmediate_operand" "=f,f,m")
  	(match_operand:V16SF 1 "nonimmediate_operand" "f,m,f"))]
***************
*** 4499,4505 ****
    REAL_VALUE_FROM_CONST_DOUBLE (value, operands[1]);
    REAL_VALUE_TO_TARGET_SINGLE (value, values);
    operands[2] = GEN_INT (values);
!
    operands[3] = gen_rtx_REG (DImode, true_regnum (operands[0]));
  }")

--- 4500,4506 ----
    REAL_VALUE_FROM_CONST_DOUBLE (value, operands[1]);
    REAL_VALUE_TO_TARGET_SINGLE (value, values);
    operands[2] = GEN_INT (values);
!
    operands[3] = gen_rtx_REG (DImode, true_regnum (operands[0]));
  }")

***************
*** 5410,5416 ****
  	  if (! SYMBOL_REF_FLAG (operands[0]))
  	    {
  	      rtx reg = gen_reg_rtx (Pmode);
!
  	      emit_insn (gen_symGOTPLT2reg (reg, operands[0]));
  	      operands[0] = reg;
  	    }
--- 5411,5417 ----
  	  if (! SYMBOL_REF_FLAG (operands[0]))
  	    {
  	      rtx reg = gen_reg_rtx (Pmode);
!
  	      emit_insn (gen_symGOTPLT2reg (reg, operands[0]));
  	      operands[0] = reg;
  	    }
***************
*** 5634,5640 ****
  	  if (! SYMBOL_REF_FLAG (operands[1]))
  	    {
  	      rtx reg = gen_reg_rtx (Pmode);
!
  	      emit_insn (gen_symGOTPLT2reg (reg, operands[1]));
  	      operands[1] = reg;
  	    }
--- 5635,5641 ----
  	  if (! SYMBOL_REF_FLAG (operands[1]))
  	    {
  	      rtx reg = gen_reg_rtx (Pmode);
!
  	      emit_insn (gen_symGOTPLT2reg (reg, operands[1]));
  	      operands[1] = reg;
  	    }
***************
*** 5841,5847 ****
  	  if (! SYMBOL_REF_FLAG (operands[0]))
  	    {
  	      rtx reg = gen_reg_rtx (Pmode);
!
  	      /* We must not use GOTPLT for sibcalls, because PIC_REG
  		 must be restored before the PLT code gets to run.  */
  	      emit_insn (gen_symGOT2reg (reg, operands[0]));
--- 5842,5848 ----
  	  if (! SYMBOL_REF_FLAG (operands[0]))
  	    {
  	      rtx reg = gen_reg_rtx (Pmode);
!
  	      /* We must not use GOTPLT for sibcalls, because PIC_REG
  		 must be restored before the PLT code gets to run.  */
  	      emit_insn (gen_symGOT2reg (reg, operands[0]));
***************
*** 6167,6173 ****
     (use (label_ref (match_operand 1 "" "")))]
    "TARGET_SHMEDIA"
    "blink	%0, r63")
!
  ;; Call subroutine returning any type.
  ;; ??? This probably doesn't work.

--- 6168,6174 ----
     (use (label_ref (match_operand 1 "" "")))]
    "TARGET_SHMEDIA"
    "blink	%0, r63")
!
  ;; Call subroutine returning any type.
  ;; ??? This probably doesn't work.

***************
*** 6284,6290 ****
  	tr = gen_rtx_SUBREG (GET_MODE (operands[0]), tr, 0);

        insn = emit_move_insn (operands[0], tr);
!
        REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_EQUAL, equiv,
  					    REG_NOTES (insn));

--- 6285,6291 ----
  	tr = gen_rtx_SUBREG (GET_MODE (operands[0]), tr, 0);

        insn = emit_move_insn (operands[0], tr);
!
        REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_EQUAL, equiv,
  					    REG_NOTES (insn));

***************
*** 6370,6379 ****
    if (TARGET_SHMEDIA)
      {
        rtx reg = operands[2];
!
        if (GET_MODE (reg) != DImode)
  	reg = gen_rtx_SUBREG (DImode, reg, 0);
!
        if (flag_pic > 1)
  	emit_insn (gen_movdi_const_32bit (reg, operands[1]));
        else
--- 6371,6380 ----
    if (TARGET_SHMEDIA)
      {
        rtx reg = operands[2];
!
        if (GET_MODE (reg) != DImode)
  	reg = gen_rtx_SUBREG (DImode, reg, 0);
!
        if (flag_pic > 1)
  	emit_insn (gen_movdi_const_32bit (reg, operands[1]));
        else
***************
*** 6391,6397 ****
    REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_EQUAL, XVECEXP (XEXP (operands[1],
  								  0), 0, 0),
  					REG_NOTES (insn));
!
    DONE;
  }")

--- 6392,6398 ----
    REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_EQUAL, XVECEXP (XEXP (operands[1],
  								  0), 0, 0),
  					REG_NOTES (insn));
!
    DONE;
  }")

***************
*** 7231,7237 ****
  				    (match_dup 2))))
  	      (set (reg:SI T_REG)
  		   (ne:SI (ior:SI (match_dup 1) (match_dup 2))
! 			  (const_int 0)))])]
    ""
    "
  {
--- 7232,7238 ----
  				    (match_dup 2))))
  	      (set (reg:SI T_REG)
  		   (ne:SI (ior:SI (match_dup 1) (match_dup 2))
! 			  (const_int 0)))])]
    ""
    "
  {
***************
*** 7282,7288 ****
  				    (match_dup 2))))
  	      (set (reg:SI T_REG)
  		   (ne:SI (ior:SI (match_operand 1 "" "") (match_dup 2))
! 			  (const_int 0)))])]
    "TARGET_SH1"
    "operands[2] = gen_reg_rtx (SImode);")

--- 7283,7289 ----
  				    (match_dup 2))))
  	      (set (reg:SI T_REG)
  		   (ne:SI (ior:SI (match_operand 1 "" "") (match_dup 2))
! 			  (const_int 0)))])]
    "TARGET_SH1"
    "operands[2] = gen_reg_rtx (SImode);")

***************
*** 8279,8285 ****
  ;;   "#"
  ;;   [(set_attr "length" "4")
  ;;    (set_attr "fp_mode" "double")])
! ;;
  ;; (define_split
  ;;   [(set (match_operand:SI 0 "arith_reg_operand" "=r")
  ;; 	(fix:SI (match_operand:DF 1 "arith_reg_operand" "f")))
--- 8280,8286 ----
  ;;   "#"
  ;;   [(set_attr "length" "4")
  ;;    (set_attr "fp_mode" "double")])
! ;;
  ;; (define_split
  ;;   [(set (match_operand:SI 0 "arith_reg_operand" "=r")
  ;; 	(fix:SI (match_operand:DF 1 "arith_reg_operand" "f")))
***************
*** 8320,8326 ****
    "* return output_ieee_ccmpeq (insn, operands);"
    [(set_attr "length" "4")
     (set_attr "fp_mode" "double")])
!
  (define_insn "cmpeqdf_media"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(eq:DI (match_operand:DF 1 "fp_arith_reg_operand" "f")
--- 8321,8327 ----
    "* return output_ieee_ccmpeq (insn, operands);"
    [(set_attr "length" "4")
     (set_attr "fp_mode" "double")])
!
  (define_insn "cmpeqdf_media"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(eq:DI (match_operand:DF 1 "fp_arith_reg_operand" "f")
***************
*** 8806,8815 ****
    "TARGET_SHMEDIA && reload_completed
     && GET_MODE (operands[0]) == GET_MODE (operands[1])
     && VECTOR_MODE_SUPPORTED_P (GET_MODE (operands[0]))
!    && XVECEXP (operands[1], 0, 0) != const0_rtx
!    && (HOST_BITS_PER_WIDE_INT >= 64
!        || HOST_BITS_PER_WIDE_INT >= GET_MODE_BITSIZE (GET_MODE (operands[0]))
!        || sh_1el_vec (operands[1], VOIDmode))"
    [(set (match_dup 0) (match_dup 1))]
    "
  {
--- 8807,8813 ----
    "TARGET_SHMEDIA && reload_completed
     && GET_MODE (operands[0]) == GET_MODE (operands[1])
     && VECTOR_MODE_SUPPORTED_P (GET_MODE (operands[0]))
!    && ! zero_vec_operand (operands[1], VOIDmode)"
    [(set (match_dup 0) (match_dup 1))]
    "
  {
***************
*** 8819,8825 ****

    operands[0] = gen_rtx_REG (new_mode, true_regnum (operands[0]));
    operands[1]
!     = simplify_subreg (new_mode, operands[1], GET_MODE (operands[0]), 0);
  }")

  (define_expand "movv2hi"
--- 8817,8823 ----

    operands[0] = gen_rtx_REG (new_mode, true_regnum (operands[0]));
    operands[1]
!     = simplify_subreg (new_mode, operands[1], GET_MODE (operands[1]), 0);
  }")

  (define_expand "movv2hi"
***************
*** 8878,8884 ****
         || register_operand (operands[1], V2SImode))"
    "@
  	add	%1, r63, %0
! 	movi	%1, %0
  	#
  	ld%M1.q	%m1, %0
  	st%M0.q	%m0, %1"
--- 8876,8882 ----
         || register_operand (operands[1], V2SImode))"
    "@
  	add	%1, r63, %0
! 	#
  	#
  	ld%M1.q	%m1, %0
  	st%M0.q	%m0, %1"
***************
*** 9641,9647 ****
  /* These are useful to expand ANDs and as combiner patterns.  */
  (define_insn "mshfhi_l_di"
    [(set (match_operand:DI 0 "arith_reg_dest" "=r")
! 	(ior:DI (lshiftrt:DI (match_operand:DI 1 "arith_reg_or_0_operand" "rU")
                               (const_int 32))
  		(and:DI (match_operand:DI 2 "arith_reg_or_0_operand" "rU")
  			(const_int -4294967296))))]
--- 9639,9645 ----
  /* These are useful to expand ANDs and as combiner patterns.  */
  (define_insn "mshfhi_l_di"
    [(set (match_operand:DI 0 "arith_reg_dest" "=r")
! 	(ior:DI (lshiftrt:DI (match_operand:DI 1 "arith_reg_or_0_operand" "rU")
                               (const_int 32))
  		(and:DI (match_operand:DI 2 "arith_reg_or_0_operand" "rU")
  			(const_int -4294967296))))]
***************
*** 9653,9663 ****
    [(set (match_operand:DI 0 "arith_reg_dest" "=r")
  	(ior:DI (and:DI (match_operand:DI 1 "arith_reg_or_0_operand" "rU")
  			(const_int -4294967296))
! 		(lshiftrt:DI (match_operand:DI 2 "arith_reg_or_0_operand" "rU")
                               (const_int 32))))]
    "TARGET_SHMEDIA"
    "mshfhi.l	%N2, %N1, %0"
    [(set_attr "type" "arith_media")])

  (define_insn "mshflo_l_di"
    [(set (match_operand:DI 0 "arith_reg_dest" "=r")
--- 9651,9680 ----
    [(set (match_operand:DI 0 "arith_reg_dest" "=r")
  	(ior:DI (and:DI (match_operand:DI 1 "arith_reg_or_0_operand" "rU")
  			(const_int -4294967296))
! 		(lshiftrt:DI (match_operand:DI 2 "arith_reg_or_0_operand" "rU")
                               (const_int 32))))]
    "TARGET_SHMEDIA"
    "mshfhi.l	%N2, %N1, %0"
    [(set_attr "type" "arith_media")])
+
+ (define_split
+   [(set (match_operand:DI 0 "arith_reg_dest" "")
+ 	(ior:DI (zero_extend:DI (match_operand:SI 1
+ 					      "extend_reg_or_0_operand" ""))
+ 		(and:DI (match_operand:DI 2 "arith_reg_or_0_operand" "")
+ 			(const_int -4294967296))))
+    (clobber (match_operand:DI 3 "arith_reg_dest" ""))]
+   "TARGET_SHMEDIA"
+   [(const_int 0)]
+   "
+ {
+   emit_insn (gen_ashldi3_media (operands[3],
+ 				simplify_gen_subreg (DImode, operands[1],
+ 						     SImode, 0),
+ 				GEN_INT (32)));
+   emit_insn (gen_mshfhi_l_di (operands[0], operands[3], operands[2]));
+   DONE;
+ }")

  (define_insn "mshflo_l_di"
    [(set (match_operand:DI 0 "arith_reg_dest" "=r")

From-SVN: r55189
2002-07-02 19:45:49 +01:00
Paolo Carlini
d16ecaec1d re PR libstdc++/6642 (Constness prevents substraction of iterators)
2002-07-02  Paolo Carlini  <pcarlini@unitus.it>

	PR libstdc++/6642
	* include/bits/stl_iterator.h
	(__normal_iterator::operator-(const __normal_iterator&)):
	Make non-member, as already happens for the comparison
	operators in accord with DR179 (Ready).
	* testsuite/24_iterators/iterator.cc: Add test from the PR.

From-SVN: r55188
2002-07-02 18:42:58 +00:00
Nathanael Nerode
981869348c Makefile.in: Don't try to build gdbtest, tgas, ispell, inet, or cvs[src].
* Makefile.in: Don't try to build gdbtest, tgas, ispell, inet, or
	cvs[src].
	* configure.in: Ditto.

(also fix obvious typo in ChangeLog)

From-SVN: r55187
2002-07-02 18:01:37 +00:00
Andrew Haley
6ac0c1e36f inline.java: New file.
2002-07-02  Andrew Haley  <aph@redhat.com>

        * libjava.lang/inline.java: New file.
        * libjava.lang/inline.out: Likewise.

        * libjava.lang/Array_3.java: Add another case.

From-SVN: r55186
2002-07-02 17:21:10 +00:00
Neil Booth
49e7b251ee cppinit.c (cpp_handle_option): Suppress warnings with an implicit "-w" for "-M" and "-MM".
* cppinit.c (cpp_handle_option):  Suppress warnings with an
	implicit "-w" for "-M" and "-MM".
doc:
	* cppopts.texi: Update.
testsuite:
	* gcc.dg/cpp/cmdlne-M.c: New test.

From-SVN: r55185
2002-07-02 17:06:03 +00:00
Kriang Lerdsuwanakij
06728f70cf Correct changed function name.
From-SVN: r55184
2002-07-02 16:10:00 +00:00
Kriang Lerdsuwanakij
04c4491db6 typeck2.c (incomplete_type_error): Fix typo caused by CVS conflict in my last patch.
* typeck2.c (incomplete_type_error): Fix typo caused by
	CVS conflict in my last patch.

From-SVN: r55183
2002-07-02 16:06:49 +00:00
Kriang Lerdsuwanakij
17f296378b re PR c++/6716 (loop and fill ram during compiling)
PR c++/6716
	* pt.c (can_complete_type_without_circularity): New function.
	(instantiate_class_template): Use it.
	* typeck2.c (incomplete_type_error): Improve error message
	due to incomplete fields.

	* g++.dg/template/instantiate1.C: New test.

From-SVN: r55182
2002-07-02 15:56:01 +00:00
GCC Administrator
7c1c5ccec8 Daily bump.
From-SVN: r55179
2002-07-02 07:19:51 +00:00
Phil Edwards
2f235b6d54 re PR libstdc++/7173 (_GLIBCPP_VERSION ="" on the 3.1 branch)
2002-07-02  Phil Edwards  <pme@gcc.gnu.org>

	PR libstdc++/7173
	* acinclude.m4:  Simplify determination of gcc_version, and move
	up to GLIBCPP_CONFIGURE.
	* configure.in (release_VERSION):  Really remove.
	(AM_INIT_AUTOMAKE, AM_CONFIG_HEADER):  Move after GLIBCPP_CONFIGURE.
	* aclocal.m4, configure:  Regenerate.

From-SVN: r55174
2002-07-02 06:39:04 +00:00
Phil Edwards
fc7f0a806c configopts.html, [...]: Tweaks.
2002-07-02  Phil Edwards  <pme@gcc.gnu.org>

	* docs/html/configopts.html, docs/html/install.html:  Tweaks.
	* include/ext/algorithm, include/ext/hash_map, include/ext/hash_set,
	include/ext/iterator, include/ext/numeric, include/ext/rb_tree,
	include/ext/slist, include/ext/stl_rope.h:  Add doxygen hooks.

From-SVN: r55172
2002-07-02 06:17:36 +00:00
Roger Sayle
a3acdc0cc1 sh.c (sh_media_init_builtins): Change use of poisoned identifier "bzero" to "memset".
* config/sh/sh.c (sh_media_init_builtins): Change use of poisoned
	identifier "bzero" to "memset".  Pass extra NULL_TREE argument to
	builtin_function.

From-SVN: r55171
2002-07-02 04:01:04 +00:00
Mark Mitchell
32131e44f5 * g++.dg/template/sizeof2.C: New test.
From-SVN: r55170
2002-07-02 03:19:37 +00:00
Mark Mitchell
5d69ba1faa re PR c++/7112 (Regression: ICE on C++ code involving templates and sizeof)
PR c++/7112
	* g++.dg/template/sizeof2.C: New test.

	PR c++/7112
	* mangle.c (write_expression): Add mangling for sizeof when
	applied to a type.
	* operators.def: Remove stale comment.

	* cp-demangle.c (demangle_operator_name): Add type_arg parameter.
	Set it for the "st" operator.
	(demangle_expression): Handle expressions with types as arguments.

From-SVN: r55169
2002-07-02 03:19:22 +00:00
Tom Tromey
68a830fe3a For PR libgcj/7073:
* parse.y (patch_incomplete_class_ref): Handle VOID_TYPE
	specially.

From-SVN: r55167
2002-07-02 02:56:11 +00:00
Tom Tromey
49925aed13 re PR libgcj/7180 (possible bug in javax.naming.spi.NamingManager.getPlusPath())
* javax/naming/spi/NamingManager.java (getPlusPath): Don't create
	StringTokenizer on null string.  For PR libgcj/7180.
	From daveho@cs.umd.edu.

From-SVN: r55166
2002-07-02 02:46:27 +00:00
Devang Patel
615ae4553a MAINTAINERS (Write After Approval): Add self.
From-SVN: r55165
2002-07-01 18:38:58 -07:00
Alan Modra
0b558962c1 * README.Portability: Fix typos.
From-SVN: r55164
2002-07-02 09:45:42 +09:30
Hans-Peter Nilsson
9a81c5b711 re PR target/7177 (cris-axis-elf: ICE at -O2, unrecognized insn, sign-extend mem)
PR target/7177
	* config/cris/cris.h (LEGITIMIZE_RELOAD_ADDRESS): Correct number
	of indirections for register inside sign-extended mem part.

From-SVN: r55163
2002-07-01 23:18:33 +00:00
DJ Delorie
2a91582c04 Formatting change
From-SVN: r55162
2002-07-01 19:16:30 -04:00
Roger Sayle
6a2dd09a65 tree.h: Modify builtin_function interface to take an extra argument ATTRS...
* tree.h:  Modify builtin_function interface to take an extra
	argument ATTRS, which is a tree representing an attribute list.

	* c-decl.c (builtin_function): Accept additional parameter.
	* objc/objc-act.c (builtin_function): Likewise.
	* f/com.c (builtin_function): Likewise.
	* java/decl.c (builtin_function): Likewise.
	* ada/utils.c (builtin_function): Likewise.
	* cp/decl.c (builtin_function): Likewise.
	(builtin_function_1): Likewise.

	* c-common.c (c_common_nodes_and_builtins): Pass an additional
	NULL_TREE argument to builtin_function.  (builtin_function_2):
	Likewise.
	* cp/call.c (build_java_interface_fn_ref): Likewise.
	* objc/objc-act.c (synth_module_prologue): Likewise.
	* java/decl.c (java_init_decl_processing): Likewise.
	* f/com.c (ffe_com_init_0): Likewise.

	* config/alpha/alpha.c (alpha_init_builtins): Pass an additional
	NULL_TREE argument builtin_function.
	* config/arm/arm.c (def_builtin): Likewise.
	* config/c4x/c4x.c (c4x_init_builtins): Likewise.
	* config/i386/i386.c (def_builtin): Likewise.
	* config/ia64/ia64.c (def_builtin): Likewise.
	* config/rs6000/rs6000.c (def_builtin): Likewise.

From-SVN: r55161
2002-07-01 23:07:19 +00:00
Matt Kraai
eebd288ac7 * MAINTAINERS (Write After Approval): Update my e-mail address.
From-SVN: r55160
2002-07-01 22:51:10 +00:00
Nathanael Nerode
3ab36f05d6 Wipe out apache.
Wipe out apache.  Don't configure cgen from the top level; that part is
simply pulled over from src.

From-SVN: r55159
2002-07-01 22:40:12 +00:00
Zack Weinberg
e20569ae80 t-ip2k: Remove LIBGCC1, CROSS_LIBGCC1, and LIBGCC1_TEST.
* config/ip2k/t-ip2k: Remove LIBGCC1, CROSS_LIBGCC1, and LIBGCC1_TEST.
	* config/mips/t-isa3264: Likewise.
	* config/mmix/t-mmix: Likewise.

From-SVN: r55156
2002-07-01 21:21:37 +00:00
John David Anglin
f1b690f105 * emit-rtl.c (init_emit_once): Add missing cast to HOST_WIDE_INT.
From-SVN: r55155
2002-07-01 21:13:00 +00:00
Nathanael Nerode
55380b08d8 Reorganize, remove now-redundant tests.
From-SVN: r55154
2002-07-01 21:01:48 +00:00
Roger Sayle
6bfa5aac87 re PR rtl-optimization/4046 (redundant conditional branch)
PR opt/4046
	* fold-const.c (fold) [COND_EXPR]: Simplify A ? 0 : 1 to !A,
	A ? B : 0 to A && B and A ? B : 1 into !A || B if both A and
	B are truth values.

From-SVN: r55153
2002-07-01 20:59:00 +00:00
Nathanael Nerode
9a5c1b9db1 Kill last references to LIBGCC1_TEST, which is never tested and never set to anything but "".
Kill last references to LIBGCC1_TEST, which is never tested and never
set to anything but "".  Oy.

From-SVN: r55152
2002-07-01 20:51:20 +00:00
Matt Kraai
3b2124df5f README.Portability (Function prototypes): Give an example of declaring and defining a function with no arguments.
* README.Portability (Function prototypes): Give an example of
	declaring and defining a function with no arguments.

From-SVN: r55151
2002-07-01 20:24:41 +00:00
Matt Kraai
d3fc4dbce0 README.Portability (Function prototypes): Document new variable-argument function macros.
* README.Portability (Function prototypes): Document new
	variable-argument function macros.

From-SVN: r55150
2002-07-01 20:09:52 +00:00
Nathanael Nerode
5fd3853ac3 config-ml.in doesn't need to worry about cygnus configure
From-SVN: r55149
2002-07-01 19:59:22 +00:00
Benjamin Kosnik
eafa1afac6 strstream: Remove namespace std.
2002-07-01  Benjamin Kosnik  <bkoz@redhat.com>

	* include/backward/strstream: Remove namespace std. Transfer to...
	* include/backward/strstream.h: ...here. Qualify std names.
	* src/strstream.cc: Remove namespace std.
	* include/Makefile.am (backward_headers): Remove strstream.h.
	* include/Makefile.in: Regenerate.
	* config/linker-map.gnu: Export strstream bits.

	* src/fstream-inst.cc: Tweak.
	* src/io-inst.cc: Same.
	* src/istream-inst.cc: Same.
	* src/misc-inst.cc: Same.
	* src/ostream-inst.cc: Same.
	* src/sstream-inst.cc: Same.
	* src/valarray-inst.cc: Same.
	* src/misc-inst.cc: Remove unused instantiations.

From-SVN: r55148
2002-07-01 19:58:42 +00:00
J"orn Rennecke
c1b92d0906 sh.c (langhooks.h): Include.
* sh.c (langhooks.h): Include.
	(sh_init_builtins, sh_media_init_builtins): New functions.
	(sh_expand_builtin, arith_reg_dest,and_operand): Likewise.
	(mextr_bit_offset, extend_reg_operand, zero_vec_operand): Likewise.
	(sh_rep_vec, sh_1el_vec, sh_const_vec): Likewise.
	(builtin_description): New struct tag.
	(signature_args, bdesc): New arrays.
	(TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): Undef / define.
	(print_operand): Add 'N' modifier.
	* sh.h (VECTOR_MODE_SUPPORTED_P): Add SHmedia vector modes.
	(EXTRA_CONSTRAINT_U, EXTRA_CONSTRAINT_W): New macros.
	(EXTRA_CONSTRAINT): Add 'U' and 'W' cases.
	(CONST_COSTS): Add special case for SHmedia AND.
	(PREDICATE_CODES): Add and_operand, arith_reg_dest,
	extend_reg_operand, extend_reg_or_0_operand, mextr_bit_offset,
	sh_const_vec, sh_1el_vec, sh_rep_vec, zero_vec_operand.
	target_operand can also be const or unspec.
	* sh.md (UNSPEC_INIT_TRAMP, UNSPEC_FCOSA UNSPEC_FSRRA): New constants.
	(UNSPEC_FSINA, UNSPEC_NSB, UNSPEC_ALLOCO): Likewise.
	(attribute type): Add new types.
	(anddi3): Add splitter.
	(movdi_const_16bit+1): Add code to handle vector constants and
	bitmasks efficiently.
	(shori_media): Have generator function made.
	(movv8qi, movv8qi_i, movv8qi_i+1, movv8qi_i+2): New patterns.
	(movv8qi_i+3, movv2hi, movv2hi_i, movv4hi, movv4hi_i): Likewise.
	(movv2si, movv2si_i, absv2si2, absv4hi2, addv2si3, addv4hi3): Likewise.
	(ssaddv2si3, usaddv8qi3, ssaddv4hi3, negcmpeqv8qi): Likewise.
	(negcmpeqv2si, negcmpeqv4hi, negcmpgtuv8qi, negcmpgtv2si): Likewise.
	(negcmpgtv4hi, mcmv, mcnvs_lw, mcnvs_wb, mcnvs_wub): Likewise.
	(mextr_rl, mextr_lr, mextr1, mextr2, mextr3, mextr4, mextr5): Likewise.
	(mextr6, mextr7, mmacfx_wl, mmacfx_wl_i, mmacnfx_wl): Likewise.
	(mmacnfx_wl_i, mulv2si3, mulv4hi3, mmulfx_l, mmulfx_w): Likewise.
	(mmulfxrp_w, mmulhi_wl, mmullo_wl, mmul23_wl, mmul01_wl): Likewise.
	(mmulsum_wq, mmulsum_wq_i, mperm_w, mperm_w_little): LIkewise.
	(mperm_w_big, mperm_w0, msad_ubq, msad_ubq_i, mshalds_l): Likewise.
	(mshalds_w, ashrv2si3, ashrv4hi3, mshards_q, mshfhi_b): Likewise.
	(mshflo_b,  mshf4_b, mshf0_b, mshfhi_l, mshflo_l, mshf4_l): Likewsie.
	(mshf0_l, mshfhi_w, mshflo_w, mshf4_w, mshf0_w, mshfhi_l_di): Likewise.
	(mshfhi_l_di_rev, mshflo_l_di, mshflo_l_di_rev): Likewise.
	(mshflo_l_di_x, mshflo_l_di_x_rev, ashlv2si3, ashlv4hi3): Likewise.
	(lshrv2si3, lshrv4hi3, subv2si3, subv4hi3, sssubv2si3): Likewise.
	(ussubv8qi3, sssubv4hi3, fcosa_s, fsina_s, fipr, fsrra_s): Likewise.
	(ftrv): Likewise.

	(fpu_switch+1, fpu_switch+2): Remove constraint.

From-SVN: r55147
2002-07-01 20:41:54 +01:00
Neil Booth
7098b619a0 cmdlne-dD.c, [...]: New tests.
* gcc.dg/cpp/trad/cmdlne-dD.c, gcc.dg/cpp/trad/cmdlne-dM.c,
	gcc.dg/cpp/trad/include.c: New tests.

From-SVN: r55146
2002-07-01 19:41:52 +00:00
Hans-Peter Nilsson
0a220b4a53 re PR target/7177 (cris-axis-elf: ICE at -O2, unrecognized insn, sign-extend mem)
PR target/7177
	* gcc.c-torture/compile/20020701-1.c: New test.

From-SVN: r55143
2002-07-01 19:39:44 +00:00
Stan Shebs
bbeb33f262 objc.exp (objc_target_compile): Add the -I path to ObjC header here...
* lib/objc.exp (objc_target_compile): Add the -I path to ObjC
        header here...
        * lib/objc-torture.exp (objc-torture-compile): ...instead of here
        (objc-torture-execute): or here.

From-SVN: r55142
2002-07-01 18:54:39 +00:00
Aldy Hernandez
97ebc06f5d tree.c (build_function_type_list): Update function comment.
2002-07-01  Aldy Hernandez  <aldyh@redhat.com>

        * tree.c (build_function_type_list): Update function comment.
        Rename first argument to return_type.

From-SVN: r55141
2002-07-01 18:40:24 +00:00
Benjamin Kosnik
9035b63a14 configure.in (libtool_VERSION): Bump to 5:0:0.
2002-07-01  Benjamin Kosnik  <bkoz@redhat.com>

	* configure.in (libtool_VERSION): Bump to 5:0:0.
	* configure: Regenerate.

From-SVN: r55140
2002-07-01 18:08:25 +00:00
Neil Booth
353a10d056 Makefile.in: Remove all trace of tradcpp.c, tradcpp.h, tradcif.y and related files.
* Makefile.in: Remove all trace of tradcpp.c, tradcpp.h,
	tradcif.y and related files.

From-SVN: r55139
2002-07-01 16:13:01 +00:00
Nathanael Nerode
cfefc43445 Remove references to building emacs from top level Makefile.in.
From-SVN: r55138
2002-07-01 15:59:58 +00:00
J"orn Rennecke
03c5327857 * gcc.c-torture/execute/arith-rand-ll.c: New test.
From-SVN: r55136
2002-07-01 16:12:49 +01:00
Neil Booth
e34cabb3b7 cpptrad.c (skip_whitespace): Pass pointer to prior char.
* cpptrad.c (skip_whitespace): Pass pointer to prior char.
testsuite:
	* gcc.dg/cpp/trad/escaped-nl.c: New test.

From-SVN: r55135
2002-07-01 12:51:10 +00:00
Neil Booth
590e1987d2 * cppmacro.c: Forgotten commit.
From-SVN: r55134
2002-07-01 12:47:54 +00:00
Kaveh R. Ghazi
8bf3ccbbbd * mips.h (FUNCTION_ARG_REGNO_P): Fix parentheses.
From-SVN: r55133
2002-07-01 12:13:03 +00:00
GCC Administrator
0201312b89 Daily bump.
From-SVN: r55132
2002-07-01 07:17:09 +00:00
Douglas B Rupp
7fda878c25 configure.in (OUTPUT_OPTION,NO_MINUS_C_MINUS_O): Configure.
2002-06-30  Douglas Rupp  <rupp@gnat.com>

	* configure.in (OUTPUT_OPTION,NO_MINUS_C_MINUS_O): Configure.
	* Makefile.in (OUTPUT_OPTION): Use.

From-SVN: r55127
2002-07-01 05:38:50 +00:00
T.J. Mather
32c4621e89 gcj.texi: Fixed gcj invocation example so that it compiles.
2002-06-29  T.J. Mather  <tjmather@maxmind.com>

	* gcj.texi: Fixed gcj invocation example so that it compiles.

From-SVN: r55126
2002-07-01 04:48:39 +01:00
Devang Patel
118f8dc12c objc-act.c (finish_file): Avoid finish_objc() if -fsyntax-only.
2002-06-30  Devang Patel  <dpatel@apple.com>

        * objc/objc-act.c (finish_file): Avoid finish_objc() if
        -fsyntax-only.

2002-06-30  Devang Patel  <dpatel@apple.com>

        * objc.dg/fsyntax-only.m: New test.

From-SVN: r55125
2002-07-01 00:43:41 +00:00
Nathan Sidwell
d689a8f192 cp-tree.h (CPTI_TINFO_DECL_TYPE): Replace with ...
* cp-tree.h (CPTI_TINFO_DECL_TYPE): Replace with ...
	(CPTI_TYPE_INFO_PTR_TYPE): ... this.
	(tinfo_decl_type): Replace with ...
	(type_info_ptr_type): ... this.
	(import_export_tinfo): Declare.
	(tinfo_decl_p): Rename to ...
	(unemitted_tinfo_decl_p): ... this.
	* decl2.c (import_export_decl): Break out tinfo handling into ...
	(import_export_tinfo): ... here. New function.
	(finish_file): Adjust.
	* rtti.c (TINFO_REAL_NAME): New macro.
	(init_rtti_processing): Create the tinfo types.
	(get_tinfo_decl_dynamic): Use type_info_ptr_type, get_tinfo_ptr.
	(get_tinfo_decl): Adjust.
	(get_tinfo_ptr): New function.
	(get_type_id): Use it.
	(tinfo_base_init): Create vtable decl here, if it doesn't exist.
	(ptr_initializer): Use get_tinfo_ptr.
	(ptm_initializer): Likewise.
	(synthesize_tinfo_var): Break into ...
	(get_pseudo_ti_init): ... this. Just create the initializer.
	(get_pseudo_ti_desc): .. and this.
	(create_real_tinfo_var): Remove.
	(create_pseudo_type_info): Don't create the vtable decl here.
	(get_vmi_pseudo_type_info): Remove.
	(create_tinfo_types): Adjust.
	(tinfo_decl_p): Rename to ...
	(unemitted_tinfo_decl_p): ... here. Adjust.
	(emit_tinfo_decl): Adjust. Create the initializer.

From-SVN: r55124
2002-06-30 20:41:38 +00:00