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

Christian Convey christian.convey at gmail.com
Thu Jun 25 09:38:14 PDT 2015


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150625/493ff67e/attachment.html>


More information about the llvm-dev mailing list