From 087bc13d968919ab08e25b80447b7d8b528dea08 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Sat, 30 Jan 2010 20:05:21 +0000 Subject: [PATCH] More asm cleanup. llvm-svn: 94920 --- clang/include/clang/AST/Stmt.h | 13 ------------- clang/lib/CodeGen/CGStmt.cpp | 12 ++++++------ clang/lib/Sema/TreeTransform.h | 8 +++++++- 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h index a2dda2a959d8..cc87867f1f5b 100644 --- a/clang/include/clang/AST/Stmt.h +++ b/clang/include/clang/AST/Stmt.h @@ -1261,7 +1261,6 @@ public: return Constraints[i + NumOutputs]; } - Expr *getInputExpr(unsigned i); const Expr *getInputExpr(unsigned i) const { @@ -1283,8 +1282,6 @@ public: /// This returns -1 if the operand name is invalid. int getNamedOperand(const std::string &SymbolicName) const; - - unsigned getNumClobbers() const { return Clobbers.size(); } StringLiteral *getClobber(unsigned i) { return Clobbers[i]; } const StringLiteral *getClobber(unsigned i) const { return Clobbers[i]; } @@ -1336,16 +1333,6 @@ public: return Exprs.data() + NumOutputs; } - // Input name iterator. - - const std::string *begin_output_names() const { - return &Names[0]; - } - - const std::string *end_output_names() const { - return &Names[0] + NumOutputs; - } - // Child iterators virtual child_iterator child_begin(); diff --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp index 12cf96375504..7ea8b08c238e 100644 --- a/clang/lib/CodeGen/CGStmt.cpp +++ b/clang/lib/CodeGen/CGStmt.cpp @@ -916,18 +916,18 @@ void CodeGenFunction::EmitAsmStmt(const AsmStmt &S) { for (unsigned i = 0, e = S.getNumOutputs(); i != e; i++) { TargetInfo::ConstraintInfo Info(S.getOutputConstraint(i), S.getOutputName(i)); - bool result = Target.validateOutputConstraint(Info); - assert(result && "Failed to parse output constraint"); result=result; + assert(Target.validateOutputConstraint(Info) && + "Failed to parse output constraint"); OutputConstraintInfos.push_back(Info); } for (unsigned i = 0, e = S.getNumInputs(); i != e; i++) { TargetInfo::ConstraintInfo Info(S.getInputConstraint(i), S.getInputName(i)); - bool result = Target.validateInputConstraint(OutputConstraintInfos.data(), - S.getNumOutputs(), - Info); result=result; - assert(result && "Failed to parse input constraint"); + assert(Target.validateInputConstraint(OutputConstraintInfos.data(), + S.getNumOutputs(), + Info) && + "Failed to parse input constraint"); InputConstraintInfos.push_back(Info); } diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 4e29c3ad85f9..90b5365f04b8 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -3352,6 +3352,8 @@ TreeTransform::TransformAsmStmt(AsmStmt *S) { ASTOwningVector<&ActionBase::DeleteExpr> Constraints(getSema()); ASTOwningVector<&ActionBase::DeleteExpr> Exprs(getSema()); + llvm::SmallVector Names; + OwningExprResult AsmString(SemaRef); ASTOwningVector<&ActionBase::DeleteExpr> Clobbers(getSema()); @@ -3359,6 +3361,8 @@ TreeTransform::TransformAsmStmt(AsmStmt *S) { // Go through the outputs. for (unsigned I = 0, E = S->getNumOutputs(); I != E; ++I) { + Names.push_back(S->getOutputName(I)); + // No need to transform the constraint literal. Constraints.push_back(S->getOutputConstraintLiteral(I)->Retain()); @@ -3375,6 +3379,8 @@ TreeTransform::TransformAsmStmt(AsmStmt *S) { // Go through the inputs. for (unsigned I = 0, E = S->getNumInputs(); I != E; ++I) { + Names.push_back(S->getInputName(I)); + // No need to transform the constraint literal. Constraints.push_back(S->getInputConstraintLiteral(I)->Retain()); @@ -3404,7 +3410,7 @@ TreeTransform::TransformAsmStmt(AsmStmt *S) { S->isVolatile(), S->getNumOutputs(), S->getNumInputs(), - S->begin_output_names(), + Names.data(), move_arg(Constraints), move_arg(Exprs), move(AsmString),