================ @@ -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:
> alias(mangled) referring to non-existent definitions are rejected by another > diagnostic. It's an error ``` % fclang -c b.cc b.cc:3:28: error: ifunc must point to a defined function 3 | int i1(int) __attribute__((ifunc("f"))); | ^ b.cc:3:28: note: the function specified in an ifunc must refer to its mangled name b.cc:3:28: note: function by that name is mangled as "_Z1fv" 3 | int i1(int) __attribute__((ifunc("f"))); | ^~~~~~~~~~ | ifunc("_Z1fv") 1 error generated. ``` The reported issue has nothing to do with security as all. It's about a `-Wunused-function` false positive. (https://git.tukaani.org/?p=xz.git;a=commitdiff;h=a37a2763383e6c204fe878e1416dd35e7711d3a9) 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