diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 13117b89f60..20a6a2de72c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2004-10-05 Andrew Pinski + + PR c++/17368 + * semantics.c (finish_asm_stmt): Asm expressions need cleanup + also. + 2004-10-05 Gabriel Dos Reis Convert diagnostics to use quoting flag q 6/n diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 5bb6f3b4d59..78d2683f6ef 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1178,6 +1178,7 @@ finish_asm_stmt (int volatile_p, tree string, tree output_operands, output_operands, input_operands, clobbers); ASM_VOLATILE_P (r) = volatile_p; + r = maybe_cleanup_point_expr (r); return add_stmt (r); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f684e7fd7ec..8e23309fb62 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ +2004-10-06 Andrew Pinski + + PR c++/17368 + * g++.dg/ext/asm6.C: New test. + 2004-10-06 Kenneth Zadeck - gcc.dg/20011119-1.c : Added memory attribute to asm sequence. + * gcc.dg/20011119-1.c : Added memory attribute to asm sequence. 2004-10-06 Paul Brook diff --git a/gcc/testsuite/g++.dg/ext/asm6.C b/gcc/testsuite/g++.dg/ext/asm6.C new file mode 100644 index 00000000000..eaf79f43cde --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm6.C @@ -0,0 +1,11 @@ +struct A +{ + ~A(); +}; +int foo(A); +void bar() +{ + A a; + asm("" : : "r"(foo(a)) );//<-- cleanup needed here. +}; +