From: Fariborz Jahanian Date: Tue, 23 Aug 2011 23:33:09 +0000 (+0000) Subject: objc - fix up the builtin type for objc_assign_ivar. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cc075e4092900ac9eec9dc92e35096eae1ee29c7;p=clang objc - fix up the builtin type for objc_assign_ivar. // rdar://9362887. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138412 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/Builtins.def b/include/clang/Basic/Builtins.def index f45ca4458f..d12a04d8f1 100644 --- a/include/clang/Basic/Builtins.def +++ b/include/clang/Basic/Builtins.def @@ -35,6 +35,7 @@ // A -> "reference" to __builtin_va_list // V -> Vector, following num elements and a base type. // X -> _Complex, followed by the base type. +// Y -> ptrdiff_t // P -> FILE // J -> jmp_buf // SJ -> sigjmp_buf @@ -690,8 +691,7 @@ LIBBUILTIN(objc_read_weak, "GG*", "f", "/objc/objc-auto.h", OBJC_LANG) // id objc_assign_weak(id value, id *location) LIBBUILTIN(objc_assign_weak, "GGG*", "f", "/objc/objc-auto.h", OBJC_LANG) // id objc_assign_ivar(id value, id dest, ptrdiff_t offset) -// FIXME. Darwin has ptrdiff_t typedef'ed to int. -LIBBUILTIN(objc_assign_ivar, "GGGi", "f", "/objc/objc-auto.h", OBJC_LANG) +LIBBUILTIN(objc_assign_ivar, "GGGY", "f", "/objc/objc-auto.h", OBJC_LANG) // id objc_assign_global(id val, id *dest) LIBBUILTIN(objc_assign_global, "GGG*", "f", "/objc/objc-auto.h", OBJC_LANG) // id objc_assign_strongCast(id val, id *dest diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 1b2c5cf418..75a573e301 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -6140,7 +6140,11 @@ static QualType DecodeTypeFromStr(const char *&Str, const ASTContext &Context, assert(!RequiresICE && "Can't require complex ICE"); Type = Context.getComplexType(ElementType); break; - } + } + case 'Y' : { + Type = Context.getPointerDiffType(); + break; + } case 'P': Type = Context.getFILEType(); if (Type.isNull()) { diff --git a/test/SemaObjC/builtin_objc_assign_ivar.m b/test/SemaObjC/builtin_objc_assign_ivar.m new file mode 100644 index 0000000000..5839bf4444 --- /dev/null +++ b/test/SemaObjC/builtin_objc_assign_ivar.m @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 -x objective-c %s -fsyntax-only -verify +// rdar://9362887 + +typedef __typeof__(((int*)0)-((int*)0)) ptrdiff_t; +extern id objc_assign_ivar(id value, id dest, ptrdiff_t offset); +