diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2006-05-22 16:49:33 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2006-05-22 16:49:33 +0000 |
commit | 123b24e73b5ffc38f548cccfde0aea45b4797c51 (patch) | |
tree | 27bdb1a74e3811e586d7201b8711d0ecf0a3e251 /gcc/stmt.c | |
parent | ba5719d9cd094d0f737bef6ee396387f65ff9195 (diff) | |
download | gcc-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.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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) |