<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/142248>142248</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang does not warn on undefined shift in templated member function when using conditional expression
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
pkennedyTT
</td>
</tr>
</table>
<pre>
As title says, clang doesn't warn about UB due to shifting beyond the width of type in specific circumstances.
Clang version:
Apple clang version 16.0.0 (clang-1600.0.26.6)
Target: arm64-apple-darwin23.6.0
Compile flags: `-std=c++20 -Wall -Wextra -Wshift-count-overflow -pedantic`
```
#include <iostream>
#include <type_traits>
template <typename T>
class Foo {
public:
T foo() {
return std::is_same_v<T, uint64_t> ? (1<<32): 0; // No warning here
}
};
template <typename T>
T bar() {
return std::is_same_v<T, uint64_t> ? (1<<32): 0; // Warning here
}
int main()
{
Foo<uint64_t> f;
std::cout << f.foo() << " " << bar<uint64_t>() << "\n";
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVEGTqygQ_jXtpUsLwZjJwYNJXo57ytYcp1CbhF0ECzB5-fdbqDP7Xs1hL2upYDd2f1_TfDIEfbNEDeyOsDtnco5355vpb7KWhtf1mnVueDVtwKijIQzyFYCfsDfS3nBwFCzwfcSn9BZl5-aIfx5xmAmjw3DXKmp7w45ezg4Y74RPPcQ7OoXxNRFqi2GiXivdY699P48hSttTKIC1wNrTkuZBPmhnQSRTO02GtvybA8u6YAVD4G-LPS9rxgpW8LqogR-AtVfpbxRBtCj9WFe5TEHyQfqntlwUdcG2fG6ctCFURt5CWg41y0McQJx74EfgR84wf5fGYP5OP6OXmL8vNPPezTbm7kFeGffEfKJB2qh7qLfYabLerAUutO3NPBCCOGkXoic5gvjxzZfK9BG91DFsbtZGGicj45ffypHwurp7I0PAi3MI-yOwdpo7o_u1dIiIV1TOAX8DfthW4HZ5irO3uLBtQbQ6fAQ50scDxOma9nzWNtbVRwTxA0FcUrlLECcQJ8FTmUWLDMQREfgF-AX_cEtbpAa4k6ctFezP6c1a2J9BHP-b0RU76b8h_t_Rvv8ONaFboGkbcZTarggWzyeGi3MgTr8mUiuj5PxC1qdDsWZGVfxS_dUEnK_P-pm4_hbz22rYnWwa1tqtMD9bKxsaMRzEQWbUlPvqra7Z7nDI7k3dKyVKVVHZHcpBVGl2YKokMQzVXnWZbjjjO7YTJRNMlIeipFrV-33PVVcqpTqoGI1Sm8KYx1g4f8t0CDM1ZcV59ZYZ2ZEJi4xwvpzCBeo58036Ie_mW4CKGR1i-DfEIirN6UtM0LpNS5zF2Q6ktKVhFZIkFp99MuBIY0ce1Wz7mCTgeSeLc0g72Ds76GSUBunn5Ckkkchmb5p7jFM61-ue33S8z13RuxH4JWHahnzy7i_qI_DLwjEAv2w0Hw3_JwAA__8P0o23">