fix PR6780, properly handling the IR {|} escapes in inline asm strings.

llvm-svn: 100449
diff --git a/clang/lib/AST/Stmt.cpp b/clang/lib/AST/Stmt.cpp
index 8347249..9702382 100644
--- a/clang/lib/AST/Stmt.cpp
+++ b/clang/lib/AST/Stmt.cpp
@@ -249,14 +249,18 @@
     }
 
     char CurChar = *CurPtr++;
-    if (CurChar == '$') {
-      CurStringPiece += "$$";
-      continue;
-    } else if (CurChar != '%') {
+    switch (CurChar) {
+    case '$': CurStringPiece += "$$"; continue;
+    case '{': CurStringPiece += "$("; continue;
+    case '|': CurStringPiece += "$|"; continue;
+    case '}': CurStringPiece += "$)"; continue;
+    case '%':
+      break;
+    default:
       CurStringPiece += CurChar;
       continue;
     }
-
+    
     // Escaped "%" character in asm string.
     if (CurPtr == StrEnd) {
       // % at end of string is invalid (no escape).