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/AST/Stmt.cpp b/AST/Stmt.cpp
index ccd27af..9a4d434 100644
--- a/AST/Stmt.cpp
+++ b/AST/Stmt.cpp
@@ -111,6 +111,29 @@
}
}
+AsmStmt::AsmStmt(SourceLocation asmloc,
+ unsigned numoutputs,
+ unsigned numinputs,
+ std::string *names,
+ StringLiteral **constraints,
+ Expr **exprs,
+ StringLiteral *asmstr,
+ unsigned numclobbers,
+ StringLiteral **clobbers,
+ SourceLocation rparenloc)
+ : Stmt(AsmStmtClass), AsmLoc(asmloc), RParenLoc(rparenloc), AsmStr(asmstr)
+ , NumOutputs(numoutputs), NumInputs(numinputs)
+{
+ for (unsigned i = 0, e = numinputs + numoutputs; i != e; i++) {
+ Names.push_back(names[i]);
+ Exprs.push_back(exprs[i]);
+ Constraints.push_back(constraints[i]);
+ }
+
+ for (unsigned i = 0; i != numclobbers; i++)
+ Clobbers.push_back(clobbers[i]);
+}
+
//===----------------------------------------------------------------------===//
// Child Iterators for iterating over subexpressions/substatements
//===----------------------------------------------------------------------===//