From: Eduardo Habkost Date: Tue, 29 Sep 2015 20:34:23 +0000 (-0300) Subject: target-i386: Don't left shift negative constant X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.2~121^2~1^2~105^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=712b4243c761cb6ab6a4367a160fd2a42e2d4b76;p=sdk%2Femulator%2Fqemu.git target-i386: Don't left shift negative constant Left shift of negative values is undefined behavior. Detected by clang: qemu/target-i386/translate.c:2423:26: runtime error: left shift of negative value -8 This changes the code to reverse the sign after the left shift. Signed-off-by: Eduardo Habkost --- diff --git a/target-i386/translate.c b/target-i386/translate.c index 764b1e44b7..862f8e09fb 100644 --- a/target-i386/translate.c +++ b/target-i386/translate.c @@ -2432,7 +2432,7 @@ static void gen_pusha(DisasContext *s) { int i; gen_op_movl_A0_reg(R_ESP); - gen_op_addl_A0_im(-8 << s->dflag); + gen_op_addl_A0_im(-(8 << s->dflag)); if (!s->ss32) tcg_gen_ext16u_tl(cpu_A0, cpu_A0); tcg_gen_mov_tl(cpu_T[1], cpu_A0);