Comment #0 on issue 986 by kimgr: Circular includes aren't handled correctly
https://github.com/include-what-you-use/include-what-you-use/issues/986
There's a pass (or two) in IWYU's analysis that talks about 'backwards' includes. If you run with a higher verbosity level, you'll see that IWYU discards b.h for this reason.
Reading `iwyu_output.cc`, it looks like this backward include avoidance is used as a crutch to work around other macro/typedef problems, but I can't really see through the specific rationale there. Overall, when I run into problems like these, I tend to merge the circularly dependent headers. Cycles are never good.