[ms-inline asm] Add the left brace source location and improve the pretty
printer.  Patch by Enea Zaffanella <zaffanella@cs.unipr.it>.

llvm-svn: 161958
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp
index 5bcc33f..74e8cfe 100644
--- a/clang/lib/Sema/SemaStmt.cpp
+++ b/clang/lib/Sema/SemaStmt.cpp
@@ -2852,6 +2852,7 @@
 }
 
 StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc,
+                                SourceLocation LBraceLoc,
                                 ArrayRef<Token> AsmToks,
                                 SourceLocation EndLoc) {
   // MS-style inline assembly is not fully supported, so emit a warning.
@@ -2862,9 +2863,9 @@
   if (AsmToks.empty()) {
     StringRef AsmString;
     MSAsmStmt *NS =
-      new (Context) MSAsmStmt(Context, AsmLoc, /* IsSimple */ true,
-                              /* IsVolatile */ true, AsmToks, AsmString,
-                              Clobbers, EndLoc);
+      new (Context) MSAsmStmt(Context, AsmLoc, LBraceLoc,
+                              /* IsSimple */ true, /* IsVolatile */ true,
+                              AsmToks, AsmString, Clobbers, EndLoc);
     return Owned(NS);
   }
 
@@ -2888,9 +2889,9 @@
   // patchMSAsmStrings doesn't correctly patch non-simple asm statements.
   if (!IsSimple) {
     MSAsmStmt *NS =
-      new (Context) MSAsmStmt(Context, AsmLoc, /* IsSimple */ true,
-                              /* IsVolatile */ true, AsmToks, AsmString,
-                              Clobbers, EndLoc);
+      new (Context) MSAsmStmt(Context, AsmLoc, LBraceLoc,
+                              /* IsSimple */ true, /* IsVolatile */ true,
+                              AsmToks, AsmString, Clobbers, EndLoc);
     return Owned(NS);
   }
 
@@ -2980,7 +2981,8 @@
   }
 
   MSAsmStmt *NS =
-    new (Context) MSAsmStmt(Context, AsmLoc, IsSimple, /* IsVolatile */ true,
+    new (Context) MSAsmStmt(Context, AsmLoc, LBraceLoc,
+                            IsSimple, /* IsVolatile */ true,
                             AsmToks, AsmString, Clobbers, EndLoc);
 
   return Owned(NS);