Author: ycwu
Date: 2011-08-24 22:01:39 -0400 (Wed, 24 Aug 2011)
New Revision: 3727

Modified:
   trunk/osprey/common/com/MIPS/targ_const.cxx
   trunk/osprey/common/com/NVISA/targ_const.cxx
   trunk/osprey/common/com/SL/targ_const.cxx
   trunk/osprey/common/com/ia64/targ_const.cxx
   trunk/osprey/common/com/loongson/targ_const.cxx
   trunk/osprey/common/com/ppc32/targ_const.cxx
   trunk/osprey/common/com/x8664/targ_const.cxx
Log:
fixed bug 855
This patch will affect all 7 targets. 
The first hunk of the patch make sure after fuction call Targ_WhirlOp, when 
TCON_I4(c0) is MTYPE_I4 TCON_v1 would be signed extension. it fixed the 
assertion failur error in osprey/common/com/ia64/targ_const.cxx:232
The second hunk of the patch make sure TCON_v1() of machine MTYPE_U1,
MTYPE_U2 and MTYPE_U4 is 0. It fixed the assertion failure error in
osprey/common/com/ia64/targ_const.cxx:242

Code Review by Zhao Min


Modified: trunk/osprey/common/com/MIPS/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/MIPS/targ_const.cxx 2011-08-23 09:58:53 UTC (rev 
3726)
+++ trunk/osprey/common/com/MIPS/targ_const.cxx 2011-08-25 02:01:39 UTC (rev 
3727)
@@ -2109,6 +2109,8 @@
    printf(" 0x%llx (%s)\n",TCON_I8(c0),Mtype_Name(TCON_ty(c0)));
 #endif
 
+   if(TCON_ty(c0) == MTYPE_I4)
+     TCON_v1(c0)=(TCON_I4(c0)<0)?-1:0;
    return c0;
 } /* Targ_WhirlOp */
 
@@ -3143,20 +3145,25 @@
       ErrMsg ( EC_Inv_Mtype, Mtype_Name(ty), "Host_To_Targ" );
 
     case MTYPE_B:
+    case MTYPE_I8:
+    case MTYPE_U8:
+      TCON_ty(c) = ty;
+      TCON_I8(c) = v;
+      return c;
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      TCON_ty(c) = ty;
+      TCON_I4(c) = v;
+      if (TCON_I4(c) < 0 )
+       TCON_v1(c) = -1;  // make sure TCON_v1 sign extension
+      return c;
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
       TCON_ty(c) = ty;
-      TCON_I8(c) = v; /* Don't change the upper bits */
-      return c;
-    case MTYPE_I8:
-    case MTYPE_U8:
-      TCON_ty(c) = ty;
-      TCON_I8(c) = v;
-      return c;
+      TCON_I4(c) = v;
+      return c; 
   }
 } /* Host_To_Targ */
 

Modified: trunk/osprey/common/com/NVISA/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/NVISA/targ_const.cxx        2011-08-23 09:58:53 UTC 
(rev 3726)
+++ trunk/osprey/common/com/NVISA/targ_const.cxx        2011-08-25 02:01:39 UTC 
(rev 3727)
@@ -2123,6 +2123,8 @@
    printf(" 0x%llx (%s)\n",TCON_I8(c0),Mtype_Name(TCON_ty(c0)));
 #endif
 
+   if(TCON_ty(c0) == MTYPE_I4)
+     TCON_v1(c0)=(TCON_I4(c0)<0)?-1:0;
    return c0;
 } /* Targ_WhirlOp */
 
@@ -3250,15 +3252,6 @@
     case MTYPE_V16I4:
 #endif
     case MTYPE_B:
-    case MTYPE_I1:
-    case MTYPE_I2:
-    case MTYPE_I4:
-    case MTYPE_U1:
-    case MTYPE_U2:
-    case MTYPE_U4:
-      TCON_ty(c) = ty;
-      TCON_I8(c) = v; /* Don't change the upper bits */
-      return c;
 #ifdef TARG_SUPPORTS_VECTORS
     case MTYPE_V16I8:
 #endif
@@ -3267,6 +3260,20 @@
       TCON_ty(c) = ty;
       TCON_I8(c) = v;
       return c;
