Index: osprey/common/com/ia64/targ_const.cxx
===================================================================
--- osprey/common/com/ia64/targ_const.cxx	(revision 3575)
+++ osprey/common/com/ia64/targ_const.cxx	(working copy)
@@ -223,6 +223,16 @@
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      // since I1/I2/I4 is negative and sign extend to I8
+      // then store to TCON, tcon_v1 wil be 0xffffffff
+      if (((mINT32)TCON_v0(*tc)) < 0) {
+        Is_True ( ((mINT32)TCON_v1(*tc) == ((mINT32)-1)) &&
+                 ((TCON_v2(*tc)|TCON_v3(*tc)) == 0),
+	       ("TCONV_1 is not -1 or high order word of %s TCON non zero %x",
+		  Mtype_Name(TCON_ty(*tc)), TCON_v1(*tc)) );
+        break;
+      }
+      /* fall thru */
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
Index: osprey/common/com/loongson/targ_const.cxx
===================================================================
--- osprey/common/com/loongson/targ_const.cxx	(revision 3575)
+++ osprey/common/com/loongson/targ_const.cxx	(working copy)
@@ -231,6 +231,16 @@
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      // since I1/I2/I4 is negative and sign extend to I8
+      // then store to TCON, tcon_v1 wil be 0xffffffff
+      if (((mINT32)TCON_v0(*tc)) < 0) {
+        Is_True ( ((mINT32)TCON_v1(*tc) == ((mINT32)-1)) &&
+                 ((TCON_v2(*tc)|TCON_v3(*tc)) == 0),
+	       ("TCONV_1 is not -1 or high order word of %s TCON non zero %x",
+		  Mtype_Name(TCON_ty(*tc)), TCON_v1(*tc)) );
+        break;
+      }
+      /* fall thru */
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
Index: osprey/common/com/MIPS/targ_const.cxx
===================================================================
--- osprey/common/com/MIPS/targ_const.cxx	(revision 3575)
+++ osprey/common/com/MIPS/targ_const.cxx	(working copy)
@@ -225,6 +225,16 @@
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      // since I1/I2/I4 is negative and sign extend to I8
+      // then store to TCON, tcon_v1 wil be 0xffffffff
+      if (((mINT32)TCON_v0(*tc)) < 0) {
+        Is_True ( ((mINT32)TCON_v1(*tc) == ((mINT32)-1)) &&
+                 ((TCON_v2(*tc)|TCON_v3(*tc)) == 0),
+	       ("TCONV_1 is not -1 or high order word of %s TCON non zero %x",
+		  Mtype_Name(TCON_ty(*tc)), TCON_v1(*tc)) );
+        break;
+      }
+      /* fall thru */
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
Index: osprey/common/com/NVISA/targ_const.cxx
===================================================================
--- osprey/common/com/NVISA/targ_const.cxx	(revision 3575)
+++ osprey/common/com/NVISA/targ_const.cxx	(working copy)
@@ -239,6 +239,16 @@
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      // since I1/I2/I4 is negative and sign extend to I8
+      // then store to TCON, tcon_v1 wil be 0xffffffff
+      if (((mINT32)TCON_v0(*tc)) < 0) {
+        Is_True ( ((mINT32)TCON_v1(*tc) == ((mINT32)-1)) &&
+                 ((TCON_v2(*tc)|TCON_v3(*tc)) == 0),
+	       ("TCONV_1 is not -1 or high order word of %s TCON non zero %x",
+		  Mtype_Name(TCON_ty(*tc)), TCON_v1(*tc)) );
+        break;
+      }
+      /* fall thru */
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
Index: osprey/common/com/ppc32/targ_const.cxx
===================================================================
--- osprey/common/com/ppc32/targ_const.cxx	(revision 3575)
+++ osprey/common/com/ppc32/targ_const.cxx	(working copy)
@@ -224,6 +224,16 @@
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      // since I1/I2/I4 is negative and sign extend to I8
+      // then store to TCON, tcon_v1 wil be 0xffffffff
+      if (((mINT32)TCON_v0(*tc)) < 0) {
+        Is_True ( ((mINT32)TCON_v1(*tc) == ((mINT32)-1)) &&
+                 ((TCON_v2(*tc)|TCON_v3(*tc)) == 0),
+	       ("TCONV_1 is not -1 or high order word of %s TCON non zero %x",
+		  Mtype_Name(TCON_ty(*tc)), TCON_v1(*tc)) );
+        break;
+      }
+      /* fall thru */
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
Index: osprey/common/com/SL/targ_const.cxx
===================================================================
--- osprey/common/com/SL/targ_const.cxx	(revision 3575)
+++ osprey/common/com/SL/targ_const.cxx	(working copy)
@@ -202,6 +202,16 @@
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      // since I1/I2/I4 is negative and sign extend to I8
+      // then store to TCON, tcon_v1 wil be 0xffffffff
+      if (((mINT32)TCON_v0(*tc)) < 0) {
+        Is_True ( ((mINT32)TCON_v1(*tc) == ((mINT32)-1)) &&
+                 ((TCON_v2(*tc)|TCON_v3(*tc)) == 0),
+	       ("TCONV_1 is not -1 or high order word of %s TCON non zero %x",
+		  Mtype_Name(TCON_ty(*tc)), TCON_v1(*tc)) );
+        break;
+      }
+      /* fall thru */
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
Index: osprey/common/com/x8664/targ_const.cxx
===================================================================
--- osprey/common/com/x8664/targ_const.cxx	(revision 3575)
+++ osprey/common/com/x8664/targ_const.cxx	(working copy)
@@ -250,6 +250,16 @@
     case MTYPE_I1:
     case MTYPE_I2:
     case MTYPE_I4:
+      // since I1/I2/I4 is negative and sign extend to I8
+      // then store to TCON, tcon_v1 wil be 0xffffffff
+      if (((mINT32)TCON_v0(*tc)) < 0) {
+        Is_True ( ((mINT32)TCON_v1(*tc) == ((mINT32)-1)) &&
+                 ((TCON_v2(*tc)|TCON_v3(*tc)) == 0),
+	       ("TCONV_1 is not -1 or high order word of %s TCON non zero %x",
+		  Mtype_Name(TCON_ty(*tc)), TCON_v1(*tc)) );
+        break;
+      }
+      /* fall thru */
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:
