diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-01-05 21:18:15 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-01-05 21:18:15 +0100 |
commit | 36363ebb88950dc5b411ceb1fa53d7ee2edd0a38 (patch) | |
tree | 755789193a6cfe1960b7d20642b601f382015bd8 /gcc/stmt.c | |
parent | 1e69d24e61a1fc7a3133ca82bcef2a5a437da992 (diff) | |
download | gcc-36363ebb88950dc5b411ceb1fa53d7ee2edd0a38.zip gcc-36363ebb88950dc5b411ceb1fa53d7ee2edd0a38.tar.gz gcc-36363ebb88950dc5b411ceb1fa53d7ee2edd0a38.tar.bz2 |
re PR middle-end/51768 (ICE with invalid asm goto)
PR middle-end/51768
* stmt.c (check_unique_operand_names): Don't ICE during error
reporting if i is from labels chain.
* c-c++-common/pr51768.c: New test.
From-SVN: r182921
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r-- | gcc/stmt.c | 13 |
1 files changed, 6 insertions, 7 deletions
@@ -1,7 +1,7 @@ /* Expands front end tree to back end RTL for GCC Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, - 2010 Free Software Foundation, Inc. + 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -1253,11 +1253,11 @@ check_operand_nalternatives (tree outputs, tree inputs) static bool check_unique_operand_names (tree outputs, tree inputs, tree labels) { - tree i, j; + tree i, j, i_name = NULL_TREE; for (i = outputs; i ; i = TREE_CHAIN (i)) { - tree i_name = TREE_PURPOSE (TREE_PURPOSE (i)); + i_name = TREE_PURPOSE (TREE_PURPOSE (i)); if (! i_name) continue; @@ -1268,7 +1268,7 @@ check_unique_operand_names (tree outputs, tree inputs, tree labels) for (i = inputs; i ; i = TREE_CHAIN (i)) { - tree i_name = TREE_PURPOSE (TREE_PURPOSE (i)); + i_name = TREE_PURPOSE (TREE_PURPOSE (i)); if (! i_name) continue; @@ -1282,7 +1282,7 @@ check_unique_operand_names (tree outputs, tree inputs, tree labels) for (i = labels; i ; i = TREE_CHAIN (i)) { - tree i_name = TREE_PURPOSE (i); + i_name = TREE_PURPOSE (i); if (! i_name) continue; @@ -1297,8 +1297,7 @@ check_unique_operand_names (tree outputs, tree inputs, tree labels) return true; failure: - error ("duplicate asm operand name %qs", - TREE_STRING_POINTER (TREE_PURPOSE (TREE_PURPOSE (i)))); + error ("duplicate asm operand name %qs", TREE_STRING_POINTER (i_name)); return false; } |