summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2009-04-01 03:17:08 +0000
committerEli Friedman <eli.friedman@gmail.com>2009-04-01 03:17:08 +0000
commit1c3fb22cadf034989c0b6110056fb5695bc2ab16 (patch)
tree7cfbb91ea5afdd0758c82a2684540a7a2e71bfcb
parent706e0a14e2fafeaaca889ac89ae614a5967d9a9b (diff)
downloadbcm5719-llvm-1c3fb22cadf034989c0b6110056fb5695bc2ab16.tar.gz
bcm5719-llvm-1c3fb22cadf034989c0b6110056fb5695bc2ab16.zip
Fix pascal string support; testcase from mailing list message.
llvm-svn: 68181
-rw-r--r--clang/lib/Lex/LiteralSupport.cpp7
-rw-r--r--clang/test/CodeGen/pascal-string.c8
2 files changed, 12 insertions, 3 deletions
diff --git a/clang/lib/Lex/LiteralSupport.cpp b/clang/lib/Lex/LiteralSupport.cpp
index 11bb1f25ad2..345291382da 100644
--- a/clang/lib/Lex/LiteralSupport.cpp
+++ b/clang/lib/Lex/LiteralSupport.cpp
@@ -863,12 +863,13 @@ StringLiteralParser(const Token *StringToks, unsigned NumStringToks,
ResultBuf[0] = ResultPtr-&ResultBuf[0]-1;
// Verify that pascal strings aren't too large.
- if (GetStringLength() > 256)
+ if (GetStringLength() > 256) {
PP.Diag(StringToks[0].getLocation(), diag::err_pascal_string_too_long)
<< SourceRange(StringToks[0].getLocation(),
StringToks[NumStringToks-1].getLocation());
- hadError = 1;
- return;
+ hadError = 1;
+ return;
+ }
}
}
diff --git a/clang/test/CodeGen/pascal-string.c b/clang/test/CodeGen/pascal-string.c
new file mode 100644
index 00000000000..fcd807cde7b
--- /dev/null
+++ b/clang/test/CodeGen/pascal-string.c
@@ -0,0 +1,8 @@
+// RUN: clang-cc -emit-llvm -o - %s -fpascal-strings | grep "05Hello"
+
+unsigned char * Foo( void )
+{
+ static unsigned char s[256] = "\pHello";
+ return s;
+}
+
OpenPOWER on IntegriCloud