From 7c7908c97e5c2a8779993dcdfe198b34c09784fc Mon Sep 17 00:00:00 2001 From: pcpa Date: Wed, 30 Jan 2013 00:36:52 -0200 Subject: [PATCH] Correct C sequence point problem. * lib/jit_x86-cpu.c: Correct undefined behavior code. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56143 --- ChangeLog | 5 +++++ lib/jit_x86-cpu.c | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2a4170ba2..0c929d301 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-01-30 Paulo Andrade + + * lib/jit_x86-cpu.c: Correct undefined behavior code. + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56143 + 2013-01-29 Paulo Andrade * configure.ac: Use AC_CONFIG_HEADERS instead of AC_CONFIG_HEADER diff --git a/lib/jit_x86-cpu.c b/lib/jit_x86-cpu.c index 997855dde..9ba93c302 100644 --- a/lib/jit_x86-cpu.c +++ b/lib/jit_x86-cpu.c @@ -2601,16 +2601,20 @@ _stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) static void _jccs(jit_state_t *_jit, jit_int32_t code, jit_word_t i0) { + jit_word_t w; ic(0x70 | code); - ic(i0 - (_jit->pc.w + 1)); + w = i0 - (_jit->pc.w + 1); + ic(w); } static void _jcc(jit_state_t *_jit, jit_int32_t code, jit_word_t i0) { + jit_word_t w; ic(0x0f); ic(0x80 | code); - ii(i0 - (_jit->pc.w + 4)); + w = i0 - (_jit->pc.w + 4); + ii(w); } static void @@ -3040,8 +3044,10 @@ _calli(jit_state_t *_jit, jit_word_t i0) callr(rn(reg)); jit_unget_reg(reg); #else + jit_word_t w; ic(0xe8); - ii(i0 - (_jit->pc.w + 4)); + w = i0 - (_jit->pc.w + 4); + ii(w); word = _jit->pc.w; #endif return (word); @@ -3058,8 +3064,10 @@ _jmpr(jit_state_t *_jit, jit_int32_t r0) static jit_word_t _jmpi(jit_state_t *_jit, jit_word_t i0) { + jit_word_t w; ic(0xe9); - ii(i0 - (_jit->pc.w + 4)); + w = i0 - (_jit->pc.w + 4); + ii(w); return (_jit->pc.w); }