<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63629>63629</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] missed integer overflow warning with CXXTemporary values
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
lnihlen
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lnihlen
</td>
</tr>
</table>
<pre>
compiler explorer link: https://godbolt.org/z/Wd318Mdrx
```
typedef long long int64_t;
template<typename T>
class u_ptr {
T *ptr;
public:
u_ptr(const u_ptr&) = delete;
u_ptr &operator=(const u_ptr&) = delete;
u_ptr(u_ptr &&other) : ptr(other.ptr) { other.ptr = 0; }
u_ptr(T *ptr) : ptr(ptr) { }
~u_ptr() { delete ptr; }
};
u_ptr<bool> Wrap(int64_t x) {
return nullptr;
}
int64_t Pass(int64_t x) { return x; }
int main(int argc, char* argv[]) {
// This trips -Winteger-overflow:
int64_t x = Pass(30 * 24 * 60 * 59 * 1000);
// This doesn't trip -Winteger-overflow.
auto r = Wrap(Pass(30 * 24 * 60 * 59 * 1000));
return 0;
}
```
Patch coming shortly.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVMmOgzgQ_ZriUkpk7ADhwCFL5zZSHyJ131oGHPCMsZFt0skc5ttHbFl6MoeWIhvb9V69WlLcOVlpITKItkCp0rJWQgOlEO0D3vna2Gy6DHJTXrPCNK1UwqK4tMpYYVFJ_RewDdbetw7YBugB6KEyZW6UXxpbAT38DfTwUbJw_UdpL0D2QDbTGpPpNxz9tRWlOKEyuhoXqX28-vLAto8wL5pWcS-A7XqI5o3AI7C38bVQ3DnsvlpvEZIJiHhEoJvW2xtX2-VKFr3kyWKAAF0XRjs_n2KgKQLbYymU6F1un8wRaGxaYbk3Ftj-l2ig6xtLT-RrYUfEBsfn4Wo5fKd9NHi7GGgJsC1Csv_Jegv2ieyB5gHzzwya30atOObqbtl_PNdhBLJdbowC9oYflrdA11PR8DIRzo4QrfCd1ag7pR4rcXcxrDP-nTv3gm5muTyrm6HYcKlHGHJbFUB3WNTcAt3053Pf6tH-P9LGvsVjLR16K1uHiw-pvaiEXZizsCdlvu-9ctM0VGESykifdaSrYYvHU5QOW0gIAZo-NADia-elEU4DTfwg44WK5R3HO29w7IQp97-Q8r9qpvySF_V5_r-O6zv3RY2FaaSu0NXGenVdBmXGypSlPBBZGK_XYcQII0GdsSRK0yShPD_Rkp2KtIhYmIdpEgtWkmQdyIwSykjMSJhSFpFlWZbpKc1Xp7AIOc85rIhouFRLpc5NP2EC6VwnspjFNA0Uz4Vy00DLu2oaZjbrrRd5VzlYESWdd3e8l14NM7BQXFcQ7bGRzokSp9TjnHr85lb3YX5LX-Pu8_MomtZYbq945qoTLuisyn6MQunrLl8WpgF66F1O26K15k9ReKCHQb8DehhC-DcAAP__CkSbYQ">