recog.c (general_operand): Modify last change to allow it if reload has completed.
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Sat, 19 May 2001 11:51:32 +0000 (11:51 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 19 May 2001 11:51:32 +0000 (07:51 -0400)
* recog.c (general_operand): Modify last change to allow it if reload
has completed.

From-SVN: r42309

gcc/ChangeLog
gcc/recog.c

index a086e993ef484ad18d6dbcca8a7171abbcca73fa..d8598505427a0b23f6990491eb5f19c07e844e1e 100644 (file)
@@ -1,3 +1,8 @@
+Sat May 19 07:53:42 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * recog.c (general_operand): Modify last change to allow it if reload
+       has completed.
+
 Sat May 19 10:23:54 CEST 2001  Jan Hubicka  <jh@suse.cz>
 
        * recog.c (general_operand): Prohibit nonzero subreg bytes on
index 5e78336ea02c83072bd986404b5b86bf54f9ed58..833a12253a76826c19d1bc63024fb271837cb2f7 100644 (file)
@@ -961,8 +961,12 @@ general_operand (op, mode)
 #endif
       /* Avoid memories with nonzero SUBREG_BYTE, as offsetting the memory
          may result in incorrect reference.  We should simplify all valid
-         subregs of MEM anyway.  */
-      if (SUBREG_BYTE (op) && GET_CODE (SUBREG_REG (op)) == MEM)
+         subregs of MEM anyway.  But allow this after reload because we
+        might be called from cleanup_subreg_operands. 
+
+        ??? This is a kludge.  */
+      if (!reload_completed && SUBREG_BYTE (op) != 0
+         && GET_CODE (SUBREG_REG (op)) == MEM)
         return 0;
 
       op = SUBREG_REG (op);