This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: alphaev6-unknown-linux-gnu: error in extract_insn, at recog.c:2127


On Wed, Jul 25, 2001 at 02:49:44PM +0200, Toon Moene wrote:
> stsbod.f:402: Unrecognizable insn:
> (insn 6894 6893 6895 (set (reg:DF 2520)
>         (ge:DF (reg:DF 2073)
>             (const_double:DF (cc0) 0 [0x0] 0 [0x0] [0]))) -1 (nil)

This one is a bit different -- it's a latent bug in the backend.


r~


        * config/alpha/alpha.c (alpha_emit_conditional_move): Always
        swap GE/GT if its an fp comparison.

Index: alpha.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/alpha/alpha.c,v
retrieving revision 1.175
diff -c -p -d -r1.175 alpha.c
*** alpha.c	2001/07/22 16:02:06	1.175
--- alpha.c	2001/07/25 17:32:16
*************** alpha_emit_setcc (code)
*** 1905,1911 ****
        break;
  
      case GE:  case GT: case GEU:  case GTU:
!       /* These are normally need swapping, but for integer zero we have
  	 special patterns that recognize swapped operands.  */
        if (!fp_p && op1 == const0_rtx)
  	break;
--- 1905,1911 ----
        break;
  
      case GE:  case GT: case GEU:  case GTU:
!       /* These normally need swapping, but for integer zero we have
  	 special patterns that recognize swapped operands.  */
        if (!fp_p && op1 == const0_rtx)
  	break;
*************** alpha_emit_conditional_move (cmp, mode)
*** 1996,2003 ****
  	  break;
  
  	case GE: case GT: case GEU: case GTU:
! 	  /* These must be swapped.  */
! 	  if (op1 == CONST0_RTX (cmp_mode))
  	    cmp_code = code, code = NE;
  	  else
  	    {
--- 1996,2004 ----
  	  break;
  
  	case GE: case GT: case GEU: case GTU:
! 	  /* These normally need swapping, but for integer zero we have
! 	     special patterns that recognize swapped operands.  */
! 	  if (!fp_p && op1 == const0_rtx)
  	    cmp_code = code, code = NE;
  	  else
  	    {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]