From ca05904340457c4c7dbdb15bc589ab980434fa53 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Thu, 7 Oct 2004 13:48:27 +0000 Subject: [PATCH] parser.c (cp_parser_asm_definition): Look passed the CLEANUP_POINT_EXPR to get the asm expression. cp/ChangeLog: * parser.c (cp_parser_asm_definition): Look passed the CLEANUP_POINT_EXPR to get the asm expression. testsuite/ChangeLog: * g++.dg/ext/asm6.C: Remove extraneous semicolon. From-SVN: r88688 --- gcc/cp/ChangeLog | 7 ++++++- gcc/cp/parser.c | 8 +++++++- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.dg/ext/asm6.C | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 20a6a2de72c..364d1bec6fa 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,4 +1,9 @@ -2004-10-05 Andrew Pinski +2004-10-07 Andrew Pinski + + * parser.c (cp_parser_asm_definition): Look passed the + CLEANUP_POINT_EXPR to get the asm expression. + +2004-10-06 Andrew Pinski PR c++/17368 * semantics.c (finish_asm_stmt): Asm expressions need cleanup diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 79342dbf576..9bd3f1805b6 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -10389,7 +10389,13 @@ cp_parser_asm_definition (cp_parser* parser) inputs, clobbers); /* If the extended syntax was not used, mark the ASM_EXPR. */ if (!extended_p) - ASM_INPUT_P (asm_stmt) = 1; + { + tree temp = asm_stmt; + if (TREE_CODE (temp) == CLEANUP_POINT_EXPR) + temp = TREE_OPERAND (temp, 0); + + ASM_INPUT_P (temp) = 1; + } } else assemble_asm (string); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1087adb9f4d..03e569e4641 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-10-07 Andrew Pinski + + * g++.dg/ext/asm6.C: Remove extraneous semicolon. + 2004-10-07 Giovanni Bajo PR c++/17115 diff --git a/gcc/testsuite/g++.dg/ext/asm6.C b/gcc/testsuite/g++.dg/ext/asm6.C index eaf79f43cde..96ef9d385a8 100644 --- a/gcc/testsuite/g++.dg/ext/asm6.C +++ b/gcc/testsuite/g++.dg/ext/asm6.C @@ -7,5 +7,5 @@ void bar() { A a; asm("" : : "r"(foo(a)) );//<-- cleanup needed here. -}; +} -- 2.30.2