diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2002-09-16 14:34:02 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2002-09-16 14:34:02 +0000 |
commit | 28c56d256992d5d330ebec07b1e939924b8d1086 (patch) | |
tree | a944ac0264fe665e3967a1545691b375acdbdc06 /gcc | |
parent | a41c6c533d4b1081fdb453cfa8fa5526af764151 (diff) | |
download | gcc-28c56d256992d5d330ebec07b1e939924b8d1086.zip gcc-28c56d256992d5d330ebec07b1e939924b8d1086.tar.gz gcc-28c56d256992d5d330ebec07b1e939924b8d1086.tar.bz2 |
re PR c++/7015 (certain __asm__ constructs rejected)
cp:
2002-09-16 Nathan Sidwell <nathan@codesourcery.com>
PR c++/7015
* semantic.c (finish_asm_stmt): Fix operand/output_operands
thinko.
* typeck.c (c_expand_asm_operands): Protect from error_mark_node.
testsuite
* g++.dg/ext/asm3.C: New test.
From-SVN: r57192
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 2 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/asm3.C | 13 |
5 files changed, 29 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index da49b54..3c3fb93 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2002-09-16 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/7015 + * semantic.c (finish_asm_stmt): Fix operand/output_operands + thinko. + * typeck.c (c_expand_asm_operands): Protect from error_mark_node. + 2002-09-15 Nathan Sidwell <nathan@codesourcery.com> PR c++/7919 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 946f715..cae2ecd 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -929,7 +929,7 @@ finish_asm_stmt (cv_qualifier, string, output_operands, tree operand; constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (t))); - operand = TREE_VALUE (output_operands); + operand = TREE_VALUE (t); if (!parse_output_constraint (&constraint, i, ninputs, noutputs, diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index abf4919..f591bc6 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -6045,9 +6045,10 @@ c_expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line) else { tree type = TREE_TYPE (o[i]); - if (CP_TYPE_CONST_P (type) - || (IS_AGGR_TYPE_CODE (TREE_CODE (type)) - && C_TYPE_FIELDS_READONLY (type))) + if (type != error_mark_node + && (CP_TYPE_CONST_P (type) + || (IS_AGGR_TYPE_CODE (TREE_CODE (type)) + && C_TYPE_FIELDS_READONLY (type)))) readonly_error (o[i], "modification by `asm'", 1); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 48e8691..603b39d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-09-16 Nathan Sidwell <nathan@codesourcery.com> + + * g++.dg/ext/asm3.C: New test. + 2002-09-16 Richard Earnshaw <rearnsha@arm.com> * objc.dg/bitfield-2.m (dg-options): Add -fsigned-char. diff --git a/gcc/testsuite/g++.dg/ext/asm3.C b/gcc/testsuite/g++.dg/ext/asm3.C new file mode 100644 index 0000000..699ab4c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm3.C @@ -0,0 +1,13 @@ +// { dg-do compile } + +// Copyright (C) 2002 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 16 Sep 2002 <nathan@codesourcery.com> + +// PR 7015. ICE with asms + +int two(int in) +{ + register int out; + __asm__ ("" : "r" (out) : "r" (in)); // { dg-error "output operand" "" } + return out; +} |