+    case MTYPE_I1:
+    case MTYPE_I2:
+    case MTYPE_I4:
+      TCON_ty(c) = ty;
+      TCON_I4(c) = v;
+      if (TCON_I4(c) < 0 )
+       TCON_v1(c) = -1;  // make sure TCON_v1 sign extension
+      return c;
+    case MTYPE_U1:
+    case MTYPE_U2:
+    case MTYPE_U4:
+      TCON_ty(c) = ty;
+      TCON_I4(c) = v;
+      return c;  
   }
 } /* Host_To_Targ */
 

Modified: trunk/osprey/common/com/SL/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/SL/targ_const.cxx   2011-08-23 09:58:53 UTC (rev 
3726)
+++ trunk/osprey/common/com/SL/targ_const.cxx   2011-08-25 02:01:39 UTC (rev 
3727)
@@ -2113,6 +2113,8 @@
    printf(" 0x%llx (%s)\n",TCON_I8(c0),Mtype_Name(TCON_ty(c0)));
 #endif
 
+   if(TCON_ty(c0) == MTYPE_I4)
+     TCON_v1(c0)=(TCON_I4(c0)<0)?-1:0;
    return c0;
 } /* Targ_WhirlOp */
 
@@ -3147,20 +3149,25 @@
       ErrMsg ( EC_Inv_Mtype, Mtype_Name(ty), "Host_To_Targ" );
 
     case MTYPE_B:
+    case MTYPE_I8:
+    case MTYPE_U8:
+      TCON_ty(c) = ty;
+      TCON_I8(c) = v;
+      return c;
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      TCON_ty(c) = ty;
+      TCON_I4(c) = v;
+      if (TCON_I4(c) < 0 )
+       TCON_v1(c) = -1;  // make sure TCON_v1 sign extension
+      return c;
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
       TCON_ty(c) = ty;
-      TCON_I8(c) = v; /* Don't change the upper bits */
-      return c;
-    case MTYPE_I8:
-    case MTYPE_U8:
-      TCON_ty(c) = ty;
-      TCON_I8(c) = v;
-      return c;
+      TCON_I4(c) = v;
+      return c; 
   }
 } /* Host_To_Targ */
 

Modified: trunk/osprey/common/com/ia64/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/ia64/targ_const.cxx 2011-08-23 09:58:53 UTC (rev 
3726)
+++ trunk/osprey/common/com/ia64/targ_const.cxx 2011-08-25 02:01:39 UTC (rev 
3727)
@@ -2432,6 +2432,8 @@
    printf(" 0x%llx (%s)\n",TCON_I8(c0),Mtype_Name(TCON_ty(c0)));
 #endif
 
+   if(TCON_ty(c0) == MTYPE_I4)
+     TCON_v1(c0)=(TCON_I4(c0)<0)?-1:0;
    return c0;
 } /* Targ_WhirlOp */
 
@@ -3609,20 +3611,25 @@
       ErrMsg ( EC_Inv_Mtype, Mtype_Name(ty), "Host_To_Targ" );
 
     case MTYPE_B:
+    case MTYPE_I8:
+    case MTYPE_U8:
+      TCON_ty(c) = ty;
+      TCON_I8(c) = v;
+      return c;
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      TCON_ty(c) = ty;
+      TCON_I4(c) = v;
+      if (TCON_I4(c) < 0 )
+       TCON_v1(c) = -1;  // make sure TCON_v1 sign extension
+      return c;
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
       TCON_ty(c) = ty;
-      TCON_I8(c) = v; /* Don't change the upper bits */
-      return c;
-    case MTYPE_I8:
-    case MTYPE_U8:
-      TCON_ty(c) = ty;
-      TCON_I8(c) = v;
-      return c;
+      TCON_I4(c) = v;
+      return c; 
   }
 } /* Host_To_Targ */
 

Modified: trunk/osprey/common/com/loongson/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/loongson/targ_const.cxx     2011-08-23 09:58:53 UTC 
(rev 3726)
+++ trunk/osprey/common/com/loongson/targ_const.cxx     2011-08-25 02:01:39 UTC 
(rev 3727)
@@ -2275,6 +2275,8 @@
    printf(" 0x%llx (%s)\n",TCON_I8(c0),Mtype_Name(TCON_ty(c0)));
 #endif
 
+   if(TCON_ty(c0) == MTYPE_I4)
+     TCON_v1(c0)=(TCON_I4(c0)<0)?-1:0;
    return c0;
 } /* Targ_WhirlOp */
 
