Microsoft doesn't support _Float16, so this patch invents a mangling using the technique that was used for _Complex, putting _Float16 into __clang namespace. What do you think?
FWIW, this demangles on both demangler.com and undname as "void cdecl Float16::f(struct clang::_Float16)", which seems like the right thing, since the "Complex" above demangles to: "void cdecl Complex::f(struct clang::_Complex<int>)"
I also note (since upon first reading) that the "Complex::" and "Float16::" in the demanglings are the namespaces, which are confusingly very similar to the actual names :)
This patch should be all that is required to get _Float16 to work on Windows.