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>
V4 IR: change dominator tree to hold on to less memory.

Move all data needed to calculate the immediate dominators into a struct
that is freed immediately after finishing this calculation.

Change-Id: Id0cefa4088643539d59c4c593cba1848422c1726
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
V4 IR: loop detection: also record loop information separately.

Now loop-specific algorithms can easily query which blocks are loop
headers, which blocks make up a loop body, and whether loops are nested.

Change-Id: I442af34d3cca816b61ee761335ff3571b72a6d3e
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
QQmlError::toString: improve handling of empty urls.

"file::2:23: ..." is strange to read. Show "<Unknown File>:2:23: ..." instead,
by treating empty urls (including "file:") as unknown, and by still showing
line and column numbers in such a case.

This change makes it possible for QUrl::fromLocalFile("") to return an
empty url rather than "file:", which this module was relying upon in the tests.

Change-Id: I91918090fd4e0aa9a25dbbb18893a0ce94140e21
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
V4 JIT: enable the JIT when compiling with clang on ARM.

The macros that were used to detect Thumb2 support on the cores were gcc
specific.

Change-Id: I76959899b41f440d4b7ad7a5436059a3dc102111
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>