diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-11-01 21:51:42 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-11-01 21:51:42 +0000 |
| commit | 375584c7ebcf78d4364e71363a35be230b93ea4d (patch) | |
| tree | 2bf8b7abf9bbce6a2077cd684c43be92e18e4a76 /clang | |
| parent | d7a824006e794bf10661a5d211c186c4f0c5ba55 (diff) | |
| download | bcm5719-llvm-375584c7ebcf78d4364e71363a35be230b93ea4d.tar.gz bcm5719-llvm-375584c7ebcf78d4364e71363a35be230b93ea4d.zip | |
Clean up temporaries created by an asm statement. Fixes rdar://8540491
llvm-svn: 117961
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Parse/ParseStmt.cpp | 1 | ||||
| -rw-r--r-- | clang/test/SemaCXX/asm.cpp | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp index d340d574d4d..76956732d49 100644 --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -1458,6 +1458,7 @@ bool Parser::ParseAsmOperandsOpt(llvm::SmallVectorImpl<IdentifierInfo *> &Names, SkipUntil(tok::r_paren); return true; } + Res = Actions.MakeFullExpr(Res.get()).release(); Exprs.push_back(Res.release()); // Eat the comma and continue parsing if it exists. if (Tok.isNot(tok::comma)) return false; diff --git a/clang/test/SemaCXX/asm.cpp b/clang/test/SemaCXX/asm.cpp new file mode 100644 index 00000000000..cc2e6e75ca1 --- /dev/null +++ b/clang/test/SemaCXX/asm.cpp @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +struct A +{ + ~A(); +}; +int foo(A); + +void bar() +{ + A a; + asm("" : : "r"(foo(a)) ); // rdar://8540491 +} |

