From 4aae569455a9feadb5ed25eb524a3ad360941d49 Mon Sep 17 00:00:00 2001 From: Christian Borntraeger Date: Mon, 15 Oct 2012 14:03:20 +0000 Subject: [PATCH] check in ltg jhe fix. Fixes https://bugs.kde.org/show_bug.cgi?id=308427 git-svn-id: svn://svn.valgrind.org/vex/trunk@2551 --- VEX/priv/guest_s390_helpers.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/VEX/priv/guest_s390_helpers.c b/VEX/priv/guest_s390_helpers.c index 75f4021984..66f05fef36 100644 --- a/VEX/priv/guest_s390_helpers.c +++ b/VEX/priv/guest_s390_helpers.c @@ -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); -- 2.47.2