1// RUN: %check_clang_tidy %s performance-no-int-to-ptr %t
2
3// can't implicitly cast int to a pointer.
4// can't use static_cast<>() to cast integer to a pointer.
5// can't use dynamic_cast<>() to cast integer to a pointer.
6// can't use const_cast<>() to cast integer to a pointer.
7
8void *t0(long long int x) {
9 return (void *)x;
10 // CHECK-MESSAGES: [[@LINE-1]]:10: warning: integer to pointer cast pessimizes optimization opportunities [performance-no-int-to-ptr]
11}
12
13void *t1(int x) {
14 return reinterpret_cast<void *>(x);
15 // CHECK-MESSAGES: [[@LINE-1]]:10: warning: integer to pointer cast pessimizes optimization opportunities [performance-no-int-to-ptr]
16}
17
18// Don't diagnose casts from integer literals.
19// It's a widely-used technique in embedded/microcontroller/hardware interfacing.
20void *t3(long long int x) {
21 return (void *)0xFEEDFACE;
22}
23

source code of clang-tools-extra/test/clang-tidy/checkers/performance/no-int-to-ptr.cpp