mirror of
https://github.com/github/codeql.git
synced 2025-12-18 09:43:15 +01:00
58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
template<typename T> T sign(T value);
|
|
|
|
int f1(int x, int y) {
|
|
if (x < 0) {
|
|
return sign(x); // $ sign=-
|
|
}
|
|
if (x < y) {
|
|
return sign(y); // $ sign=+
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void u(int x) {
|
|
unsigned c = (unsigned)x;
|
|
sign(c); // $ sign=+0
|
|
}
|
|
|
|
void constants() {
|
|
int i_pos = 1234;
|
|
sign(i_pos); // $ sign=+
|
|
int i_neg = -1234;
|
|
sign(i_neg); // $ sign=-
|
|
int i_zero = 0;
|
|
sign(i_zero); // $ sign=0
|
|
long l_pos = 1234;
|
|
sign(l_pos); // $ sign=+
|
|
long l_neg = -1234;
|
|
sign(l_neg); // $ sign=-
|
|
long l_zero = 0;
|
|
sign(l_zero); // $ sign=0
|
|
long l_pos_big = 0x00000001baadf00d;
|
|
sign(l_pos_big); // $ sign=+
|
|
float f_pos = 1.234f;
|
|
sign(f_pos); // $ sign=+
|
|
float f_neg = -1.234f;
|
|
sign(f_neg); // $ sign=-
|
|
float f_zero = 0.0f;
|
|
sign(f_zero); // $ sign=0
|
|
}
|
|
|
|
void arithmetic(int y) {
|
|
int x = 0;
|
|
sign(x + 1); // $ sign=+
|
|
x = -1;
|
|
sign(x); // $ sign=-
|
|
sign(x + 1); // $ sign=+-0 // Ideally 0 because it's constant
|
|
if (y < 0) {
|
|
sign(y); // $ sign=-
|
|
sign(y + 1); // $ sign=+-0 // Ideally -0 because it's only adding one.
|
|
int z = y;
|
|
sign(++z); // $ sign=+-0 // Ideally -0 because it's only adding one.
|
|
z = y;
|
|
sign(z++); // $ sign=-
|
|
sign(z); // $ sign=+-0 // Ideally -0 because it's only adding one.
|
|
}
|
|
}
|