summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaStmtAsm.cpp
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-10-12 22:53:52 +0000
committerChad Rosier <mcrosier@apple.com>2012-10-12 22:53:52 +0000
commit7d1ec922ff15ef8cde90977275f37171bc1ad85e (patch)
tree1a97981db8bf422c1e59866a0f44946652da97c9 /clang/lib/Sema/SemaStmtAsm.cpp
parent2f480a8a50727c0aca1da9b37f29e15168175988 (diff)
downloadbcm5719-llvm-7d1ec922ff15ef8cde90977275f37171bc1ad85e.tar.gz
bcm5719-llvm-7d1ec922ff15ef8cde90977275f37171bc1ad85e.zip
Update for r165833.
llvm-svn: 165834
Diffstat (limited to 'clang/lib/Sema/SemaStmtAsm.cpp')
-rw-r--r--clang/lib/Sema/SemaStmtAsm.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/clang/lib/Sema/SemaStmtAsm.cpp b/clang/lib/Sema/SemaStmtAsm.cpp
index ded1c3f7807..a3a1df62d9a 100644
--- a/clang/lib/Sema/SemaStmtAsm.cpp
+++ b/clang/lib/Sema/SemaStmtAsm.cpp
@@ -501,13 +501,10 @@ StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc, SourceLocation LBraceLoc,
if (HadError) { DEF_SIMPLE_MSASM(EmptyAsmStr); return Owned(NS); }
// Match the MCInstr.
- unsigned Kind;
unsigned Opcode;
unsigned ErrorInfo;
- SmallVector<std::pair< unsigned, std::string >, 4> MapAndConstraints;
- HadError = TargetParser->MatchInstruction(IDLoc, Operands, *Str.get(), Kind,
- Opcode, MapAndConstraints,
- ErrorInfo,
+ HadError = TargetParser->MatchInstruction(IDLoc, Operands, *Str.get(),
+ Opcode, ErrorInfo,
/*matchingInlineAsm*/ true);
// If we had an error parsing the operands, fail gracefully.
if (HadError) { DEF_SIMPLE_MSASM(EmptyAsmStr); return Owned(NS); }
@@ -528,7 +525,7 @@ StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc, SourceLocation LBraceLoc,
// Register.
if (Operands[i]->isReg()) {
// Clobber.
- if (NumDefs && (MapAndConstraints[i-1].first < NumDefs)) {
+ if (NumDefs && (Operands[i]->getMCOperandNum() < NumDefs)) {
std::string Reg;
llvm::raw_string_ostream OS(Reg);
IP->printRegName(OS, Operands[i]->getReg());
@@ -551,7 +548,6 @@ StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc, SourceLocation LBraceLoc,
ExprResult Result = ActOnIdExpression(getCurScope(), SS, Loc, Id,
false, false);
if (!Result.isInvalid()) {
- // FIXME: Determine the proper constraints.
bool isMemDef = (i == 1) && Desc.mayStore();
if (isMemDef) {
Outputs.push_back(II);
@@ -559,14 +555,14 @@ StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc, SourceLocation LBraceLoc,
OutputExprNames.push_back(Name.str());
OutputExprStrIdx.push_back(StrIdx);
- std::string Constraint = "=" + MapAndConstraints[i-1].second;
+ std::string Constraint = "=" + Operands[i]->getConstraint().str();
OutputConstraints.push_back(Constraint);
} else {
Inputs.push_back(II);
InputExprs.push_back(Result.take());
InputExprNames.push_back(Name.str());
InputExprStrIdx.push_back(StrIdx);
- InputConstraints.push_back(MapAndConstraints[i-1].second);
+ InputConstraints.push_back(Operands[i]->getConstraint());
}
}
}
OpenPOWER on IntegriCloud