diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-10-12 22:53:52 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-10-12 22:53:52 +0000 |
commit | 7d1ec922ff15ef8cde90977275f37171bc1ad85e (patch) | |
tree | 1a97981db8bf422c1e59866a0f44946652da97c9 /clang/lib/Sema/SemaStmtAsm.cpp | |
parent | 2f480a8a50727c0aca1da9b37f29e15168175988 (diff) | |
download | bcm5719-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.cpp | 14 |
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()); } } } |