Add support for Pascal strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42974 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/SemaExpr.cpp b/Sema/SemaExpr.cpp
index 904230f..471312b 100644
--- a/Sema/SemaExpr.cpp
+++ b/Sema/SemaExpr.cpp
@@ -46,11 +46,22 @@
     StringTokLocs.push_back(StringToks[i].getLocation());
   
   // FIXME: handle wchar_t
-  QualType t = Context.getPointerType(Context.CharTy);
+  QualType t;
+  
+  if (Literal.Pascal) 
+    t = Context.getPointerType(Context.UnsignedCharTy);
+  else
+    t = Context.getPointerType(Context.CharTy);
+  
+  if (Literal.Pascal && Literal.GetStringLength() > 256)
+    return Diag(StringToks[0].getLocation(), diag::err_pascal_string_too_long,
+                SourceRange(StringToks[0].getLocation(),
+                            StringToks[NumStringToks-1].getLocation()));
   
   // Pass &StringTokLocs[0], StringTokLocs.size() to factory!
   return new StringLiteral(Literal.GetString(), Literal.GetStringLength(), 
-                           Literal.AnyWide, t, StringToks[0].getLocation(),
+                           Literal.AnyWide, t, 
+                           StringToks[0].getLocation(),
                            StringToks[NumStringToks-1].getLocation());
 }