Commit 0a2ac479 authored by Andrea Corallo's avatar Andrea Corallo

* src/comp.c: Fix 32bit wide-int.

	* src/comp.c (emit_XFIXNUM): Make right shift for MSB_TAG
	arithmetic too to preserve sign bit.
parent f036ec97
Pipeline #5641 failed with stage
in 164 minutes and 27 seconds
......@@ -1066,6 +1066,8 @@ emit_XFIXNUM (gcc_jit_rvalue *obj)
emit_comment ("XFIXNUM");
gcc_jit_rvalue *i = emit_coerce (comp.emacs_uint_type, emit_XLI (obj));
/* FIXME: Implementation dependent (both RSHIFT are arithmetics). */
if (!USE_LSB_TAG)
{
i = emit_binary_op (GCC_JIT_BINARY_OP_LSHIFT,
......@@ -1073,14 +1075,12 @@ emit_XFIXNUM (gcc_jit_rvalue *obj)
i,
comp.inttypebits);
return emit_coerce (comp.emacs_int_type,
emit_binary_op (GCC_JIT_BINARY_OP_RSHIFT,
comp.emacs_uint_type,
i,
comp.inttypebits));
return emit_binary_op (GCC_JIT_BINARY_OP_RSHIFT,
comp.emacs_int_type,
i,
comp.inttypebits);
}
else
/* FIXME: Implementation dependent (wants arithmetic shift). */
return emit_coerce (comp.emacs_int_type,
emit_binary_op (GCC_JIT_BINARY_OP_RSHIFT,
comp.emacs_int_type,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment