aboutsummaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2006-05-22 16:49:33 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2006-05-22 16:49:33 +0000
commit123b24e73b5ffc38f548cccfde0aea45b4797c51 (patch)
tree27bdb1a74e3811e586d7201b8711d0ecf0a3e251 /gcc/stmt.c
parentba5719d9cd094d0f737bef6ee396387f65ff9195 (diff)
downloadgcc-123b24e73b5ffc38f548cccfde0aea45b4797c51.zip
gcc-123b24e73b5ffc38f548cccfde0aea45b4797c51.tar.gz
gcc-123b24e73b5ffc38f548cccfde0aea45b4797c51.tar.bz2
re PR c++/27451 (ICE with invalid asm statement)
PR c++/27451 * stmt.c (expand_asm_operands): Skip asm statement with erroneous clobbers. * g++.dg/ext/asm9.C: New test. From-SVN: r113985
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r--gcc/stmt.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index be3e876..1937453 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -693,7 +693,11 @@ expand_asm_operands (tree string, tree outputs, tree inputs,
CLEAR_HARD_REG_SET (clobbered_regs);
for (tail = clobbers; tail; tail = TREE_CHAIN (tail))
{
- const char *regname = TREE_STRING_POINTER (TREE_VALUE (tail));
+ const char *regname;
+
+ if (TREE_VALUE (tail) == error_mark_node)
+ return;
+ regname = TREE_STRING_POINTER (TREE_VALUE (tail));
i = decode_reg_name (regname);
if (i >= 0 || i == -4)