From: Julian Seward Date: Thu, 9 Feb 2006 03:25:06 +0000 (+0000) Subject: Get rid of general case in mkLazy3 and instead add new cases as they appear. X-Git-Tag: svn/VALGRIND_3_2_0~290 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=501fa0ca99d49bf74739dc76b341a0af98ee722b;p=thirdparty%2Fvalgrind.git Get rid of general case in mkLazy3 and instead add new cases as they appear. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5621 --- diff --git a/memcheck/mc_translate.c b/memcheck/mc_translate.c index 0ffe445b0c..8927a50c17 100644 --- a/memcheck/mc_translate.c +++ b/memcheck/mc_translate.c @@ -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);