This is a slow quick fix for https://bugs.llvm.org/show_bug.cgi?id=37688 - add a defensive check against an invalid destructor in the CFG.
Unions with fields with destructors have their own destructor implicitly deleted. Due to a bug in the CFG we're still trying to evaluate them at the end of the object's lifetime and crash because we are unable to find the declaration.
Add a FIXME test for the CFG that demonstrates the bug and a normal test that demonstrates that we've fixed the crash and are even trying to continue the analysis beyond that point.
I've no idea why did this require a noexcept specification. I also don't know why does it require that many levels of structure nestedness; it might be that Clang doesn't emit an error in this case but in fact the code is invalid - an error about attempting to rely upon a deleted destructor is emitted in many simpler cases.