1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Merge branch 'fix-rotate-by-zero' into 'master'

Fix undefined behavior in ARMv7 assembler

See merge request wingo/lightening!4
This commit is contained in:
Andy Wingo 2020-06-19 14:18:14 +00:00
commit 921f13a03b

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2012-2017, 2019 Free Software Foundation, Inc. * Copyright (C) 2012-2017,2019-2020 Free Software Foundation, Inc.
* *
* This file is part of GNU lightning. * This file is part of GNU lightning.
* *
@ -195,8 +195,15 @@ emit_wide_thumb(jit_state_t *_jit, uint32_t inst)
emit_u16_with_pool(_jit, inst & 0xffff); emit_u16_with_pool(_jit, inst & 0xffff);
} }
/* from binutils */ static uint32_t
# define rotate_left(v, n) (v << n | v >> (32 - n)) rotate_left(uint32_t v, uint32_t n) {
if (n == 0) {
return v;
}
ASSERT(n < 32);
return (v << n | v >> (32 - n));
}
static int static int
encode_arm_immediate(unsigned int v) encode_arm_immediate(unsigned int v)
{ {