The combination of Embedded Swift and WebAssembly is preventing the
object file write from being suppressed despite the module hash
matching. Don't check the timestamp for this combination so we can
keep finding other (later) issues while we figure out what's going on.
Addresses rdar://174062039.
Instead of `-sil-output-path`/`-ir-output-path` use the new `-save-sil`/`-save-irgen`/`-save-ir` options, because the former options are not compatible with `-supplementary-output-file-map`.
Also, write the LLVM IR directly after IRGen to catch potential non-determinisms in IRGen.
rdar://168012861
* Use print as a function, not as a statement
* Commonise the code for compiling and getting binary statistics into
a reusable function
* Pull out `VERBOSE` and `NUM_ITERATIONS` as top-level constants, to
make it clear where/how to change them.
* Use a docstring rather than a block comment.
* In the original version, `"Iteration {}:".format(iteration)` would
index from 0; in human-readable output, index 1 is more sensible.
A script checks if the output object file is written only once even if the compiler is invoked multiple times.
The main purpose of this check is to ensure that the compiler is deterministic (until IRGen).