<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/99764>99764</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-tidy diagnoses "dereference of undefined pointer value" (`clang-analyzer-core.NullDereference`) from an integer multiplication
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
bernardosulzbach
</td>
</tr>
</table>
<pre>
# Output
```
/home/bernardo/code/clang-tidy-bug-reports/NullDereference/NullDereference.cpp:8:82: warning: Dereference of undefined pointer value [clang-analyzer-core.NullDereference]
8 | auto const at = [&](int const row) { std::cout << static_cast<float>(2 * featheringIndex + row) << '\n'; };
| ^
/home/bernardo/code/clang-tidy-bug-reports/NullDereference/NullDereference.cpp:9:9: note: Calling 'operator()'
9 | at(0);
| ^~~~~
/home/bernardo/code/clang-tidy-bug-reports/NullDereference/NullDereference.cpp:8:82: note: Dereference of undefined pointer value
8 | auto const at = [&](int const row) { std::cout << static_cast<float>(2 * featheringIndex + row) << '\n'; };
| ^~~~~~~~~~~~~~~
```
Maybe it needs `std::views::enumerate` to reproduce?
# Version
g++ (SUSE Linux) 13.3.0
clang-tidy version 18.1.8
# Inputs
I tried to minify the real source code, but you can probably minify it further and still reproduce.
## C++
```cpp
#include <array>
#include <iostream>
#include <ranges>
int main() {
std::array<float, 4> constexpr FeatheringLevels = {0.5f, 1.0f, 2.0f};
for (auto const [featheringIndex, featheringLevel] : std::views::enumerate(FeatheringLevels)) {
auto const at = [&](int const row) { std::cout << static_cast<float>(2 * featheringIndex + row) << '\n'; };
at(0);
}
}
```
## CMake
```cmake
cmake_minimum_required(VERSION 3.24.0 FATAL_ERROR)
set(CMAKE_COLOR_DIAGNOSTICS ON)
include(CheckCXXCompilerFlag)
project(NullDereference)
set(VERSION_MAJOR 0)
set(VERSION_MINOR 1)
set(CMAKE_CXX_STANDARD 23)
set(CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
# Keep the exclusions sorted
set(CLANG_TIDY_CHECKS_LIST
boost-*
bugprone-*
-bugprone-easily-swappable-parameters
-bugprone-exception-escape
-bugprone-unchecked-optional-access
clang-analyzer-*
concurrency-*
cppcoreguidelines-*
-cppcoreguidelines-avoid-magic-numbers
-cppcoreguidelines-init-variables
-cppcoreguidelines-pro-bounds-constant-array-index
-cppcoreguidelines-pro-type-reinterpret-cast
-cppcoreguidelines-pro-type-union-access
misc-*
-misc-no-recursion
modernize-*
-modernize-use-nullptr
-modernize-use-std-numbers
-modernize-use-trailing-return-type
performance-*
-performance-no-int-to-ptr
portability-*
readability-*
-readability-function-cognitive-complexity
-readability-identifier-length
-readability-magic-numbers
-readability-uppercase-literal-suffix)
list(JOIN CLANG_TIDY_CHECKS_LIST "," CLANG_TIDY_CHECKS_STRING)
set(CMAKE_CXX_CLANG_TIDY clang-tidy "-checks=${CLANG_TIDY_CHECKS_STRING}")
add_executable(NullDereference NullDereference.cpp)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcV09z4joS_zTiojIFMgZz4AAGZnmTwFvIe5U9UbLcNtonS179yYQ55LNvyRAwDpmd01Tto0JkpO7Wr7t_3ZKpMbyQABMUzVA071BnD0pPUtCS6kwZJ76nlB06qcqOE0RCvHG2chb15qg3RcPe-e_0kywPqgRElu_qiCyZyvwME1QWgeXZMUhdEWiolLYGkeXaCTEHDTlokAw-znRZVaFwGvsvQeEUf6Nacln4x4YYVjl2MoOcS8hwpbi0oPELFQ4wiman_amk4vgddMCUhm5762h-8gNjjGOMRgl-_1BnFWZKGoupxSice5OIDL0Kibm050WtviEyxmg0w8ZmKJyicMqU8yoJChNsLLWc7Rk1FoVJLhS1KFwgEhOMyBTnQO0BNJfFSmbwihGZXUyeDCAyQlEi_RDOMBrNUTi7gsY1aBQtfkE-xucvlsqCHxMqBJeFh6gq0NQqjUiMyNiDvUAc38bVIhL3vMxdN97e3t5-KbXeffk5Xv1d2PJ287lb2o_0mALmFkuAzGA07F0Qv3D4Zk6PIF3pMw9o2MNWYQ2VVpljgMLl2ew5myH-E7ThSp4mCkRmHj4i8e6P3QI_cOlevSP9sBt2zxiuecYvJ2Xcj7v9btw2vZKVs-b0e4Wt5pB5NCWXPD9iewCsgQpslNMM8IlFCU6dxUflMKMSV1qlNBXHdx1uce60jzamMsPGciGu3nVbADyG5ORRK5ieb-9SXDLhMvC5olrTo0_tnTWujNVAy0-WNZUFmOti_d9TrKRcnurPE-ya9UvezpueeUUSPEDh4sRMeK00Xl7o9QAvIMyJyKNZrxvlXrzf7dUj8WOLWrnSPpeNQkDRrMVXr5vf7oGiOfbl92NukbgNrW4yLT__Xwrxfgv0IqeEXh5aZ-0N2R7pX9CmWnmZqx_3nsqlK_ca_uO4hgyR-M_FdrfarHHYJYNuDy-nT9OH_WK73Ww9nsY-BjzK5HH6dbFPNg-b7X6-mn5Zb3ZPq2SHN-uW-JmfXuUA7K_k-TlRZcUF6KWgRUu40urfwLz9D_163Nz9DHb_OP1ts8W9z1ZX680W93-E__l5v3uarufT7Rz7-N3Yaa7ut4t__rHaLuZND9umFs9Pi7Xfeoc3y-VdscXz75vt0z7ZPP6-evABfHycrue7Dyh9Kr8CVHWLglcmnG9yBhulLWQ3dh-m6y_7p9X8X_vkH4vk627_sNo9XemTKmVsgMi0MeWKSisJjdngMgfUcHEMzDdaVTQVEFRU0xIsaHO10BB_ZVBZrmQAhtEKPthzkvnEQxaoWo6KgDIGpmGtdSG7omJKMqc9A463HrCq8te2wvEMBJdgmq58XKQvimdBSQvOAunK9OrLHWEuuQ1eqObe-x_IVVoFqXIyM0HdOqi0Qd1IA173tB8q2mMFgYb6BlFpsEHdUP63ipM-1O0AltywZgTq31IFGphrHK21qMpAS_4dbgMaXOedgUA6ISqrL_ZuFo3NWlH8aMBqyv0VMNBgnZY1-LNwBTpXuqSStTE0V6QKuLSBVcEVB8bY3-doygW3TUZooNnHWW-yuZI7yWqmMlVIbvkLBEyVlYBXbo_vrjYVeAbS8pyDDgTIwh4-MXyXWE0BV1WgGTUQCG5BUxEYl-f89VL0ghtfy79tVmt8v6AxIgSRBBFyR2D3tF2tv3zal64KuHFxQoQEdWkaFM4RGaDR7FPLo3m9_U2Lolm2h1dgzvpC-diz8b0b9sXE-9nUySZhNg7HtAOT_oj0B_GIDMLOYTLOMzoesiyPWR6laTyKeuOYxv2cDUYwirIOn5AeGfRGpNcfRINe2B0N-zEMh9E4jUI2jgZo0IOSctEV4qXsKl10uDEOJuPxaDjoCJqCMPW7LiHXsHg_o3lHT7yS72IGDXo-PeZqxnIrYNIIZcZpIZUB44Oa_dwLA_EXhtifzj_xOjr0ZxzOtSoxldibKUDj0gnLK8EZ9bTuOC0mB2ur-pZElogsC24PLu0yVSKy9PDPQ3A5aJd1SPwb0ikqLxPy3wAAAP__ORrkpA">