Skip to content

spirv-fuzz: Fixes to preconditions for adding dead break/continue edges#2904

Merged
afd merged 5 commits intoKhronosGroup:masterfrom
afd:fuzzer-fix-2898
Sep 25, 2019
Merged

spirv-fuzz: Fixes to preconditions for adding dead break/continue edges#2904
afd merged 5 commits intoKhronosGroup:masterfrom
afd:fuzzer-fix-2898

Conversation

@afd
Copy link
Copy Markdown
Contributor

@afd afd commented Sep 24, 2019

Issues #2898 and #2900 identify some cases where adding a dead
continue would lead to an invalid module, and these turned out to be
due to the lack of sensible dominance information when a continue
target is unreachable. This change requires that the header of a loop
dominates the loop's continue target if a dead continue is to be
added.

Furthermore, issue #2905 identified a shortcoming in the algorithm
being used to identify when it is OK, from a dominance point of view,
to add a new break/continue edge to a control flow graph. This change
replaces that algorithm with a simpler and more obviously correct
algorithm (that incidentally does not require the new edge to be a
break/continue edge in particular).

Fixes #2898.
Fixes #2900.
Fixes #2905.

@afd afd requested a review from paulthomson September 24, 2019 10:15
@afd afd changed the title spirv-fuzz: Do not allow adding a dead continue to an unreachable continue target spirv-fuzz: Fixes to preconditions for adding dead break/continue edges Sep 24, 2019
@afd afd requested a review from paulthomson September 25, 2019 15:46
@afd afd merged commit c1e0383 into KhronosGroup:master Sep 25, 2019
@afd afd deleted the fuzzer-fix-2898 branch September 25, 2019 15:51
dneto0 pushed a commit to dneto0/SPIRV-Tools that referenced this pull request Sep 14, 2024
Roll third_party/glslang/ 973d0e5..7bc0473 (1 commit)

KhronosGroup/glslang@973d0e5...7bc0473

$ git log 973d0e5..7bc0473 --date=short --no-merges --format='%ad %ae %s'
2019-09-18 laddoc Reflection will crash when the VS input symbol defines the same name with FS output symbol

Roll third_party/googletest/ f2fb48c3b..dc1ca9ae4 (7 commits)

google/googletest@f2fb48c...dc1ca9a

$ git log f2fb48c3b..dc1ca9ae4 --date=short --no-merges --format='%ad %ae %s'
2019-09-29 misterg Googletest export
2019-09-27 misterg Googletest export
2019-09-25 absl-team Googletest export
2019-09-25 absl-team Googletest export
2019-09-24 absl-team Googletest export
2019-09-19 absl-team Googletest export
2019-09-27 gennadiycivil Bump llvm version to 4 so brew can work again

Roll third_party/spirv-headers/ 601d738..842ec90 (4 commits)

KhronosGroup/SPIRV-Headers@601d738...842ec90

$ git log 601d738..842ec90 --date=short --no-merges --format='%ad %ae %s'
2019-09-24 ehsannas Improve the doc on using Bazel.
2019-09-24 rex.xu Bump the SPIR-V version to 1.5
2019-09-23 ehsannas Update documentation.
2019-09-18 ehsannas Add a Bazel build file.

Roll third_party/spirv-tools/ f62ee4a..9eb1c9a (22 commits)

KhronosGroup/SPIRV-Tools@f62ee4a...9eb1c9a

$ git log f62ee4a..9eb1c9a --date=short --no-merges --format='%ad %ae %s'
2019-10-01 stevenperron Add continue construct analysis to struct cfg analysis (KhronosGroup#2922)
2019-09-27 stevenperron Record trailing line dbg instructions (KhronosGroup#2926)
2019-09-27 rharrison Add removing references to debug instructions when removing them (KhronosGroup#2923)
2019-09-27 paulthomson spirv-fuzz: allow interestingness script arguments (KhronosGroup#2925)
2019-09-27 ehsannas Add Kokoro bots for building with Bazel. (KhronosGroup#2914)
2019-09-27 alanbaker Refactor the InstructionPass (KhronosGroup#2924)
2019-09-26 afdx spirv-fuzz: do not allow a dead break to target an unreachable block (KhronosGroup#2917)
2019-09-26 afdx spirv-fuzz: preserve some analyses when permuting blocks (KhronosGroup#2918)
2019-09-25 alanbaker Only allow previously declared forward refs in structs (KhronosGroup#2920)
2019-09-25 stevenperron Handle id overflow in wrap-opkill (KhronosGroup#2916)
2019-09-25 afdx spirv-fuzz: do not replace struct indices with synonyms (KhronosGroup#2915)
2019-09-25 afdx spirv-fuzz: Fixes to preconditions for adding dead break/continue edges (KhronosGroup#2904)
2019-09-25 afdx spirv-fuzz: do not replace a pointer argument to a function call with a synonym (KhronosGroup#2901)
2019-09-25 afdx spirv-fuzz: do not replace boolean constant argument to OpPhi instruction (KhronosGroup#2903)
2019-09-24 alanbaker Remove validate_datarules.cpp (KhronosGroup#2911)
2019-09-24 stevenperron Handle extract with no indexes (KhronosGroup#2910)
2019-09-24 ehsannas Add Bazel build configuration. (KhronosGroup#2891)
2019-09-24 stevenperron Handle id overflow in convert local access chains (KhronosGroup#2908)
2019-09-24 dsinclair Add OpCopyMemory test to SVA. (KhronosGroup#2885)
2019-09-23 dsinclair Add missing GN dependency (KhronosGroup#2899)
2019-09-23 afdx Employ the "swarm testing" idea in spirv-fuzz (KhronosGroup#2890)
2019-09-23 afdx Fix operand index in spirv-fuzz (KhronosGroup#2895)

Created with:
  roll-dep third_party/effcee third_party/glslang third_party/googletest third_party/re2 third_party/spirv-cross third_party/spirv-headers third_party/spirv-tools
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants