I'm running iwyu over my code base, and there are a few files where it insists I add
#include <cxxabi.h> // for __forced_unwind
I was able to ablate code and find that it seems related to cv.wait(mu).
Specifically, the no predicate version.
If I remove cv.wait(mu), iwyu no longer suggests cxxabi.h.
What is this __forced_unwind function, why is iwyu recommending it, and can this safely be ignored?
Minimal test case:
// foo.cpp
#include <condition_variable>
#include <mutex>
void foo(std::condition_variable_any* cv, std::mutex* mu) {
cv->wait(*mu);
}
src/foo.cpp should add these lines:
#include <cxxabi.h> // for __forced_unwind
src/foo.cpp should remove these lines:
The full include-list for src/foo.cpp:
#include <cxxabi.h> // for __forced_unwind
#include <condition_variable> // for condition_variable_any
#include <mutex> // for mutex
---
<cxxabi_forced.h>: github.com/gcc-mirror/gcc/blob/master/libstdc++-v3/include/std/… So my guess us that iwyu is just not aware of that? - user4442671{ include: [ "<bits/cxxabi_forced.h>", private, "<condition_variable>", public ] },to the imp file and that took care of it for now. Not sure whether I want to include<condition_variable>whenever some c++ header uses__forced_unwind, but I'll cross that bridge later. If you make a top-level answer, I'll accept it. - user100046<ctime>which caused this, so I added{ include: [ "<bits/cxxabi_forced.h>", private, "<ctime>", public ] },- Flow