Does Rebar3 compile Dialyzer modules with HiPE?

Viewed 200

When running Dialyzer stand-alone, it compiles its modules with HiPE, in order to speed up the analysis:

dialyzer --src -r .
  Checking whether the PLT /home/foo/.dialyzer_plt is up-to-date... yes
  Compiling some key modules to native code... done in 0m12.27s
  Proceeding with analysis...

This can make a big difference to run time when there are many modules to be analysed.

Does Rebar3 do that when you run the rebar3 dialyzer command? The documentation doesn't say one way or another.

2 Answers

Coming back to this much later, as of Erlang/OTP 22.0.6 the HiPE compilation feature has been removed from Dialyzer, and consequently there is no way for Rebar3 to activate that feature. From the release announcement:

  OTP-15949    Application(s): dialyzer, hipe

               *** POTENTIAL INCOMPATIBILITY ***

               The HiPE compiler would badly miscompile certain
               try/catch expressions, so it will now refuse to compile
               modules containing try or catch.

               As a consequence of this, dialyzer will no longer
               compile key modules to native code.

Also, as per this mailing list thread, HiPE will be removed entirely in Erlang/OTP 24. It was done in this pull request.

Related