@@ -3336,20 +3338,25 @@
       ErrMsg ( EC_Inv_Mtype, Mtype_Name(ty), "Host_To_Targ" );
 
     case MTYPE_B:
+    case MTYPE_I8:
+    case MTYPE_U8:
+      TCON_ty(c) = ty;
+      TCON_I8(c) = v;
+      return c;
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      TCON_ty(c) = ty;
+      TCON_I4(c) = v;
+      if (TCON_I4(c) < 0 )
+       TCON_v1(c) = -1;  // make sure TCON_v1 sign extension
+      return c;
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
       TCON_ty(c) = ty;
-      TCON_I8(c) = v; /* Don't change the upper bits */
-      return c;
-    case MTYPE_I8:
-    case MTYPE_U8:
-      TCON_ty(c) = ty;
-      TCON_I8(c) = v;
-      return c;
+      TCON_I4(c) = v;
+      return c; 
   }
 } /* Host_To_Targ */
 

Modified: trunk/osprey/common/com/ppc32/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/ppc32/targ_const.cxx        2011-08-23 09:58:53 UTC 
(rev 3726)
+++ trunk/osprey/common/com/ppc32/targ_const.cxx        2011-08-25 02:01:39 UTC 
(rev 3727)
@@ -2394,6 +2394,8 @@
    printf(" 0x%llx (%s)\n",TCON_I8(c0),Mtype_Name(TCON_ty(c0)));
 #endif
 
+   if(TCON_ty(c0) == MTYPE_I4)
+     TCON_v1(c0)=(TCON_I4(c0)<0)?-1:0;
    return c0;
 } /* Targ_WhirlOp */
 
@@ -3571,20 +3573,25 @@
       ErrMsg ( EC_Inv_Mtype, Mtype_Name(ty), "Host_To_Targ" );
 
     case MTYPE_B:
+    case MTYPE_I8:
+    case MTYPE_U8:
+      TCON_ty(c) = ty;
+      TCON_I8(c) = v;
+      return c;
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      TCON_ty(c) = ty;
+      TCON_I4(c) = v;
+      if (TCON_I4(c) < 0 )
+       TCON_v1(c) = -1;  // make sure TCON_v1 sign extension
+      return c;
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
       TCON_ty(c) = ty;
-      TCON_I8(c) = v; /* Don't change the upper bits */
-      return c;
-    case MTYPE_I8:
-    case MTYPE_U8:
-      TCON_ty(c) = ty;
-      TCON_I8(c) = v;
-      return c;
+      TCON_I4(c) = v;
+      return c; 
   }
 } /* Host_To_Targ */
 

Modified: trunk/osprey/common/com/x8664/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/x8664/targ_const.cxx        2011-08-23 09:58:53 UTC 
(rev 3726)
+++ trunk/osprey/common/com/x8664/targ_const.cxx        2011-08-25 02:01:39 UTC 
(rev 3727)
@@ -2480,6 +2480,8 @@
    printf(" 0x%llx (%s)\n",TCON_I8(c0),Mtype_Name(TCON_ty(c0)));
 #endif
 
+   if(TCON_ty(c0) == MTYPE_I4)
+     TCON_v1(c0)=(TCON_I4(c0)<0)?-1:0;
    return c0;
 } /* Targ_WhirlOp */
 
@@ -3736,21 +3738,26 @@
     case MTYPE_M8I2:
     case MTYPE_M8I1:
     case MTYPE_B:
+    case MTYPE_V16I8:
+    case MTYPE_I8:
+    case MTYPE_U8:
+      TCON_ty(c) = ty;
+      TCON_I8(c) = v;
+      return c;
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      TCON_ty(c) = ty;
+      TCON_I4(c) = v;
+      if (TCON_I4(c) < 0 )
+       TCON_v1(c) = -1;  // make sure TCON_v1 sign extension
+      return c;
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
       TCON_ty(c) = ty;
-      TCON_I8(c) = v; /* Don't change the upper bits */
+      TCON_I4(c) = v;
       return c;
-    case MTYPE_V16I8:
-    case MTYPE_I8:
-    case MTYPE_U8:
-      TCON_ty(c) = ty;
-      TCON_I8(c) = v;
-      return c;
   }
 } /* Host_To_Targ */
 


------------------------------------------------------------------------------
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management 
Up to 160% more powerful than alternatives and 25% more efficient. 
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to