CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
101 lines
4.1 KiB
C++
101 lines
4.1 KiB
C++
// RUN: %clang_analyze_cc1 -std=c++17 -analyzer-checker=core,debug.ExprInspection -verify %s
|
|
//
|
|
// RUN: %clang_analyze_cc1 -std=c++17 -analyzer-checker=core,debug.ExprInspection -verify \
|
|
// RUN: -triple i386-pc-win32 -fms-compatibility -fms-extensions -DANALYZER_MS %s
|
|
|
|
template <typename T>
|
|
void clang_analyzer_dump(const T *);
|
|
void clang_analyzer_warnIfReached();
|
|
|
|
template <typename T, auto Value, typename U>
|
|
void func(U param) {
|
|
clang_analyzer_dump(__func__);
|
|
clang_analyzer_dump(__FUNCTION__);
|
|
clang_analyzer_dump(__PRETTY_FUNCTION__);
|
|
// expected-warning@-3 {{&Element{"func",0 S64b,char}}}
|
|
// expected-warning@-3 {{&Element{"func",0 S64b,char}}}
|
|
// expected-warning@-3 {{&Element{"void func(U) [T = Class, Value = 42ULL, U = char]",0 S64b,char}}}
|
|
|
|
#ifdef ANALYZER_MS
|
|
clang_analyzer_dump(__FUNCDNAME__);
|
|
clang_analyzer_dump(L__FUNCTION__);
|
|
clang_analyzer_dump(__FUNCSIG__);
|
|
clang_analyzer_dump(L__FUNCSIG__);
|
|
// expected-warning@-4 {{&Element{"??$func@UClass@?1??foo@@YAXXZ@$0CK@D@@YAXD@Z",0 S64b,char}}}
|
|
// expected-warning@-4 {{&Element{L"func",0 S64b,wchar_t}}}
|
|
// expected-warning@-4 {{&Element{"void __cdecl func(U) [T = Class, Value = 42ULL, U = char]",0 S64b,char}}}
|
|
// expected-warning@-4 {{&Element{L"void __cdecl func(U) [T = Class, Value = 42ULL, U = char]",0 S64b,wchar_t}}}
|
|
#endif
|
|
}
|
|
|
|
void foo() {
|
|
clang_analyzer_dump(__func__);
|
|
clang_analyzer_dump(__FUNCTION__);
|
|
clang_analyzer_dump(__PRETTY_FUNCTION__);
|
|
// expected-warning@-3 {{&Element{"foo",0 S64b,char}}}
|
|
// expected-warning@-3 {{&Element{"foo",0 S64b,char}}}
|
|
// expected-warning@-3 {{&Element{"void foo()",0 S64b,char}}}
|
|
|
|
#ifdef ANALYZER_MS
|
|
clang_analyzer_dump(__FUNCDNAME__);
|
|
clang_analyzer_dump(L__FUNCTION__);
|
|
clang_analyzer_dump(__FUNCSIG__);
|
|
clang_analyzer_dump(L__FUNCSIG__);
|
|
// expected-warning@-4 {{&Element{"?foo@@YAXXZ",0 S64b,char}}}
|
|
// expected-warning@-4 {{&Element{L"foo",0 S64b,wchar_t}}}
|
|
// expected-warning@-4 {{&Element{"void __cdecl foo(void)",0 S64b,char}}}
|
|
// expected-warning@-4 {{&Element{L"void __cdecl foo(void)",0 S64b,wchar_t}}}
|
|
#endif
|
|
|
|
func<struct Class, 42ull>('b'); // instantiate template
|
|
}
|
|
|
|
struct A {
|
|
A() {
|
|
clang_analyzer_dump(__func__); // expected-warning {{&Element{"A",0 S64b,char}}}
|
|
#ifdef ANALYZER_MS
|
|
clang_analyzer_dump(__FUNCTION__); // expected-warning {{&Element{"A::A",0 S64b,char}}}
|
|
#else
|
|
clang_analyzer_dump(__FUNCTION__); // expected-warning {{&Element{"A",0 S64b,char}}}
|
|
#endif
|
|
clang_analyzer_dump(__PRETTY_FUNCTION__); // expected-warning {{&Element{"A::A()",0 S64b,char}}}
|
|
|
|
#ifdef ANALYZER_MS
|
|
clang_analyzer_dump(__FUNCDNAME__);
|
|
clang_analyzer_dump(L__FUNCTION__);
|
|
clang_analyzer_dump(__FUNCSIG__);
|
|
clang_analyzer_dump(L__FUNCSIG__);
|
|
// expected-warning@-4 {{&Element{"??0A@@QAE@XZ",0 S64b,char}}}
|
|
// expected-warning@-4 {{&Element{L"A",0 S64b,wchar_t}}}
|
|
// expected-warning@-4 {{&Element{"__thiscall A::A(void)",0 S64b,char}}}
|
|
// expected-warning@-4 {{&Element{L"__thiscall A::A(void)",0 S64b,wchar_t}}}
|
|
#endif
|
|
}
|
|
~A() {
|
|
clang_analyzer_dump(__func__); // expected-warning {{&Element{"~A",0 S64b,char}}}
|
|
#ifdef ANALYZER_MS
|
|
clang_analyzer_dump(__FUNCTION__); // expected-warning {{&Element{"A::~A",0 S64b,char}}}
|
|
#else
|
|
clang_analyzer_dump(__FUNCTION__); // expected-warning {{&Element{"~A",0 S64b,char}}}
|
|
#endif
|
|
clang_analyzer_dump(__PRETTY_FUNCTION__); // expected-warning {{&Element{"A::~A()",0 S64b,char}}}
|
|
|
|
#ifdef ANALYZER_MS
|
|
clang_analyzer_dump(__FUNCDNAME__);
|
|
clang_analyzer_dump(L__FUNCTION__);
|
|
clang_analyzer_dump(__FUNCSIG__);
|
|
clang_analyzer_dump(L__FUNCSIG__);
|
|
// expected-warning@-4 {{&Element{"??1A@@QAE@XZ",0 S64b,char}}}
|
|
// expected-warning@-4 {{&Element{L"~A",0 S64b,wchar_t}}}
|
|
// expected-warning@-4 {{&Element{"__thiscall A::~A(void)",0 S64b,char}}}
|
|
// expected-warning@-4 {{&Element{L"__thiscall A::~A(void)",0 S64b,wchar_t}}}
|
|
#endif
|
|
}
|
|
|
|
template <typename> int dependent() {
|
|
// We should not analyze dependent functions.
|
|
// Such functions have no function name of predefined expressions such as: '__func__' etc.
|
|
clang_analyzer_warnIfReached(); // no-warning
|
|
}
|
|
};
|