codegen.c: gen_jmpdst always needs to generate relative address.

This commit is contained in:
Yukihiro "Matz" Matsumoto
2021-07-15 14:08:17 +09:00
parent b8863c69dc
commit b7d75591f3
+6 -8
View File
@@ -398,17 +398,15 @@ gen_jmpdst(codegen_scope *s, uint32_t pc)
{
if (pc == JMPLINK_START) {
gen_S(s, 0);
pc = 0;
}
else {
uint32_t pos2 = s->pc+2;
int32_t off = pc - pos2;
uint32_t pos2 = s->pc+2;
int32_t off = pc - pos2;
if (off > INT16_MAX || INT16_MIN > off) {
codegen_error(s, "too big jump offset");
}
gen_S(s, (uint16_t)off);
if (off > INT16_MAX || INT16_MIN > off) {
codegen_error(s, "too big jump offset");
}
gen_S(s, (uint16_t)off);
}
static uint32_t