ubsan: m32c: left shift of negative value
authorAlan Modra <amodra@gmail.com>
Thu, 30 Jan 2020 11:29:20 +0000 (21:59 +1030)
committerAlan Modra <amodra@gmail.com>
Thu, 30 Jan 2020 13:09:55 +0000 (23:39 +1030)
commit0c115f8483ac32dc95fde902cac8c8bb99f9c3be
tree3671689d98fe08794014ceb29b7f7947c057788e
parentb5d36aaa8ad9b0aee720b7a6b3270d561a27cb6f
ubsan: m32c: left shift of negative value

More nonsense fixing "bugs" with left shifts of signed values.  Yes,
the C standard does say this is undefined (and right shifts of signed
values are implementation defined BTW) but in practice there is no
problem with current machines.  1's complement is a thing of the past.

cpu/
* m32c.cpu (f-src32-rn-unprefixed-QI): Shift before inverting.
(f-src32-rn-prefixed-QI, f-dst32-rn-unprefixed-QI): Likewise.
(f-dst32-rn-prefixed-QI): Likewise.
(f-dsp-32-s32): Mask before shifting left.
(f-dsp-48-u32, f-dsp-48-s32): Likewise.
(f-bitbase32-16-s11-unprefixed): Multiply signed field rather than
shifting left.
(f-bitbase32-24-s11-prefixed, f-bitbase32-24-s19-prefixed): Likewise.
(h-gr-SI): Mask before shifting.
opcodes/
* m32c-ibld.c: Regenerate.
cpu/ChangeLog
cpu/m32c.cpu
opcodes/ChangeLog
opcodes/m32c-ibld.c