[clang] Add missing diagnostics for invalid overloads of multiversion functions in C.
Previously, an attempt to declare an overload of a multiversion function in C was not properly diagnosed. In some cases, diagnostics were simply missing. In other cases the following assertion failure occured... ``` Assertion `(Previous.empty() || llvm::any_of(Previous, [](const NamedDecl *ND) { return ND->hasAttr(); })) && "Non-redecls shouldn't happen without overloadable present"' failed. ``` ... or the following diagnostic was spuriously issued. ``` error: at most one overload for a given name may lack the 'overloadable' attribute ``` The diagnostics issued in some cases could be improved. When the function type of a redeclaration does not match the prior declaration, it would be preferable to diagnose the type mismatch before diagnosing mismatched attributes. Diagnostics are also missing for some cases. Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D121959
Loading
Please sign in to comment