diff --git a/clang/AST/ASTContext.cpp b/clang/AST/ASTContext.cpp index 9d597bcc4306b3e79af0bab2982e81345ac01ee4..740d6e56fab6afe43102e812143e4b7d148e8157 100644 --- a/clang/AST/ASTContext.cpp +++ b/clang/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/clang/test/CodeGen/cfstring.c b/clang/test/CodeGen/cfstring.c new file mode 100644 index 0000000000000000000000000000000000000000..c7df1b303397b1ebcb63d8e08d6ab0f80868a1eb --- /dev/null +++ b/clang/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