diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-04-20 07:11:47 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-04-20 07:11:47 +0000 |
| commit | 75e909f5e0d6ed0ac62a4d11022a03c47b459192 (patch) | |
| tree | 561a78305d887b794bb9649b4c112f72043af61e /clang/lib/CodeGen | |
| parent | 52289d3343476af6a27a9ac0e677b615b4cd3841 (diff) | |
| download | bcm5719-llvm-75e909f5e0d6ed0ac62a4d11022a03c47b459192.tar.gz bcm5719-llvm-75e909f5e0d6ed0ac62a4d11022a03c47b459192.zip | |
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
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGObjCMac.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp index 0c7b6f6160f..b95e67e7074 100644 --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/lib/CodeGen/CGObjCMac.cpp @@ -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] = { |

