diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/lib/CodeGen/CGObjCMac.cpp @@ -3329,7 +3329,7 @@ struct _objc_method_list *instance_methods; struct _objc_method_list *class_methods; struct _objc_protocol_list *protocols; - uint32_t size; // + uint32_t size; // sizeof(struct _objc_category) struct _objc_property_list *instance_properties; struct _objc_property_list *class_properties; }; @@ -4486,14 +4486,10 @@ want to implement correct ObjC/C++ exception interactions for the fragile ABI. - Note that for this use of setjmp/longjmp to be correct, we may need - to mark some local variables volatile: if a non-volatile local - variable is modified between the setjmp and the longjmp, it has - indeterminate value. For the purposes of LLVM IR, it may be - sufficient to make loads and stores within the @try (to variables - declared outside the @try) volatile. This is necessary for - optimized correctness, but is not currently being done; this is - being tracked as rdar://problem/8160285 + Note that for this use of setjmp/longjmp to be correct in the presence of + optimization, we use inline assembly on the set of local variables to force + flushing locals to memory immediately before any protected calls and to + inhibit optimizing locals across the setjmp->catch edge. The basic framework for a @try-catch-finally is as follows: { @@ -5092,7 +5088,8 @@ eImageInfo_OptimizedByDyld = (1 << 3), // This flag is set by the dyld shared cache. // A flag indicating that the module has no instances of a @synthesize of a - // superclass variable. + // superclass variable. This flag used to be consumed by the runtime to work + // around miscompile by gcc. eImageInfo_CorrectedSynthesize = (1 << 4), // This flag is no longer set by clang. eImageInfo_ImageIsSimulated = (1 << 5), eImageInfo_ClassProperties = (1 << 6) diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -5983,7 +5983,7 @@ } // Note: -fwritable-strings doesn't make the backing store strings of - // CFStrings writable. (See ) + // CFStrings writable. auto *GV = new llvm::GlobalVariable(getModule(), C->getType(), /*isConstant=*/true, llvm::GlobalValue::PrivateLinkage, C, ".str"); diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5578,8 +5578,8 @@ } // Enable -mconstructor-aliases except on darwin, where we have to work around - // a linker bug (see ), and CUDA device code, where - // aliases aren't supported. + // a linker bug (see https://openradar.appspot.com/7198997), and CUDA device + // code, where aliases aren't supported. if (!RawTriple.isOSDarwin() && !RawTriple.isNVPTX()) CmdArgs.push_back("-mconstructor-aliases"); diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp --- a/clang/lib/Sema/SemaObjCProperty.cpp +++ b/clang/lib/Sema/SemaObjCProperty.cpp @@ -2795,9 +2795,7 @@ } // FIXME: Implement warning dependent on NSCopying being - // implemented. See also: - // - // (please trim this list while you are at it). + // implemented. } if (!(Attributes & ObjCPropertyAttribute::kind_copy) &&