[llvm-dev] Incremental compilation and recognizing distinct bitcode
David Jones via llvm-dev
llvm-dev at lists.llvm.org
Fri Jul 8 14:18:02 PDT 2016
For my project, the step of using LLVM to optimize and generate machine
code for a module is much slower than everything else. I realize a
significant performance improvement if I can do "incremental compilation"
and avoid invoking the LLVM code generator if the underlying object has not
My current strategy is as follows: for each module:
- write bitcode out to "module.bc.new"
- if "module.bc" exists, then compare (byte-by-byte) with "module.bc.new".
If they match, then skip compilation
- move "module.bc.new" to "module.bc" (known to be different at this point)
- generate "module.o" (expensive step)
However, I am finding that occasionally I will write out different bitcode
for the same input, which causes gratuitous recompilation. If I run
llvm-dis on "module.bc" and "module.bc.new" in these cases, the output is
identical, as expected.
Is it expected that the actual bitcode may change from run to run, perhaps
as a result of ASLR?
Is there a better way for me to check that a Module* structure just built
is (not) identical to that from a previous run?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev