Store output and input operands as well as clobber information in the AsmStmt. Ted, could you please review the serialization/deserialization code?
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44266 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/SemaStmt.cpp b/Sema/SemaStmt.cpp
index ad3d2e4..f7aa6a9 100644
--- a/Sema/SemaStmt.cpp
+++ b/Sema/SemaStmt.cpp
@@ -645,11 +645,29 @@
}
Sema::StmtResult Sema::ActOnAsmStmt(SourceLocation AsmLoc,
+ unsigned NumOutputs,
+ unsigned NumInputs,
+ std::string *Names,
+ ExprTy **Constraints,
+ ExprTy **Exprs,
ExprTy *AsmString,
+ unsigned NumClobbers,
+ ExprTy **Clobbers,
SourceLocation RParenLoc) {
Expr *E = (Expr *)AsmString;
- return new AsmStmt(AsmLoc, cast<StringLiteral>(E), RParenLoc);
+ // FIXME: Make sure that the expressions are valid.
+
+ return new AsmStmt(AsmLoc,
+ NumOutputs,
+ NumInputs,
+ Names,
+ reinterpret_cast<StringLiteral**>(Constraints),
+ reinterpret_cast<Expr**>(Exprs),
+ cast<StringLiteral>(E),
+ NumClobbers,
+ reinterpret_cast<StringLiteral**>(Clobbers),
+ RParenLoc);
}
Action::StmtResult