This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Committed: avoid null-pointer dereference in verify_changes
- From: Joern Rennecke <joern dot rennecke at embecosm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 30 Aug 2013 10:26:01 -0400
- Subject: Committed: avoid null-pointer dereference in verify_changes
- Authentication-results: sourceware.org; auth=none
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.rennecke@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))