<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/81369>81369</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Subclasses of subclasses of NSObject are part of the non-fragile abi even when direct subclasses of NSObject are not
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
AtariDreams
</td>
</tr>
</table>
<pre>
Even when the offsets are fixed, clang is assuming classes that can be proven to inherit from classes that inherit from NSObject and so on are not fixed-width, even though they are and a lot of missed optimizations are because of it.
@"OBJC_IVAR_$_StaticLayoutSubClass.static_layout_ivar2" = hidden global i64 24
it should be hidden constant i64 24
@interface NSObject {
int these, will, never, change, ever;
}
@end
@interface StaticLayout : NSObject
@end
@implementation StaticLayout {
int static_layout_ivar;
}
-(void)meth {
static_layout_ivar = 0;
// CHECK-NOT: load i64, ptr @"OBJC_IVAR_$_StaticLayout
}
@end
@interface StaticLayoutSubClass : StaticLayout
@end
@implementation StaticLayoutSubClass {
int static_layout_ivar2;
}
-(void)meth2 {
static_layout_ivar2 = 0;
// CHECK: load i64, ptr @"OBJC_IVAR_$_StaticLayoutSubClass
// CHECK-NOT: load i64, ptr @"OBJC_IVAR_$_StaticLayoutSubClass
}
@end
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyclF1v6zYMhn-NfEMkcGQ3cS58kSYn2BdOgXXYbUBbtK1BlgKJTtf9-kFK-pHTrsV6EyES-ZJ8aLwYgu4tUS1ubsXNLsOJB-frDaPXO084hqxx6rH-diILDwNZ4IHAdV0gDoCeoNN_kxJyC61B24MOgCFMo7Z9vAmBAvCADC1aaAiO3kUpdqDtQF4zdN6N16FXL9_v75q_qGVAqyA4cDaVtY7PpWcPWvEQG6AkPLipH2KXjykuZiEYx-A6GHUIpMAdWY_6H2Tt7HmIhlqcQhwMNM9B5DuRby6_ZS6kvLv9ZXv4-c_N7wchy8M9I-v2N3x0E99PzTY2Pw_p8mDS7UGf0EshJYhiB4NWiiz0xjVoQC9LkOXrGpohDG4yKhK6BLfOBkbL74SLMteWyXfY0gsfsbo9PwNoy5FAoIjlQRsTT0sn8mlRA9qeLsS8KC5pYrV7lier_rPg6-FBFJvnDj7KHo-GRrKcmP8gcd33W4xvO5wJWZ2cVkKuR-LhtcTb9LSB_FkEhNwLuYftT9-2v86-3_0RRzAOVQQdoRzZw2dL_zqxp88lkXtH8n_Se5H7jKL8FKP8mKP8EeQVya9QfGr-Pb2vbuZa890NZaou1LpYY0b1YpWvbqr1siqzoa5ylXclVkVZYUPYFcuizYtmXa1XpCpUma5lLstcLvJFJau8nBe4omq9Wi3zdnHT5l0sM6I2c2NO49z5PtMhTFRXi2K5zgw2ZEKyWiktPUB6FFJG5_V1zJk1Ux9EmRsdOLyosGZD9f3UPPmk6yBc_XuxSU9wRJ_8Lnq1dXbWeey1IcBGn10yObnSPiZ8oGMdZ5M39cB8DKLYnBfUax6mZt66Uch9bPFyzI7eJR-Q-zRYEHKfBv83AAD__3CkAa8">