66c53b9428
When we detect a static switch, the optimizer finds the matching switch- case and eliminates all the other switch-cases. It handles case fall-through by scanning forward and looking for an unconditional break. However, the inliner has an interesting quirk--it can replace `return` statements inside of a switch with `continue` statements, since the body of the inlined function has been wrapped with a for-loop to allow for early exits. The optimizer does not recognize these continue statements as exits from the switch (although they certainly qualify), so it treats continues as fallen-through and keeps emitting switch-cases. The dead-code elimination pass was actually doing us a favor here and eliminating the excess code later. A flag was added to disable DCE in order to reveal the problem in a test. Change-Id: I8ff19fde5e32d0ab73d7c5411da40cb953a446f5 Bug: skia:11352 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/372956 Auto-Submit: John Stiles <johnstiles@google.com> Reviewed-by: Ethan Nicholas <ethannicholas@google.com> |
||
---|---|---|
.. | ||
blend | ||
errors | ||
folding | ||
fp | ||
glsl | ||
inliner | ||
intrinsics | ||
metal | ||
runtime | ||
runtime_errors | ||
shared | ||
spirv | ||
workarounds | ||
README.txt |
This directory contains source files for testing skslc compilation. The compiled output files are in the /tests/sksl/ directory.