]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Do a few more cases.
authorJulian Seward <jseward@acm.org>
Thu, 4 Nov 2004 19:41:09 +0000 (19:41 +0000)
committerJulian Seward <jseward@acm.org>
Thu, 4 Nov 2004 19:41:09 +0000 (19:41 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@489

VEX/head20041019/memcheck/mc_translate.c

index ee2b6f2a379f2d834ef09c34239fd52648a96571..c320c3413c1e46f1bc94c389a3f33071d496044d 100644 (file)
@@ -1971,7 +1971,7 @@ static Bool isAlwaysDefd ( MCEnv* mce, Int offset, Int size )
 static
 void complainIfUndefined ( MCEnv* mce, IRAtom* atom )
 {
-  //  static Int zzz=100;
+   static Int zzz=0;
 
    /* Since the original expression is atomic, there's no duplicated
       work generated by making multiple V-expressions for it.  So we
@@ -1994,7 +1994,7 @@ void complainIfUndefined ( MCEnv* mce, IRAtom* atom )
       = unsafeIRDirty_0_N( 1/*regparms*/, 
                            "MC_(helperc_complain_undef)",
                            &MC_(helperc_complain_undef),
-                           mkIRExprVec_1( mkIRExpr_HWord( sz /* zzz++ */ ) ));
+                           mkIRExprVec_1( mkIRExpr_HWord( /*sz*/ zzz++ ) ));
    di->guard = cond;
    setHelperAnns( mce, di );
    stmt( mce->bb, IRStmt_Dirty(di));
@@ -2135,6 +2135,7 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce,
          return assignNew(mce, Ity_I64,
                           binop(Iop_32HLto64, atom1, atom2));
 
+      case Iop_MullS32:
       case Iop_MullU32: {
          IRAtom* vLo32 = mkLeft32(mce, mkUifU32(mce, vatom1,vatom2));
          IRAtom* vHi32 = mkPCastTo(mce, vLo32, Ity_I32);
@@ -2167,6 +2168,11 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce,
          complainIfUndefined(mce, atom2);
          return assignNew(mce, Ity_I32, binop(op, vatom1, atom2));
 
+      case Iop_Shl16: case Iop_Shr16:
+         /* Same scheme as with 32-bit shifts. */
+         complainIfUndefined(mce, atom2);
+         return assignNew(mce, Ity_I16, binop(op, vatom1, atom2));
+
       case Iop_Shl64: case Iop_Shr64: 
          /* Same scheme as with 32-bit shifts. */
          complainIfUndefined(mce, atom2);
@@ -2182,6 +2188,9 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce,
       case Iop_Or32:
          uifu = mkUifU32; difd = mkDifD32; 
          and_or_ty = Ity_I32; improve = mkImproveOR32; goto do_And_Or;
+        //case Iop_Or16:
+         //uifu = mkUifU16; difd = mkDifD16; 
+         //and_or_ty = Ity_I16; improve = mkImproveOR16; goto do_And_Or;
       case Iop_Or8:
          uifu = mkUifU8; difd = mkDifD8; 
          and_or_ty = Ity_I8; improve = mkImproveOR8; goto do_And_Or;
@@ -2194,6 +2203,9 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce,
             difd(mce, uifu(mce, vatom1, vatom2),
                       difd(mce, improve(mce, atom1, vatom1),
                                 improve(mce, atom2, vatom2) ) ) );
+
+      case Iop_Xor8:
+         return mkUifU8(mce, vatom1, vatom2);
       case Iop_Xor32:
          return mkUifU32(mce, vatom1, vatom2);