]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Get rid of general case in mkLazy3 and instead add new cases as they appear.
authorJulian Seward <jseward@acm.org>
Thu, 9 Feb 2006 03:25:06 +0000 (03:25 +0000)
committerJulian Seward <jseward@acm.org>
Thu, 9 Feb 2006 03:25:06 +0000 (03:25 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5621

memcheck/mc_translate.c

index 0ffe445b0c2003556371d1ba24f43283b4aa32a7..8927a50c17bf6812220f3b35a2b93e211376762d 100644 (file)
@@ -1140,24 +1140,38 @@ IRAtom* mkLazy3 ( MCEnv* mce, IRType finalVty,
       return at;
    }
 
-   if (0) {
-      VG_(printf)("mkLazy3 ");
+   /* I32 x I64 x I64 -> I32 */
+   if (t1 == Ity_I32 && t2 == Ity_I64 && t3 == Ity_I64 
+       && finalVty == Ity_I32) {
+      if (0) VG_(printf)("mkLazy3: I32 x I64 x I64 -> I64\n");
+      at = mkPCastTo(mce, Ity_I64, va1);
+      at = mkUifU(mce, Ity_I64, at, va2);
+      at = mkUifU(mce, Ity_I64, at, va3);
+      at = mkPCastTo(mce, Ity_I32, at);
+      return at;
+   }
+
+   if (1) {
+      VG_(printf)("mkLazy3: ");
       ppIRType(t1);
-      VG_(printf)("_");
+      VG_(printf)(" x ");
       ppIRType(t2);
-      VG_(printf)("_");
+      VG_(printf)(" x ");
       ppIRType(t3);
-      VG_(printf)("_");
+      VG_(printf)(" -> ");
       ppIRType(finalVty);
       VG_(printf)("\n");
    }
 
+   tl_assert(0);
    /* General case: force everything via 32-bit intermediaries. */
+   /*
    at = mkPCastTo(mce, Ity_I32, va1);
    at = mkUifU(mce, Ity_I32, at, mkPCastTo(mce, Ity_I32, va2));
    at = mkUifU(mce, Ity_I32, at, mkPCastTo(mce, Ity_I32, va3));
    at = mkPCastTo(mce, finalVty, at);
    return at;
+   */
 }
 
 
@@ -1199,7 +1213,7 @@ IRAtom* mkLazy4 ( MCEnv* mce, IRType finalVty,
    }
 
    if (1) {
-      VG_(printf)("mkLazy4 ");
+      VG_(printf)("mkLazy4: ");
       ppIRType(t1);
       VG_(printf)(" x ");
       ppIRType(t2);