]> granicus.if.org Git - clang/commitdiff
[ms-inline asm] Remove a bunch of parsing code from the front-end.
authorChad Rosier <mcrosier@apple.com>
Fri, 12 Oct 2012 23:32:10 +0000 (23:32 +0000)
committerChad Rosier <mcrosier@apple.com>
Fri, 12 Oct 2012 23:32:10 +0000 (23:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165851 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaStmtAsm.cpp

index a3a1df62d9ad6d2940b50b68feda5381d335f337..f99c9834531b9859abd10898e61acbdffe373ce0 100644 (file)
@@ -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<StringRef> &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<std::vector<StringRef> > 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<StringRef> &Pieces) {
   std::pair<StringRef,StringRef> Split = Asm.split(' ');
@@ -447,8 +428,6 @@ StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc, SourceLocation LBraceLoc,
   std::vector<std::vector<StringRef> > 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,