diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-08-24 23:51:02 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-08-24 23:51:02 +0000 |
commit | cd518a0ebc7c0a6aa41d717c360462540ef80a76 (patch) | |
tree | 4155d583a4939e7959ef7630fd77293c530b3e5d | |
parent | 129a60b35a8a06a3b245f87bee56458979b32ba2 (diff) |
[ms-inline asm] Update the AST Reader/Writer for MS-style inline asms.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162629 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/AST/Stmt.h | 5 | ||||
-rw-r--r-- | include/clang/Serialization/ASTBitCodes.h | 2 | ||||
-rw-r--r-- | lib/Serialization/ASTReaderStmt.cpp | 4 | ||||
-rw-r--r-- | lib/Serialization/ASTWriter.cpp | 1 | ||||
-rw-r--r-- | lib/Serialization/ASTWriterStmt.cpp | 2 |
5 files changed, 14 insertions, 0 deletions
diff --git a/include/clang/AST/Stmt.h b/include/clang/AST/Stmt.h index 97598db6d2..4b7cd1cc81 100644 --- a/include/clang/AST/Stmt.h +++ b/include/clang/AST/Stmt.h @@ -1637,6 +1637,11 @@ public: StringRef asmstr, ArrayRef<StringRef> clobbers, SourceLocation endloc); + /// \brief Build an empty MS-style inline-assembly statement. + explicit MSAsmStmt(EmptyShell Empty) : Stmt(MSAsmStmtClass, Empty), + NumAsmToks(0), NumInputs(0), NumOutputs(0), NumClobbers(0), AsmToks(0), + Names(0), Exprs(0), Clobbers(0) { } + SourceLocation getAsmLoc() const { return AsmLoc; } void setAsmLoc(SourceLocation L) { AsmLoc = L; } SourceLocation getLBraceLoc() const { return LBraceLoc; } diff --git a/include/clang/Serialization/ASTBitCodes.h b/include/clang/Serialization/ASTBitCodes.h index dbe6e5a314..2f6c1de0d6 100644 --- a/include/clang/Serialization/ASTBitCodes.h +++ b/include/clang/Serialization/ASTBitCodes.h @@ -1001,6 +1001,8 @@ namespace clang { STMT_DECL, /// \brief An AsmStmt record. STMT_ASM, + /// \brief A MS-style AsmStmt record. + STMT_MSASM, /// \brief A PredefinedExpr record. EXPR_PREDEFINED, /// \brief A DeclRefExpr record. diff --git a/lib/Serialization/ASTReaderStmt.cpp b/lib/Serialization/ASTReaderStmt.cpp index e6f62f8d9d..e616faa1a4 100644 --- a/lib/Serialization/ASTReaderStmt.cpp +++ b/lib/Serialization/ASTReaderStmt.cpp @@ -1704,6 +1704,10 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) { S = new (Context) AsmStmt(Empty); break; + case STMT_MSASM: + S = new (Context) MSAsmStmt(Empty); + break; + case EXPR_PREDEFINED: S = new (Context) PredefinedExpr(Empty); break; diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index 7ee3c9a21b..28ae08be18 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/lib/Serialization/ASTWriter.cpp @@ -668,6 +668,7 @@ static void AddStmtsExprs(llvm::BitstreamWriter &Stream, RECORD(STMT_RETURN); RECORD(STMT_DECL); RECORD(STMT_ASM); + RECORD(STMT_MSASM); RECORD(EXPR_PREDEFINED); RECORD(EXPR_DECL_REF); RECORD(EXPR_INTEGER_LITERAL); diff --git a/lib/Serialization/ASTWriterStmt.cpp b/lib/Serialization/ASTWriterStmt.cpp index 9f12b8a48e..9ae3e129a9 100644 --- a/lib/Serialization/ASTWriterStmt.cpp +++ b/lib/Serialization/ASTWriterStmt.cpp @@ -253,6 +253,8 @@ void ASTStmtWriter::VisitAsmStmt(AsmStmt *S) { void ASTStmtWriter::VisitMSAsmStmt(MSAsmStmt *S) { // FIXME: Statement writer not yet implemented for MS style inline asm. VisitStmt(S); + + Code = serialization::STMT_MSASM; } void ASTStmtWriter::VisitExpr(Expr *E) { |