parser.c (cp_parser_asm_definition): Look passed the CLEANUP_POINT_EXPR to get the...
authorAndrew Pinski <pinskia@physics.uc.edu>
Thu, 7 Oct 2004 13:48:27 +0000 (13:48 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Thu, 7 Oct 2004 13:48:27 +0000 (06:48 -0700)
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
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/asm6.C

index 20a6a2de72c5f9e8b19021e6a7a728646dfdf166..364d1bec6fa4c9cc8dde78f769dcecf8f05eed8a 100644 (file)
@@ -1,4 +1,9 @@
-2004-10-05  Andrew Pinski  <pinskia@physics.uc.edu>
+2004-10-07  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * parser.c (cp_parser_asm_definition): Look passed the
+       CLEANUP_POINT_EXPR to get the asm expression.
+
+2004-10-06  Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR c++/17368
        * semantics.c (finish_asm_stmt): Asm expressions need cleanup
index 79342dbf576a17d69517a7966e9ef97ed0e0cbea..9bd3f1805b632ce9b156a820908ba3b314be7bfb 100644 (file)
@@ -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);
index 1087adb9f4d43138f5a8edd1c227486460ccb44d..03e569e46419cd9cdf95b70b95aedde56d26b57a 100644 (file)
@@ -1,3 +1,7 @@
+2004-10-07  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * g++.dg/ext/asm6.C: Remove extraneous semicolon.
+
 2004-10-07  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
        PR c++/17115
index eaf79f43cdee17d5cca7d2cfd70b5bb7bab6d44c..96ef9d385a88e38a8504d34a174c73b5b2e7a983 100644 (file)
@@ -7,5 +7,5 @@ void bar()
 {
     A a;
     asm("" : : "r"(foo(a)) );//<-- cleanup needed here.
-};
+}