Hi, I'm implement a pass which identify some loops and extract them to a function. Tried to use CodeExtractor to extract loop into a newer function. For top level loop it works perfectly but for inner loop, it creates trouble just after CodeExtractor when outer loop verification happens. As newer function call site('codeReplacer') block, is not registered/added to outer loop. Loop verification aborts with "Loop block has no in-loop successors!". i.e: Original Transformed OuterLoop { ....... InnerLoop { ...... ...... } ...... } NewFunction() { InnerLoop { ...... ...... } } OuterLoop { ...... 'codeReplacer' Block |-> Call to NewFunction ...... } Is CodeExtractor functionality is limited to top level loops only? I'm expecting CodeExtractor to expose 'codeReplacer' for outside usage (i.e. by providing some getter to class). Or CodeExtractor to add 'codeReplacer' block as a new member of outer loop when its transforming loops. Thanks, Ashutosh -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141208/b8f949b9/attachment.html>