Module Name: src
Committed By: rin
Date: Sat Oct 7 11:58:31 UTC 2023
Modified Files:
src/external/gpl3/gcc.old/dist/gcc: recog.c
Log Message:
gcc.old: PR port-vax/57646 patch provided by Kalvis Duckmanton [4/21]
Constrain offsets within subregister expressions to be a multiple of
the size of the data type requested. That is, offsets for a word sized
(2 byte) subregister may only be multiples of 2.
XXXRO: Hidden within ``#ifdef NB_FIX_VAX_BACKEND'' and enabled only for
vax at the moment.
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/external/gpl3/gcc.old/dist/gcc/recog.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/gpl3/gcc.old/dist/gcc/recog.c
diff -u src/external/gpl3/gcc.old/dist/gcc/recog.c:1.11 src/external/gpl3/gcc.old/dist/gcc/recog.c:1.12
--- src/external/gpl3/gcc.old/dist/gcc/recog.c:1.11 Mon Feb 20 02:11:07 2023
+++ src/external/gpl3/gcc.old/dist/gcc/recog.c Sat Oct 7 11:58:31 2023
@@ -992,7 +992,12 @@ general_operand (rtx op, machine_mode mo
??? This is a kludge. */
if (!reload_completed
&& maybe_ne (SUBREG_BYTE (op), 0)
- && MEM_P (sub))
+ && MEM_P (sub)
+#ifdef NB_FIX_VAX_BACKEND
+ && (maybe_gt (SUBREG_BYTE (op), GET_MODE_SIZE (GET_MODE (sub)))
+ || !multiple_p (SUBREG_BYTE (op), GET_MODE_SIZE (mode)))
+#endif
+ )
return 0;
if (REG_P (sub)