skia2/resources/sksl/shared
John Stiles f10eff363b Fix misdetection of dead global variables.
A global variable should be considered "dead" if it's never written and
never read. The previous code checked if it was never written OR never
read, which is not the same.

This would generate GLSL/Metal that didn't compile. In SPIR-V, it would
SkASSERT, then crash, during codegen. The fuzzer was able to detect the
SPIR-V issue, but it was wrong in all three cases.

Change-Id: Id59a2499eb5baa3839b93826bfbc24191bfd490b
Bug: oss-fuzz:32005
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/385280
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-03-16 16:02:03 +00:00
..
ArrayConstructors.sksl Reland "Improve support for arrays in Metal." 2021-02-04 17:33:28 +00:00
ArrayIndexTypes.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArrayTypes.sksl Reland "Improve support for arrays in Metal." 2021-02-04 17:33:28 +00:00
Assignment.sksl Fix misdetection of dead global variables. 2021-03-16 16:02:03 +00:00
Caps.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
CastsRoundTowardZero.sksl Migrate more SkSL tests to run in dm. 2021-02-03 23:45:15 +00:00
Clockwise.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
CommaMixedTypes.sksl Add more dm tests for the comma operator. 2021-02-03 01:28:48 +00:00
CommaSideEffects.sksl Add test to verify side effects from the comma operator. 2021-02-01 16:16:58 +00:00
ComplexDelete.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ConstantIf.sksl Update various shared/ tests to run in dm. 2021-02-01 22:06:59 +00:00
ConstArray.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ConstVariableComparison.sksl Align SkSL const rules more closely with GLSL 2021-02-26 17:44:11 +00:00
Control.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DeadDoWhileLoop.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DeadIfStatement.sksl Detect functions that fail to return a value, without using CFG. 2021-03-04 22:47:05 +00:00
DeadLoopVariable.sksl Migrate more SkSL tests to run in dm. 2021-02-03 23:45:15 +00:00
DeadStripFunctions.sksl Eliminate control-flow analysis. 2021-03-11 13:24:54 +00:00
DependentInitializers.sksl Update various shared/ tests to run in dm. 2021-02-01 22:06:59 +00:00
Derivatives.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DerivativesFlipY.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DerivativesUnused.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Discard.sksl Optimize @switch statements in SwitchStatement::Make. 2021-02-23 21:36:04 +00:00
DoWhileControlFlow.sksl Add unit test for control statements in do-while loop. 2021-01-26 16:20:31 +00:00
EmptyBlocksES2.sksl Disallow unscoped for blocks which declare a variable. 2021-03-04 17:04:40 +00:00
EmptyBlocksES3.sksl Disallow unscoped for blocks which declare a variable. 2021-03-04 17:04:40 +00:00
Enum.sksl Optimize @switch statements in SwitchStatement::Make. 2021-02-23 21:36:04 +00:00
ForLoopControlFlow.sksl Reland "Add SkSL for-loop control flow test to dm." 2021-01-27 15:46:39 +00:00
FragCoordsFlipY.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
FragCoordsNew.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
FragCoordsOld.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
FunctionArgTypeMatch.sksl Update function-type-matching tests to work as Runtime Effects. 2021-02-02 13:47:35 +00:00
FunctionPrototype.sksl Migrate more SkSL tests to run in dm. 2021-02-03 23:45:15 +00:00
FunctionReturnTypeMatch.sksl Update function-type-matching tests to work as Runtime Effects. 2021-02-02 13:47:35 +00:00
Functions.sksl Migrate more SkSL tests to run in dm. 2021-02-03 23:45:15 +00:00
GaussianBlur.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GeometricIntrinsics.sksl Eliminate left-side comma expressions without side effects. 2021-02-05 16:50:33 +00:00
Geometry.geom Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GeometryExtension.geom Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GeometryGSInvocations.geom Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GeometryNoGSInvocations.geom Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GeometryNoGSInvocationsReorder.geom Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Height.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
HelloWorld.sksl Migrate more SkSL tests to run in dm. 2021-02-03 23:45:15 +00:00
Hex.sksl Re-enable SkSL Hex test with constants that fit in 16 bits. 2021-02-04 17:15:08 +00:00
HexUnsigned.sksl Migrate more SkSL tests to run in dm. 2021-02-03 23:45:15 +00:00
InstanceID.vert Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockNamed.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockNamedArray.sksl Add default uniform binding value for Metal/SPIR-V. 2021-01-28 19:23:49 +00:00
Matrices.sksl Revert "Add support for matrix == and != in Metal shaders." 2021-02-10 14:25:54 +00:00
MatricesNonsquare.sksl Migrate matrix SkSL test to dm. 2021-02-03 20:42:57 +00:00
MatrixEquality.sksl Add SkSL test for matrix equality/inequality operators. 2021-02-10 18:57:22 +00:00
MultipleAssignments.sksl Migrate additional SkSL tests to run in dm. 2021-02-04 22:12:27 +00:00
NegatedVectorLiteral.sksl Improve optimization of prefix expressions at IR time. 2021-03-05 21:41:55 +00:00
NoFragCoordsPos.vert Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
NoFragCoordsPosRT.vert Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
NormalizationGeo.geom Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
NormalizationVert.vert Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
NumberCasts.sksl Migrate additional SkSL tests to run in dm. 2021-02-04 22:12:27 +00:00
NumberConversions.sksl Force global initializers to be constant expressions 2021-03-15 16:54:05 +00:00
Offset.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OperatorsES2.sksl Improve optimization of prefix expressions at IR time. 2021-03-05 21:41:55 +00:00
OperatorsES3.sksl Run the SkSL Operators test as a Runtime Effect. 2021-02-01 17:21:33 +00:00
Ossfuzz26167.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz28050.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz28794.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz28904.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz29444.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz29494.sksl Use unsigned values when constant-folding integer vectors 2021-02-01 21:44:28 +00:00
OutParams.sksl Migrate additional SkSL tests to run in dm. 2021-02-04 22:12:27 +00:00
OutParamsTricky.sksl Fix SPIR-V bug with swizzled out parameters. 2021-02-12 15:21:27 +00:00
RectangleTexture.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ResizeMatrix.sksl Migrate even more SkSL tests to run in dm. 2021-02-05 16:04:43 +00:00
ResizeMatrixNonsquare.sksl Migrate even more SkSL tests to run in dm. 2021-02-05 16:04:43 +00:00
ReturnBadTypeFromMain.sksl Support half4 return values from main() in the SPIR-V code generator. 2021-01-27 02:46:03 +00:00
ReturnColorFromMain.sksl Support half4 return values from main() in the SPIR-V code generator. 2021-01-27 02:46:03 +00:00
ReturnsValueOnEveryPathES2.sksl Detect functions that fail to return a value, without using CFG. 2021-03-04 22:47:05 +00:00
ReturnsValueOnEveryPathES3.sksl Eliminate control-flow analysis. 2021-03-11 13:24:54 +00:00
SampleLocations.vert Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SampleMask.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ScalarConversionConstructorsES2.sksl Migrate even more SkSL tests to run in dm. 2021-02-05 16:04:43 +00:00
ScalarConversionConstructorsES3.sksl Migrate even more SkSL tests to run in dm. 2021-02-05 16:04:43 +00:00
ScopedSymbol.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StackingVectorCasts.sksl Migrate even more SkSL tests to run in dm. 2021-02-05 16:04:43 +00:00
StaticIf.sksl Eliminate control-flow analysis. 2021-03-11 13:24:54 +00:00
StaticSwitch.sksl Optimize @switch statements in SwitchStatement::Make. 2021-02-23 21:36:04 +00:00
StaticSwitchWithBreak.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitchWithBreakInsideBlock.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitchWithConditionalBreak.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitchWithConditionalBreakInsideBlock.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitchWithContinue.sksl Eliminate control-flow analysis. 2021-03-11 13:24:54 +00:00
StaticSwitchWithFallthroughA.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitchWithFallthroughB.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitchWithStaticConditionalBreak.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitchWithStaticConditionalBreakInsideBlock.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StructMaxDepth.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Structs.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StructsInFunctions.sksl Add SkSL test for functions that operate on structs 2021-01-28 17:01:59 +00:00
Switch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchContainingDeadCode.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchWithFallthrough.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleBoolConstants.sksl Migrate even more SkSL tests to run in dm. 2021-02-05 16:04:43 +00:00
SwizzleByConstantIndex.sksl Add Convert/Make factory functions to IndexExpression. 2021-03-08 15:55:59 +00:00
SwizzleByIndex.sksl Migrate some SkSL swizzle tests to dm. 2021-02-08 16:16:28 +00:00
SwizzleConstants.sksl Migrate some SkSL swizzle tests to dm. 2021-02-08 16:16:28 +00:00
SwizzleLTRB.sksl Migrate some SkSL swizzle tests to dm. 2021-02-08 16:16:28 +00:00
SwizzleOpt.sksl Migrate some SkSL swizzle tests to dm. 2021-02-08 16:16:28 +00:00
SwizzleScalar.sksl Migrate some SkSL swizzle tests to dm. 2021-02-08 16:16:28 +00:00
TernaryAsLValueEntirelyFoldable.sksl Migrate the last SkSL tests in shared/ to dm. 2021-02-08 21:37:48 +00:00
TernaryAsLValueFoldableTest.sksl Migrate the last SkSL tests in shared/ to dm. 2021-02-08 21:37:48 +00:00
TernaryExpression.sksl Optimize ternary tests that check a const variable. 2021-03-05 21:41:05 +00:00
Texture1D.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Texture2D.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
TextureSharpen.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UnaryPositiveNegative.sksl Migrate the last SkSL tests in shared/ to dm. 2021-02-08 21:37:48 +00:00
UniformArray.sksl Add default uniform set value to SkSL Program settings. 2021-01-27 00:52:16 +00:00
UniformBuffers.sksl Add default uniform binding value for Metal/SPIR-V. 2021-01-28 19:23:49 +00:00
Uniforms.sksl Add default uniform binding value for Metal/SPIR-V. 2021-01-28 19:23:49 +00:00
UnusedVariables.sksl Migrate the last SkSL tests in shared/ to dm. 2021-02-08 21:37:48 +00:00
VectorConstructors.sksl Migrate the last SkSL tests in shared/ to dm. 2021-02-08 21:37:48 +00:00
VertexEarlyReturn.vert Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
VertexID.vert Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
WhileLoopControlFlow.sksl Add unit test for control statements in while loops. 2021-01-26 17:07:36 +00:00
Width.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00