Skip to content

Commit e4ea8b5

Browse files
committed
LoadWeak, FusedRetainAutorelease, and FusedRetainAutoreleaseRV can autorelease
So prevent optimization when we see those to be safe.
1 parent fed45ff commit e4ea8b5

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2580,7 +2580,10 @@ void ObjCARCOpt::OptimizeAutoreleasePools(Function &F) {
25802580
case ARCInstKind::CallOrUser:
25812581
case ARCInstKind::Call:
25822582
case ARCInstKind::Autorelease:
2583-
case ARCInstKind::AutoreleaseRV: {
2583+
case ARCInstKind::AutoreleaseRV:
2584+
case ARCInstKind::FusedRetainAutorelease:
2585+
case ARCInstKind::FusedRetainAutoreleaseRV:
2586+
case ARCInstKind::LoadWeak: {
25842587
// Track that we have autorelease calls in the current pool scope
25852588
if (!PoolStack.empty()) {
25862589
PoolStack.back().second = true; // Set has_autorelease_in_scope = true
@@ -2599,12 +2602,9 @@ void ObjCARCOpt::OptimizeAutoreleasePools(Function &F) {
25992602
case ARCInstKind::RetainBlock:
26002603
case ARCInstKind::Release:
26012604
case ARCInstKind::NoopCast:
2602-
case ARCInstKind::FusedRetainAutorelease:
2603-
case ARCInstKind::FusedRetainAutoreleaseRV:
26042605
case ARCInstKind::LoadWeakRetained:
26052606
case ARCInstKind::StoreWeak:
26062607
case ARCInstKind::InitWeak:
2607-
case ARCInstKind::LoadWeak:
26082608
case ARCInstKind::MoveWeak:
26092609
case ARCInstKind::CopyWeak:
26102610
case ARCInstKind::DestroyWeak:

0 commit comments

Comments
 (0)