1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-20 07:00:31 -08:00

* Better long range check

* src/comp.c (emit_rvalue_from_emacs_uint)
	(emit_rvalue_from_emacs_int, emit_rvalue_from_lisp_word_tag)
	(emit_rvalue_from_lisp_word): Better long range check.
This commit is contained in:
Andrea Corallo 2021-02-16 21:49:32 +01:00
parent 543e6e664c
commit 72e4a22391

View file

@ -1166,7 +1166,7 @@ emit_rvalue_from_unsigned_long_long (gcc_jit_type *type, unsigned long long n)
static gcc_jit_rvalue *
emit_rvalue_from_emacs_uint (EMACS_UINT val)
{
if (val != (long) val)
if (val > LONG_MAX || val < LONG_MIN)
return emit_rvalue_from_unsigned_long_long (comp.emacs_uint_type, val);
else
return gcc_jit_context_new_rvalue_from_long (comp.ctxt,
@ -1177,7 +1177,7 @@ emit_rvalue_from_emacs_uint (EMACS_UINT val)
static gcc_jit_rvalue *
emit_rvalue_from_emacs_int (EMACS_INT val)
{
if (val != (long) val)
if (val > LONG_MAX || val < LONG_MIN)
return emit_rvalue_from_long_long (comp.emacs_int_type, val);
else
return gcc_jit_context_new_rvalue_from_long (comp.ctxt,
@ -1187,7 +1187,7 @@ emit_rvalue_from_emacs_int (EMACS_INT val)
static gcc_jit_rvalue *
emit_rvalue_from_lisp_word_tag (Lisp_Word_tag val)
{
if (val != (long) val)
if (val > LONG_MAX || val < LONG_MIN)
return emit_rvalue_from_unsigned_long_long (comp.lisp_word_tag_type, val);
else
return gcc_jit_context_new_rvalue_from_long (comp.ctxt,
@ -1203,7 +1203,7 @@ emit_rvalue_from_lisp_word (Lisp_Word val)
comp.lisp_word_type,
val);
#else
if (val != (long) val)
if (val > LONG_MAX || val < LONG_MIN)
return emit_rvalue_from_unsigned_long_long (comp.lisp_word_type, val);
else
return gcc_jit_context_new_rvalue_from_long (comp.ctxt,