This is the mail archive of the gcc-patches@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: mips-sgi-irix6.2 RTL check testsuite failures


On Wed, Jul 12, 2000 at 06:35:38PM -0500, Clinton Popetz wrote:
> On Wed, Jul 12, 2000 at 10:32:20AM -0400, Kaveh R. Ghazi wrote:
> > The following are testsuite failures exposed by RTL checking on
> > mips-sgi-irix6.2:
> > gcc.c-torture/execute/struct-ret-1.c:40: RTL check: expected code `reg', have `parallel'
> > gcc.c-torture/unsorted/s.c:24: RTL check: expected code `reg', have `parallel'
> > gcc.c-torture/unsorted/structret.c:26: RTL check: expected code `reg', have `parallel'
> > g++.old-deja/g++.pt/alignof.C:14: RTL check: expected code `reg', have `parallel'
> > g++.old-deja/g++.pt/t21.C:4: RTL check: expected code `reg', have `parallel'
> > g++.old-deja/g++.pt/t21.C:4: Internal compiler error in `mips_expand_prologue', at config/mips/mips.c:7007
> > g++.old-deja/g++.pt/t28.C:4: RTL check: expected code `reg', have `parallel'
> > g++.old-deja/g++.pt/t28.C:4: Internal compiler error in `mips_expand_prologue', at config/mips/mips.c:7007
> 
> These were all from the same bug...the Irix abi has a bizarre
> requirement to break up an argument struct into chunks when it
> contains a double, and mips_expand_prologue couldn't handle this.
> 
> Kaveh, can you try to bootstrap with the below change?  The Irix box I
> have access to is running out of space, and is abysmally slow as well.
> 
> There is still one rtl-checking failure (950612-1.c) that I'll see if
> I can fix later tonight.
> 
> 				-Clint
> 
> Wed Jul 12 18:24:37 CDT 2000  Clinton Popetz  <cpopetz@cygnus.com>
> 
> 	* mips.c (mips_expand_prologue): Handle the case when 
> 	FUNCTION_ARG returns a parallel, which happens for the n32/n64
> 	ABI when passing a structure that contains a double.
> 
> 
> Index: config/mips/mips.c
> ===================================================================
> RCS file: /cvs/gcc/egcs/gcc/config/mips/mips.c,v
> retrieving revision 1.91
> diff -c -2 -p -r1.91 mips.c
> *** mips.c	2000/07/11 21:30:23	1.91
> --- mips.c	2000/07/12 23:19:18
> *************** mips_expand_prologue ()
> *** 6997,7009 ****
>   	  else
>   	    {
> ! 	      int words;
> ! 	  
> ! 	      /* passed in a register, so will get homed automatically */
> ! 	      if (GET_MODE (entry_parm) == BLKmode)
> ! 		words = (int_size_in_bytes (passed_type) + 3) / 4;
> ! 	      else
> ! 		words = (GET_MODE_SIZE (GET_MODE (entry_parm)) + 3) / 4;
>   
> ! 	      regno = REGNO (entry_parm) + words - 1;
>   	    }
>   	}
> --- 6997,7021 ----
>   	  else
>   	    {
> ! 	      if (GET_CODE (entry_parm) == REG)
> ! 		{
> ! 	          int words;
> ! 		  /* passed in a register, so will get homed automatically */
> ! 		  if (GET_MODE (entry_parm) == BLKmode)
> ! 		    words = (int_size_in_bytes (passed_type) + 3) / 4;
> ! 		  else
> ! 		    words = (GET_MODE_SIZE (GET_MODE (entry_parm)) + 3) / 4;
>   
> ! 		  regno = REGNO (entry_parm) + words - 1;
> ! 		}
> ! 	      else if (GET_CODE (entry_parm) == PARALLEL)
> ! 		{
> ! 		  rtx reg = XEXP (XVECEXP (entry_parm, 0, 
> ! 			      		   XVECLEN (entry_parm, 0) - 1),0);
> ! 		  regno = REGNO (reg) + 
> ! 		      (GET_MODE_SIZE (GET_MODE (reg)) + 3) / 4;;
> ! 		}
> ! 	      else 
> ! 		abort ();
> ! 
>   	    }
>   	}

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