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.

Reply via email to