[modules] Merge equivalent extensions and diagnose ivar redeclarations for...
[modules] Merge equivalent extensions and diagnose ivar redeclarations for extensions loaded from different modules. Emitting metadata for the same ivar multiple times can lead to miscompilations. Objective-C runtime adds offsets to calculate ivar position in memory and presence of duplicate offsets causes wrong final position thus overwriting unrelated memory. Such a situation is impossible with modules disabled as clang diagnoses ivar redeclarations during sema checks after parsing (`Sema::ActOnFields`). Fix the case with modules enabled by checking during deserialization if ivar is already declared. We also support a use case where the same category ends up in multiple modules. We don't want to treat this case as ivar redeclaration and instead merge corresponding ivars. rdar://83468070 Differential Revision: https://reviews.llvm.org/D121177
Loading
Please sign in to comment