]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix bug 343802. We need to handle one more special case in the spechelper
authorChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 5 Feb 2015 11:05:10 +0000 (11:05 +0000)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 5 Feb 2015 11:05:10 +0000 (11:05 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@3083

VEX/priv/guest_s390_helpers.c

index 78ca2efa43023af16ce058460ce921159789b57f..df1f24bb6598558c86f4fa209d7e2014b462dc30 100644 (file)
@@ -1958,7 +1958,10 @@ guest_s390x_spechelper(const HChar *function_name, IRExpr **args,
             return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, mkU64(0)));
          }
          if (cond == 4 || cond == 4 + 1) {
-            return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep1, mkU64(0)));
+             /* Special case cc_dep < 0. Only check the MSB to avoid bogus
+               memcheck complaints due to gcc magic. Fixes 343802
+             */
+            return unop(Iop_64to32, binop(Iop_Shr64, cc_dep1, mkU8(63)));
          }
          if (cond == 8 + 4 || cond == 8 + 4 + 1) {
             return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep1, mkU64(0)));