================
@@ -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);
----------------
erichkeane wrote:

> Looks like there's `getLangOpts().CXXABI`. `TargetCXXABI::Microsoft` is the 
> one that doesn't use itanium FWICT (looking at `ASTContext::createCXXABI`) 
> And `TargetInfo::getCXXABI` (looking at `ASTContext::createMangleContext`). 
> `isItaniumFamily` comes up, too.

Yep, Microsoft is the exception.  We DO typically use 
https://clang.llvm.org/doxygen/classclang_1_1TargetCXXABI.html to determine 
which.  


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

Reply via email to