CVSROOT: /cvs Module name: src Changes by: m...@cvs.openbsd.org 2023/02/01 13:56:23
Modified files: gnu/usr.bin/gcc/gcc/config/vax: vax.h vax.md Log message: Despite only testing the low-order bit of its operand, the blbc and blbs instructions always fetch a 32-bit word when operand is a memory address. This works unless the address is within the last 3 bytes of a page, with the next page being invalid, something which can happen with small malloc'ed structures (I'm looking at you, perl). Work around the problem by requiring a register operand in all cases; the register load will be a zero-extension load of the right width. This is my entry into the "fix a 30-year old bug" contest of 2023.