1 // PR c++/87519 - bogus warning with -Wsign-conversion.
2 // { dg-options "-Wsign-conversion" }
3 
4 typedef unsigned long int uint64_t;
5 
f(unsigned long int a,int q)6 void f(unsigned long int a, int q)
7 {
8   a += a + q; // { dg-warning "may change the sign" }
9 
10   // Explicit cast should disable the warning.
11   a = a + static_cast<uint64_t>(q);
12   a = a + (uint64_t) q;
13   a = a + uint64_t(q);
14   a = a + static_cast<const uint64_t>(q);
15   a = a + (const uint64_t) q;
16   a = a + static_cast<unsigned long int>(q);
17   a = a + static_cast<const unsigned long int>(q);
18 }
19