05c41162fb
Our inliner would ignore any functions with `inout` parameters, because inlining them properly was more complex than just leaving the function call. However, real-world code can sometimes contain helper functions that have `inout` params that are never used at all (e.g. an uber-shader with some features turned off). We now read the ProgramUsage and check to see whether or not the `inout`-qualified parameter is actually modified. If it's never changed, the function now remains a candidate for inlining. Change-Id: I92e494f94cc070801cb9aa28bd13faa689b806b6 Bug: skia:12636 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/470299 Commit-Queue: John Stiles <johnstiles@google.com> Auto-Submit: John Stiles <johnstiles@google.com> Reviewed-by: Brian Osman <brianosman@google.com> |
||
---|---|---|
.. | ||
DoWhileBodyMustBeInlinedIntoAScope.glsl | ||
DoWhileTestCannotBeInlined.glsl | ||
ExponentialGrowth.glsl | ||
ExponentialGrowthStandaloneSettings.glsl | ||
ForBodyMustBeInlinedIntoAScope.glsl | ||
ForInitializerExpressionsCanBeInlined.glsl | ||
ForWithoutReturnInsideCanBeInlined.glsl | ||
ForWithReturnInsideCannotBeInlined.glsl | ||
IfBodyMustBeInlinedIntoAScope.glsl | ||
IfElseBodyMustBeInlinedIntoAScope.glsl | ||
IfElseChainWithReturnsCanBeInlined.glsl | ||
IfTestCanBeInlined.glsl | ||
IfWithReturnsCanBeInlined.glsl | ||
InlineKeywordOverridesThreshold.glsl | ||
InlinerAvoidsVariableNameOverlap.glsl | ||
InlinerCanBeDisabled.glsl | ||
InlinerCanBeDisabledStandaloneSettings.glsl | ||
InlinerElidesTempVarForReturnsInsideBlock.glsl | ||
InlinerHonorsGLSLOutParamSemantics.glsl | ||
InlinerManglesNames.glsl | ||
InlinerUsesTempVarForMultipleReturns.glsl | ||
InlinerUsesTempVarForReturnsInsideBlockWithVar.glsl | ||
InlineThreshold.glsl | ||
InlineWithInoutArgument.glsl | ||
InlineWithModifiedArgument.glsl | ||
InlineWithNestedBigCalls.glsl | ||
InlineWithNestedCalls.glsl | ||
InlineWithUnmodifiedArgument.glsl | ||
InlineWithUnnecessaryBlocks.glsl | ||
NoInline.glsl | ||
Ossfuzz37994.glsl | ||
ShortCircuitEvaluationsCannotInlineRightHandSide.glsl | ||
StaticSwitch.glsl | ||
StructsCanBeInlinedSafely.glsl | ||
SwitchWithCastCanBeInlined.glsl | ||
SwitchWithoutReturnInsideCanBeInlined.glsl | ||
SwizzleCanBeInlinedDirectly.glsl | ||
TernaryResultsCannotBeInlined.glsl | ||
TernaryTestCanBeInlined.glsl | ||
TrivialArgumentsInlineDirectly.glsl | ||
WhileBodyMustBeInlinedIntoAScope.glsl | ||
WhileTestCannotBeInlined.glsl |