You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Johannes is right. We should use (or add) some functionality to LLVM to do so.
I investigated this a little a couple of weeks ago and there is currently no LLVM method that allows us to detect irreducible control flow. However if you grep for 'irreducible' in LLVM a couple of passes detect themselves irreducible control flow.
The implementation in lib/Analysis/BlockFrequencyInfoImpl.cpp seems to be at least partially independent of the rest of the pass. We might be able to split
it out in a helper routine and then just call it in ScopDetection.
One could claim that this functionality belongs into the LoopInfo pass, but keeping this information up to date (and the cost of doing so) might add cost and complexity that others won't appreciate. By calling a routine that identifies irreducible control in ScopDetection we could avoid this overhead
Extended Description
For a test cast that contains irregular control flow with loops (attached)
we do not generate loop dimensions in the schedule:
This is likely to be wrong and we should probably just detect irregular control flow and bail out if found.
The text was updated successfully, but these errors were encountered: