================ @@ -1,7 +1,35 @@ -// RUN: %clang_cc1 -triple x86_64-linux-gnu -Wunneeded-internal-declaration -x c -verify %s +// RUN: %clang_cc1 -triple x86_64-linux-gnu -Wunused -x c -verify %s +// RUN: %clang_cc1 -triple x86_64-linux-gnu -Wunused -x c++ -verify %s + +#ifdef __cplusplus +extern "C" { +#else // expected-no-diagnostics +#endif static int f(void) { return 42; } int g(void) __attribute__((alias("f"))); static int foo [] = { 42, 0xDEAD }; extern typeof(foo) bar __attribute__((unused, alias("foo"))); + +static int (*resolver(void))(void) { return f; } +int ifunc(void) __attribute__((ifunc("resolver"))); + +#ifdef __cplusplus +} + +/// We demangle alias/ifunc target and mark all found functions as used. +static int f1(int) { return 42; } +static int f1(void) { return 42; } +int g1(void) __attribute__((alias("_ZL2f1v"))); + +static int (*resolver1(void))(void) { return f; } +static int (*resolver1(int))(void) { return f; } +int ifunc1(void) __attribute__((ifunc("_ZL9resolver1v"))); + +namespace ns { +static int f2(int) { return 42; } // expected-warning{{unused function 'f2'}} +static int f2(void) { return 42; } // expected-warning{{unused function 'f2'}} ---------------- MaskRay wrote:
`c++filt -p <<< _ZNL2nsL2f2Ev => ns::f2`. We attempt to find `ns::f2` in the scope and will find nothing (we should use `f2`). This weakness is mentioned in the description as "... does not handle namespace scope names" 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