aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AST/ASTContext.cpp12
-rw-r--r--test/CodeGen/cfstring.c6
2 files changed, 13 insertions, 5 deletions
diff --git a/AST/ASTContext.cpp b/AST/ASTContext.cpp
index 9d597bcc43..740d6e56fa 100644
--- a/AST/ASTContext.cpp
+++ b/AST/ASTContext.cpp
@@ -870,18 +870,20 @@ QualType ASTContext::getCFConstantStringType() {
CFConstantStringTypeDecl = new RecordDecl(Decl::Struct, SourceLocation(),
&Idents.get("NSConstantString"),
0);
- QualType FieldTypes[3];
+ QualType FieldTypes[4];
// const int *isa;
FieldTypes[0] = getPointerType(IntTy.getQualifiedType(QualType::Const));
+ // int flags;
+ FieldTypes[1] = IntTy;
// const char *str;
- FieldTypes[1] = getPointerType(CharTy.getQualifiedType(QualType::Const));
+ FieldTypes[2] = getPointerType(CharTy.getQualifiedType(QualType::Const));
// long length;
- FieldTypes[2] = LongTy;
+ FieldTypes[3] = LongTy;
// Create fields
- FieldDecl *FieldDecls[3];
+ FieldDecl *FieldDecls[4];
- for (unsigned i = 0; i < 3; ++i)
+ for (unsigned i = 0; i < 4; ++i)
FieldDecls[i] = new FieldDecl(SourceLocation(), 0, FieldTypes[i]);
CFConstantStringTypeDecl->defineBody(FieldDecls, 4);
diff --git a/test/CodeGen/cfstring.c b/test/CodeGen/cfstring.c
new file mode 100644
index 0000000000..c7df1b3033
--- /dev/null
+++ b/test/CodeGen/cfstring.c
@@ -0,0 +1,6 @@
+// RUN: clang -emit-llvm %s
+#define CFSTR __builtin___CFStringMakeConstantString
+
+void f() {
+ CFSTR("Hello, World!");
+} \ No newline at end of file