Would gatekeeper help review this fix?

I1,I2,I4 will be sign extend to I8 and store in TCON_I8,
So when I1,I2,I4 is negative, TCON_V1 can be 0xffffffff. So the following
assertion condition is not correct.

     Is_True ( (TCON_v1(*tc)|TCON_v2(*tc)|TCON_v3(*tc)) == 0,
           ("High order word of %s TCON non zero %x",
        Mtype_Name(TCON_ty(*tc)), TCON_v1(*tc)) );
     break;

Fix is for I1,I2,I4 tcon value, assert if TCON_v0 is negative, TCON_V1 is
0xffffffff.
     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),
+           ("High order word of %s TCON non zero %x",
+          Mtype_Name(TCON_ty(*tc)), TCON_v1(*tc)) );
+        break;
+      }
     case MTYPE_U1:
     case MTYPE_U2:
     case MTYPE_U4:

Regards
Shi Hui

Attachment: check_I4.patch
Description: Binary data

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to