forked from OSchip/llvm-project
Set a bit in IMAGE_INFO to indicate that we don't contain any
@synthesized ivars for superclasses. - <rdar://problem/6806371> [clang] Mark code without miscompiled @synthesized properties llvm-svn: 69581
This commit is contained in:
parent
52289d3343
commit
75e909f5e0
|
@ -2426,9 +2426,15 @@ llvm::Value *CGObjCMac::EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
|
|||
/// unsigned flags;
|
||||
/// };
|
||||
enum ImageInfoFlags {
|
||||
eImageInfo_FixAndContinue = (1 << 0), // FIXME: Not sure what this implies
|
||||
eImageInfo_GarbageCollected = (1 << 1),
|
||||
eImageInfo_GCOnly = (1 << 2)
|
||||
eImageInfo_FixAndContinue = (1 << 0), // FIXME: Not sure what
|
||||
// this implies.
|
||||
eImageInfo_GarbageCollected = (1 << 1),
|
||||
eImageInfo_GCOnly = (1 << 2),
|
||||
eImageInfo_OptimizedByDyld = (1 << 3), // FIXME: When is this set.
|
||||
|
||||
// A flag indicating that the module has no instances of an
|
||||
// @synthesize of a superclass variable. <rdar://problem/6803242>
|
||||
eImageInfo_CorrectedSynthesize = (1 << 4)
|
||||
};
|
||||
|
||||
void CGObjCMac::EmitImageInfo() {
|
||||
|
@ -2440,6 +2446,9 @@ void CGObjCMac::EmitImageInfo() {
|
|||
flags |= eImageInfo_GarbageCollected;
|
||||
if (CGM.getLangOptions().getGCMode() == LangOptions::GCOnly)
|
||||
flags |= eImageInfo_GCOnly;
|
||||
|
||||
// We never allow @synthesize of a superclass property.
|
||||
flags |= eImageInfo_CorrectedSynthesize;
|
||||
|
||||
// Emitted as int[2];
|
||||
llvm::Constant *values[2] = {
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
// RUN: clang-cc -triple x86_64-apple-darwin-10 -emit-llvm -o %t %s &&
|
||||
// RUN: grep -F '@"\01L_OBJC_IMAGE_INFO" = internal constant [2 x i32] [i32 0, i32 16], section "__OBJC, __image_info,regular"' %t
|
Loading…
Reference in New Issue