]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
check in ltg jhe fix. Fixes https://bugs.kde.org/show_bug.cgi?id=308427
authorChristian Borntraeger <borntraeger@de.ibm.com>
Mon, 15 Oct 2012 14:03:20 +0000 (14:03 +0000)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Mon, 15 Oct 2012 14:03:20 +0000 (14:03 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2551

VEX/priv/guest_s390_helpers.c

index 75f40219842aa5e5b026de632d07aff07ed0be11..66f05fef36c20e50f7f8bae69ec7b8777c99bc95 100644 (file)
@@ -1522,7 +1522,11 @@ guest_s390x_spechelper(HChar *function_name, IRExpr **args,
             return unop(Iop_1Uto32, binop(Iop_CmpLT64S, mkU64(0), cc_dep1));
          }
          if (cond == 8 + 2 || cond == 8 + 2 + 1) {
-            return unop(Iop_1Uto32, binop(Iop_CmpLE64S, mkU64(0), cc_dep1));
+            /* special case =0 || >0 to handle some gcc magic that only checks
+             * the first bit. Fixes 308427
+             */
+            return unop(Iop_64to32, binop(Iop_Xor64, binop(Iop_Shr64,cc_dep1,mkU8(63)),
+                      mkU64(1)));
          }
          if (cond == 8 + 4 + 2 || cond == 8 + 4 + 2 + 1) {
             return mkU32(1);