[LLVMdev] Are Module / Function / Instruction iteration orders stable?

Daniel Berlin dberlin at dberlin.org
Thu Jun 25 11:33:02 PDT 2015


These specific things *should* be stable.
The use order is not stable, however.


On Thu, Jun 25, 2015 at 9:38 AM, Christian Convey
<christian.convey at gmail.com> wrote:
> Hi guys,
>
> Suppose I have an IR file on disk, and I access it via a Module pass.  Also
> suppose that the bitcode file hasn't changed, and no transformation passes
> have run.
>
> Then can I safely assume that every time my Module pass executes code like
> the following, it will always visit the Module's Functions, BasicBlocks, and
> Instructions in the same order?
>
>> for (auto const & Fn : Module) {
>>   for (auto const & BB : Fn) {
>>      for (auto const & Ins : BB) {
>>      }
>>   }
>> }
>
>
> I don't notice anything in the LLVM docs suggesting that I can count on the
> order staying the same when visiting a Module's Functions or a Function's
> BasicBlocks.  But I'm told there was an IRC post the other day stating that
> the order *is* stable.
>
> Thanks, Christian
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>



More information about the llvm-dev mailing list