Basic Block Statistics

Jeff Law law@redhat.com
Wed May 17 17:02:00 GMT 2017


On 05/17/2017 10:36 AM, Will Hawkins wrote:
> As I started looking into this, it seems like PLUGIN_FINISH is where
> my plugin will go. Everything is great so far. However, when plugins
> at that event are invoked, they get no data. That means I will have to
> look into global structures for information regarding the compilation.
> Are there pointers to the documentation that describe the relevant
> global data structures that are accessible at this point?
> 
> I am looking through the source code and documentation and can't find
> what I am looking for. I am happy to continue working, but thought I'd
> ask just in case I was missing something silly.
> 
> Thanks again for all your help getting me started on this!
FOR_EACH_BB (bb) is what you're looking for.  That will iterate over the
basic blocks.

Assuming you're running late, you'll then want to walk each insn within
the bb.  So something like this

basic_block bb
FOR_EACH_BB (bb)
  {
    rtx_insn *insn;
    FOR_BB_INSNS (bb, insn)
      {
        /* Do something with INSN.  */
      }
  }


Note that if you're running too late the CFG may have been released, in
which case this code wouldn't do anything.

jeff



More information about the Gcc mailing list