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)

Reply via email to