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
[email protected]
https://lists.sourceforge.net/lists/listinfo/open64-devel