why is CDependence a condition and not an assertion inside the if?
If you're using it as a short-hand for "is this plain C and also has recovery enabled" then I'd avoid that - it's not clear that this is a language check.
Is this really the right place vs in BuildResolvedCallExpr?
why DependentTy? shouldn't it be the return type of the function, if available?
i'm not sure what the int (int) is about - can you remove it from the assertion?
BuildResolvedCallExpr does some semantic analysis/check, it might emit diagnostics, which we want to avoid. And putting the logic here also aligns with what C++ code path does.
oh, yeah, I missed this. Added.