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)6void 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