<div dir="ltr">So I'm poking around trying to improve the layering of LLVM (using an internal strict modular build as a motivation/tool to identify issues) & came across a layering violation in the OptBisect implementation.<br><br>This feature is implemented in lib/IR, but includes several headers from include/llvm/Analysis - which would create a circular dependency if not for the fact that all the headers it includes are header-only (templates).<br><br>Any ideas about how this could/should be fixed? Perhaps these analyses should be moved into somewhere more common - but I don't know there's anywhere more (or less) common than lib/IR itself (since I assume they depend on IR & that's where OptBisect is, so they can't be lower/higher than that).<br><br>Does that sound OK? Anyone have other/better ideas?<br><br>- Dave</div>