ubsan: xstormy16: left shift of negative value

cpu/
	* xstormy16.cpu (f-rel12a): Avoid signed overflow.
opcodes/
	* xstormy16-ibld.c: Regenerate.
This commit is contained in:
Alan Modra 2019-12-16 10:00:07 +10:30
parent 84e098cdea
commit e6ced26afd
4 changed files with 10 additions and 2 deletions

View File

@ -1,3 +1,7 @@
2019-12-16 Alan Modra <amodra@gmail.com>
* xstormy16.cpu (f-rel12a): Avoid signed overflow.
2019-12-11 Alan Modra <amodra@gmail.com>
* epiphany.cpu (f-sdisp11): Don't sign extend with shifts.

View File

@ -393,7 +393,7 @@
(length 11)
(mode INT)
(encode (value pc) (sra SI (sub SI value (add SI pc 2)) 1))
(decode (value pc) (add SI (sll value 1) (add SI pc 2)))
(decode (value pc) (add SI (mul value 2) (add SI pc 2)))
)
(dnop rel12a "12 bit relative address" () h-uint f-rel12a)

View File

@ -1,3 +1,7 @@
2019-12-16 Alan Modra <amodra@gmail.com>
* xstormy16-ibld.c: Regenerate.
2019-12-16 Alan Modra <amodra@gmail.com>
* score-dis.c (print_insn_score16): Move rpush/rpop imm field

View File

@ -800,7 +800,7 @@ xstormy16_cgen_extract_operand (CGEN_CPU_DESC cd,
{
long value;
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 4, 11, 32, total_length, pc, & value);
value = ((((value) << (1))) + (((pc) + (2))));
value = ((((value) * (2))) + (((pc) + (2))));
fields->f_rel12a = value;
}
break;