OSDN Git Service

entered into RCS
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 May 1992 07:16:30 +0000 (07:16 +0000)
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 May 1992 07:16:30 +0000 (07:16 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@899 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/config/ns32k/ns32k.c

index 8dd0f03..becf406 100644 (file)
@@ -38,102 +38,76 @@ void
 trace (s, s1, s2)
      char *s, *s1, *s2;
 {
-    fprintf (stderr, s, s1, s2);
+  fprintf (stderr, s, s1, s2);
 }
 
 /* Value is 1 if hard register REGNO can hold a value of machine-mode MODE. */ 
 
 int
-hard_regno_mode_ok( regno, mode )
-int regno;
-int mode;
+hard_regno_mode_ok (regno, mode)
+     int regno;
+     int mode;
 {
-       switch( mode ) {
-               case QImode:
-               case HImode:
-               case PSImode:
-               case SImode:
-               case PDImode:
-               case VOIDmode:
-               case BLKmode:
-                       if( (regno < 8) || (regno == 16) || (regno == 17) ) {
-                               return( 1 );
-                       }
-                       else {
-                               return( 0 );
-                       }
-
-               case DImode:
-                       if( (regno < 8) && ((regno & 1) == 0) ) {
-                               return( 1 );
-                       }
-                       else {
-                               return( 0 );
-                       }
-
-
-               case SFmode:
-               case SCmode:
-                       if( TARGET_32081 ) {
-                               if( regno < 16 ) {
-                                       return( 1 );
-                               }
-                               else {
-                                       return( 0 );
-                               }
-                       }
-                       else {
-                               if( regno < 8 ) {
-                                       return( 1 );
-                               }
-                               else {
-                                       return( 0 );
-                               }
-                       }
-
-               case DFmode:
-               case DCmode:
-                       if( (regno & 1) == 0 ) {
-                               if( TARGET_32081 ) {
-                                       if( regno < 16 ) {
-                                               return( 1 );
-                                       }
-                                       else {
-                                               return( 0 );
-                                       }
-                               }
-                               else {
-                                       if( regno < 8 ) {
-                                               return( 1 );
-                                       }
-                                       else {
-                                               return( 0 );
-                                       }
-                               }
-                       }
-                       else {
-                               return( 0 );
-                       }
-               case XFmode:
-                       abort( 0 );
-               case CCmode:
-                       abort( 0 );
-               case TImode:
-                       abort( 0 );
-               case XCmode:    
-                       abort( 0 );
-               case TFmode:
-                       abort( 0 );
-               case TCmode:
-                       abort( 0 );
-
-
-               default:
-                       fprintf( stderr, "cant match mode %d\n", mode );
-                       abort( 0 );
+  switch (mode)
+    {
+    case QImode:
+    case HImode:
+    case PSImode:
+    case SImode:
+    case PDImode:
+    case VOIDmode:
+    case BLKmode:
+      if (regno < 8 || regno == 16 || regno == 17)
+       return 1;
+      else
+       return 0;
+
+    case DImode:
+      if (regno < 8 && (regno & 1) == 0)
+       return 1;
+      else
+       return 0;
+
+    case SFmode:
+    case SCmode:
+      if (TARGET_32081)
+       {
+         if (regno < 16)
+           return 1;
+         else
+           return 0;
+       }
+      else
+       {
+         if (regno < 8)
+           return 1;
+         else 
+           return 0;
+       }
+
+    case DFmode:
+    case DCmode:
+      if ((regno & 1) == 0)
+       {       
+         if (TARGET_32081)
+           {
+             if (regno < 16)
+               return 1;
+             else
+               return 0;
+           }
+         else
+           {
+             if (regno < 8)
+               return 1;
+             else
+               return 0;
+           }
        }
-       abort(0);
+      else
+       return 0;
+    }
+  abort(0);
 }
 
 /* ADDRESS_COST calls this.  This function is not optimal
@@ -201,10 +175,17 @@ secondary_reload_class (class, mode, in)
   if (class == GENERAL_REGS || (regno >= 0 && regno < 8))
     return NO_REGS;
 
-  /* Constants, memory, and FP registers can go into FP registers */
+  /* Constants, memory, and FP registers can go into FP registers */
   if ((regno == -1 || (regno >= 8 && regno < 16)) && (class == FLOAT_REGS))
     return NO_REGS;
 
+#if 0 /* This isn't strictly true (can't move fp to sp or vice versa),
+        so it's cleaner to use PREFERRED_RELOAD_CLASS
+        to make the right things happen.  */
+  if (regno >= 16 && class == GEN_AND_MEM_REGS)
+    return NO_REGS;
+#endif
+
   /* Otherwise, we need GENERAL_REGS. */
   return GENERAL_REGS;
 }