2e25ff436a
This causes a ~4% regression on sksl_large, but some of that can be bought back in two ways: 1) Removing (now unnecessary) cloning of program elements 2) Hoisting the new analysis passes, with (nontrivial) logic to update/maintain the call counts as we edit IR. Also, this fixes bugs where we were emitting functions that had "calls" from no-longer called functions. Bug: skia:10776 Change-Id: I4f8c29957be2e4233a883c9a1125f363b82ee40c Reviewed-on: https://skia-review.googlesource.com/c/skia/+/327198 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: John Stiles <johnstiles@google.com> |
||
---|---|---|
.. | ||
golden | ||
DoWhileBodyMustBeInlinedIntoAScope.sksl | ||
DoWhileTestCannotBeInlined.sksl | ||
ForBodyMustBeInlinedIntoAScope.sksl | ||
ForInitializerExpressionsCanBeInlined.sksl | ||
ForWithoutReturnInsideCanBeInlined.sksl | ||
ForWithReturnInsideCannotBeInlined.sksl | ||
IfBodyMustBeInlinedIntoAScope.sksl | ||
IfElseBodyMustBeInlinedIntoAScope.sksl | ||
IfElseChainWithReturnsCanBeInlined.sksl | ||
IfTestCanBeInlined.sksl | ||
IfWithReturnsCanBeInlined.sksl | ||
InlineKeywordOverridesThreshold.sksl | ||
InlinerAvoidsVariableNameOverlap.sksl | ||
InlinerCanBeDisabled.sksl | ||
InlinerManglesNames.sksl | ||
InlinerWrapsEarlyReturnsWithDoWhileBlock.sksl | ||
InlineThreshold.sksl | ||
InlineWithInoutArgument.sksl | ||
InlineWithModifiedArgument.sksl | ||
InlineWithNestedBigCalls.sksl | ||
InlineWithNestedCalls.sksl | ||
InlineWithUnmodifiedArgument.sksl | ||
InlineWithUnnecessaryBlocks.sksl | ||
ShortCircuitEvaluationsCannotInlineRightHandSide.sksl | ||
SwitchWithCastCanBeInlined.sksl | ||
SwitchWithoutReturnInsideCanBeInlined.sksl | ||
SwitchWithReturnInsideCannotBeInlined.sksl | ||
SwizzleCanBeInlinedDirectly.sksl | ||
TernaryResultsCannotBeInlined.sksl | ||
TernaryTestCanBeInlined.sksl | ||
TrivialArgumentsInlineDirectly.sksl | ||
WhileBodyMustBeInlinedIntoAScope.sksl | ||
WhileTestCannotBeInlined.sksl |