[LLVMdev] Generating Consistent Instruction IDs

Jim Grosbach grosbach at apple.com
Wed Sep 8 10:34:09 PDT 2010


On Sep 8, 2010, at 10:19 AM, Stefan Bucur wrote:

> On Wed, Sep 8, 2010 at 7:16 PM, Devang Patel <dpatel at apple.com> wrote:
>> 
>> On Sep 8, 2010, at 5:12 AM, Stefan Bucur wrote:
>> 
>>> Hi,
>>> 
>>> I'd like to ask you what's the best way of generating instruction
>>> identifiers which are consistent across independent invocations of the
>>> LLVM program. One way would be to use a counter and iterate over all
>>> the functions, then all the BBs. But are there any guarantees on the
>>> ordering of the functions and BBs in the iteration? In extremis, I can
>>> sort the functions after name, but what about the basic blocks?
>>> 
>>> Thanks!
>> 
>> How do you intend to use these IDs ?
>> -
>> Devang
>> 
> 
> For tracking cumulative code coverage across multiple executions. Each
> ID would be an index into a bitfield, so I would need the same ID to
> refer to the same instruction from one execution to the other.


It seems like a hash of the function number and the offset of the instruction into the function would do the trick.

The compiler should generate exactly the same code on multiple invocations over the same input, including ordering. If it doesn't, something non deterministic is going on somewhere, which is a bad thing (and a bug). If you're varying the input to the compiler, then all bets are off, of course.

Regards,
  Jim



More information about the llvm-dev mailing list