Code profiling, what does "Machine Code Sinking" and "Virtual Register Rewriter" mean?

Viewed 47

Clang reports (using -ftime-trace) that one of my files on arm v8 takes over 100m due to the optimization (OptFunction) steps "Machine Code Sinking" and "Virtual Register Rewriter".

However I have no idea what to do with this information. My objective is to reduce the build time. On arm v7 the same function only takes ~6 minutes.

  • Is there something I'm missing here?
  • Is there a way I can use this information to modify my code the impact on these steps?
  • I've opened the profile in Speedscope too but there's no additional info. Are there other tools that might help more?
  • Is there more info I can provide to better ask for help (file size, number of defined symbols, etc)?

Some additional detail:

  • This function is in generated code, so there are limited options when it comes to restructuring overhauling
  • On gcc 8.3 arm v8 it takes a similar amount of time
  • On clang x86_64 a similar function (I don't have this exact code building on x86_64 :( yet) takes a fraction of the time.

Tracing data: Trace shoing the huge OptFunction

0 Answers
Related