This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
ubsan: or1k: left shift of negative value
- From: Alan Modra <amodra at gmail dot com>
- To: binutils at sourceware dot org
- Date: Fri, 20 Dec 2019 20:25:49 +1030
- Subject: ubsan: or1k: left shift of negative value
cpu/
* or1korbis.cpu (f-disp26, f-disp21): Don't left shift negative values.
opcodes/
* or1k-ibld.c: Regenerate.
diff --git a/cpu/or1korbis.cpu b/cpu/or1korbis.cpu
index 3741d4c8f7..a8002a3718 100644
--- a/cpu/or1korbis.cpu
+++ b/cpu/or1korbis.cpu
@@ -76,7 +76,7 @@
26
INT
((value pc) (sra IAI (sub IAI value pc) (const 2)))
- ((value pc) (add IAI (sll IAI value (const 2)) pc))
+ ((value pc) (add IAI (mul IAI value (const 4)) pc))
)
; PC relative, 21-bit, 13 shifted to right, aligned.
@@ -91,7 +91,7 @@
((value pc)
(sub IAI (sra IAI value (const 13)) (sra IAI pc (const 13))))
((value pc)
- (sll IAI (add IAI value (sra IAI pc (const 13))) (const 13)))
+ (mul IAI (add IAI value (sra IAI pc (const 13))) (const 8192)))
)
; Immediates.
--
Alan Modra
Australia Development Lab, IBM