Since the non-codegen passes in Analysis/ and Transform/ have their equivalent headers under paths corresponding to the implementation files, I think it is better to leave it like this for consistency with the normal IR passes.
Just because the IR passes made a mess of this doesn't mean the same mistake should be repeated for CodeGen passes. I think the clutter of the pass headers should be sorted away to reduce the mental burden of figuring out which headers should be included by machine passes
Remove pass to avoid PassPass
I definitely hear what you are saying, but for the sake of consistency I believe it would be less confusing if we followed the IR pass convention for now. Then we could discuss potentially cleaning up both the IR pass and CodeGen pass headers at the same time.
Again, for the sake of consistency, it may be less error-prone and confusing for future porters if we stick with the well established convention in having the ugly PassPass stick around for pass registration, ugly as it is. Basically every ported IR pass has a PassPass attached to it and it makes it clear that these are legacy passes. Of course, this probably won't even matter once all the passes are ported since it seems like the goal is to remove the legacy pass manager entirely once the transition is completed.