V4 IR: add IR verification functions.
authorErik Verbruggen <erik.verbruggen@digia.com>
Thu, 10 Jul 2014 09:29:31 +0000 (11:29 +0200)
committerErik Verbruggen <erik.verbruggen@digia.com>
Thu, 24 Jul 2014 13:05:47 +0000 (15:05 +0200)
commit31c876509d0f791e20601503d2a3774dd0c4c6ec
tree91593a708227b6d589bd4b22dd9b4012287954a8
parentc746f9b321dc135e7ef74ea1a24a246c9f2ae3cc
V4 IR: add IR verification functions.

- CFG verification: check if all edges are correctly registered on both
  the outgoing basic-block and the incoming one, and that jumps/cjumps
  targets correspond to outgoing edges.
- immediate dominator verification: check if the current immediate
  dominators are the same as they would be if being recalculated from
  scratch.
- no shared expressions/statements: check if not more than one IR node
  points to a statement/expression.

Also add a function that writes out the CFG as a .dot file for graphviz.

Will be used in upcoming patches.

Change-Id: I784561f581f9f8ec22f3ab449afd87a9e7a8bdaf
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
src/qml/compiler/qv4ssa.cpp