[LLVMdev] counting branch frequencies

Alastair Murray alastairmurray42 at gmail.com
Wed Sep 12 19:20:09 PDT 2012


Hi Apala,

On 11/09/12 11:20, apala guha wrote:
> Is it possible to associate the branch frequency counts with the basic
> blocks
> in the intermediate representation? (e.g. Can I access basic block
> frequencies in runOnFunction()?)


Profile data really needs to be loaded at a module level, but once this 
has been done it can be accessed at any level (including function).

In LLVM 3.1 ProfileInfo stores block execution frequencies (use 
-profile-loader).

For LLVM svn you can look at BlockFrequencyInfo, which I generates its 
data from BranchFrequencyInfo, which in turn uses the branch weight 
metadata (set by -profile-metadata-loader).  I haven't actually tried 
this though, so I'm not sure how accurately the block frequencies are 
maintained.


> Also, I was able to produce a 'llvmprof.out' file. What is the format of
> this file? How can I parse it?

Very roughy the format of the file is lots of unsigned integers. 
-profile-loader or -preofile-metadata-loader will parse it for you. 
Parsing outside of LLVM is tricky as it relies on exact ordering of 
basic blocks.

Regards,
Alastair.



More information about the llvm-dev mailing list