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