[ms-inline asm] Simplify logic for empty asm statements.
authorChad Rosier <mcrosier@apple.com>
Thu, 9 Aug 2012 20:52:43 +0000 (20:52 +0000)
committerChad Rosier <mcrosier@apple.com>
Thu, 9 Aug 2012 20:52:43 +0000 (20:52 +0000)
llvm-svn: 161615

clang/lib/Sema/SemaStmt.cpp

index f2d1555..856a602 100644 (file)
@@ -2888,6 +2888,16 @@ StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc,
   // MS-style inline assembly is not fully supported, so emit a warning.
   Diag(AsmLoc, diag::warn_unsupported_msasm);
 
+  // Empty asm statements don't need to instantiate the AsmParser, etc.
+  if (AsmToks.empty()) {
+    std::string AsmString;
+    MSAsmStmt *NS =
+      new (Context) MSAsmStmt(Context, AsmLoc, /* IsSimple */ true,
+                              /* IsVolatile */ true, AsmToks, LineEnds,
+                              AsmString, EndLoc);
+    return Owned(NS);
+  }
+
   std::string AsmString = buildMSAsmString(*this, AsmToks, LineEnds);
 
   bool IsSimple;