================ @@ -1980,6 +1981,23 @@ static void handleWeakRefAttr(Sema &S, Decl *D, const ParsedAttr &AL) { D->addAttr(::new (S.Context) WeakRefAttr(S.Context, AL)); } +// Mark alias/ifunc target as used. For C++, we look up the demangled name +// ignoring parameters. This should handle the majority of use cases while +// leaveing false positives for namespace scope names and false negatives in +// the presence of overloads. +static void markUsedForAliasOrIfunc(Sema &S, Decl *D, const ParsedAttr &AL, + StringRef Str) { + char *Demangled = llvm::itaniumDemangle(Str, /*ParseParams=*/false); ---------------- MaskRay wrote:
C++20 (lambdas in unevaluated contexts) gives us `std::unique_ptr<char, decltype([](void *p) { free(p); })> ptr((char*)malloc(10))`. With C++17, unique_ptr with `free` will add quite a bit boilerplate, which is probably not suitable... https://github.com/llvm/llvm-project/pull/87130 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits