SPIRV-Tools/source/val
David Neto b51b80980c Validator cfg fixes
- Find unreachable continue targets.  Look for back edges
  with a DFS traversal separate from the dominance traversals,
  where we count the OpLoopMerge from the header to the continue
  target as an edge in the graph.

- It's ok for a loop to have multiple back edges, provided
  they are all from the same block, and we call that the latch block.
  This may require a clarification/fix in the SPIR-V spec.

- Compute postdominance correctly for infinite loop:
  Bias *predecessor* traversal root finding so that you use
  a later block in the original list.  This ensures that
  for certain simple infinite loops in the CFG where neither
  block branches to a node without successors, that we'll
  compute the loop header as dominating the latch block, and the
  latch block as postdominating the loop header.
2016-08-05 15:15:37 -04:00
..
BasicBlock.cpp Fix infinite loop in dominance calculation. 2016-07-28 16:40:55 -04:00
BasicBlock.h Add BasicBlock methods: dominates postdominates 2016-08-05 15:14:18 -04:00
Construct.cpp Fix several violations of the style guide 2016-06-27 10:45:46 -04:00
Construct.h Fix several violations of the style guide 2016-06-27 10:45:46 -04:00
Function.cpp Validator cfg fixes 2016-08-05 15:15:37 -04:00
Function.h Validator cfg fixes 2016-08-05 15:15:37 -04:00
Id.cpp Refactor IDs definition and use tracking 2016-07-26 13:36:41 -04:00
Id.h Refactor IDs definition and use tracking 2016-07-26 13:36:41 -04:00
ValidationState.cpp Refactor IDs definition and use tracking 2016-07-26 13:36:41 -04:00
ValidationState.h Refactor IDs definition and use tracking 2016-07-26 13:36:41 -04:00