mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
[objc-arc] Move the before optimization statistics gathering phase out of OptimizeIndividualCalls.
This makes the statistics gathering completely independent of the actual optimization occuring, preventing any sort of bleeding over from occuring. Additionally, it simplifies a switch statement in the non-statistic gathering case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181719 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
42f562a169
commit
fa709768b9
@ -1440,11 +1440,7 @@ void ObjCARCOpt::OptimizeIndividualCalls(Function &F) {
|
||||
case IC_RetainBlock:
|
||||
// If we strength reduce an objc_retainBlock to an objc_retain, continue
|
||||
// onto the objc_retain peephole optimizations. Otherwise break.
|
||||
if (!OptimizeRetainBlockCall(F, Inst, Class))
|
||||
break;
|
||||
// FALLTHROUGH
|
||||
case IC_Retain:
|
||||
++NumRetainsBeforeOpt;
|
||||
OptimizeRetainBlockCall(F, Inst, Class);
|
||||
break;
|
||||
case IC_RetainRV:
|
||||
if (OptimizeRetainRVCall(F, Inst))
|
||||
@ -1453,9 +1449,6 @@ void ObjCARCOpt::OptimizeIndividualCalls(Function &F) {
|
||||
case IC_AutoreleaseRV:
|
||||
OptimizeAutoreleaseRVCall(F, Inst, Class);
|
||||
break;
|
||||
case IC_Release:
|
||||
++NumReleasesBeforeOpt;
|
||||
break;
|
||||
}
|
||||
|
||||
// objc_autorelease(x) -> objc_release(x) if x is otherwise unused.
|
||||
@ -3050,6 +3043,12 @@ bool ObjCARCOpt::runOnFunction(Function &F) {
|
||||
|
||||
PA.setAA(&getAnalysis<AliasAnalysis>());
|
||||
|
||||
#ifndef NDEBUG
|
||||
if (AreStatisticsEnabled()) {
|
||||
GatherStatistics(F, false);
|
||||
}
|
||||
#endif
|
||||
|
||||
// This pass performs several distinct transformations. As a compile-time aid
|
||||
// when compiling code that isn't ObjC, skip these if the relevant ObjC
|
||||
// library functions aren't declared.
|
||||
|
Loading…
Reference in New Issue
Block a user