From aac08d2c3de03238a95752e6358c952adff8f950 Mon Sep 17 00:00:00 2001 From: Chad Rosier Date: Fri, 12 Oct 2012 23:32:10 +0000 Subject: [PATCH] [ms-inline asm] Remove a bunch of parsing code from the front-end. llvm-svn: 165851 --- clang/lib/Sema/SemaStmtAsm.cpp | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/clang/lib/Sema/SemaStmtAsm.cpp b/clang/lib/Sema/SemaStmtAsm.cpp index a3a1df6..f99c983 100644 --- a/clang/lib/Sema/SemaStmtAsm.cpp +++ b/clang/lib/Sema/SemaStmtAsm.cpp @@ -331,25 +331,6 @@ static StringRef getSpelling(Sema &SemaRef, Token AsmTok) { return Asm; } -// Determine if this is a simple MSAsm instruction. -static bool isSimpleMSAsm(std::vector &Pieces, - const TargetInfo &TI) { - for (unsigned i = 1, e = Pieces.size(); i != e; ++i) { - if (!TI.isValidGCCRegisterName(Pieces[i])) - return false; - } - return true; -} - -// Determine if this is a simple MSAsm block. -static bool isSimpleMSAsm(std::vector > Pieces, - const TargetInfo &TI) { - for (unsigned i = 0, e = Pieces.size(); i != e; ++i) - if (!isSimpleMSAsm(Pieces[i], TI)) - return false; - return true; -} - // Break the AsmString into pieces (i.e., mnemonic and operands). static void buildMSAsmPieces(StringRef Asm, std::vector &Pieces) { std::pair Split = Asm.split(' '); @@ -447,8 +428,6 @@ StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc, SourceLocation LBraceLoc, std::vector > Pieces(AsmStrings.size()); buildMSAsmPieces(AsmStrings, Pieces); - bool IsSimple = isSimpleMSAsm(Pieces, Context.getTargetInfo()); - // Get the target specific parser. std::string Error; const std::string &TT = Context.getTargetInfo().getTriple().getTriple(); @@ -640,6 +619,7 @@ StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc, SourceLocation LBraceLoc, } } + bool IsSimple = Inputs.size() != 0 || Outputs.size() != 0; MSAsmStmt *NS = new (Context) MSAsmStmt(Context, AsmLoc, LBraceLoc, IsSimple, /*IsVolatile*/ true, AsmToks, Inputs, Outputs, -- 2.7.4