I got nine ICEs in verify_changes for compile/20110401-1.c on ARC.

Fixed by checking changes[i].old before dereferencing it.

Bootstrapped on i686-pc-linux.gnu.

Committed as obvious.
2013-05-20  Joern Rennecke  <joern.renne...@embecosm.com>

            * recog.c (verify_changes): Verify that changes[i].old is non-zero
            before applying REG_P.

Index: recog.c
===================================================================
--- recog.c     (revision 202106)
+++ recog.c     (working copy)
@@ -397,7 +397,10 @@ verify_changes (int num)
                                             MEM_ADDR_SPACE (object)))
            break;
        }
-      else if (REG_P (changes[i].old)
+      else if (/* changes[i].old might be zero, e.g. when putting a
+              REG_FRAME_RELATED_EXPR into a previously empty list.  */
+              changes[i].old
+              && REG_P (changes[i].old)
               && asm_noperands (PATTERN (object)) > 0
               && REG_EXPR (changes[i].old) != NULL_TREE
               && DECL_ASSEMBLER_NAME_SET_P (REG_EXPR (changes[i].old))

Reply via email to