xref: /illumos-gate/usr/src/tools/smatch/src/validation/optim/binops-same-args.c (revision 1f5207b7604fb44407eb4342aff613f7c4508508)
1*1f5207b7SJohn Levon typedef unsigned int u32;
2*1f5207b7SJohn Levon 
3*1f5207b7SJohn Levon int ssub(int a) { return a - a; }
4*1f5207b7SJohn Levon u32 usub(u32 a) { return a - a; }
5*1f5207b7SJohn Levon 
6*1f5207b7SJohn Levon int sdiv(int a) { return a / a; }
7*1f5207b7SJohn Levon u32 udiv(u32 a) { return a / a; }
8*1f5207b7SJohn Levon int smod(int a) { return a % a; }
9*1f5207b7SJohn Levon u32 umod(u32 a) { return a % a; }
10*1f5207b7SJohn Levon 
11*1f5207b7SJohn Levon int seq(int a) { return a == a; }
12*1f5207b7SJohn Levon int sne(int a) { return a != a; }
13*1f5207b7SJohn Levon int slt(int a) { return a < a; }
14*1f5207b7SJohn Levon int sgt(int a) { return a > a; }
15*1f5207b7SJohn Levon int sle(int a) { return a <= a; }
16*1f5207b7SJohn Levon int sge(int a) { return a >= a; }
17*1f5207b7SJohn Levon 
18*1f5207b7SJohn Levon u32 ueq(u32 a) { return a == a; }
19*1f5207b7SJohn Levon u32 une(u32 a) { return a != a; }
20*1f5207b7SJohn Levon u32 ult(u32 a) { return a < a; }
21*1f5207b7SJohn Levon u32 ugt(u32 a) { return a > a; }
22*1f5207b7SJohn Levon u32 ule(u32 a) { return a <= a; }
23*1f5207b7SJohn Levon u32 uge(u32 a) { return a >= a; }
24*1f5207b7SJohn Levon 
25*1f5207b7SJohn Levon u32 xor(u32 a) { return a ^ a; }
26*1f5207b7SJohn Levon 
27*1f5207b7SJohn Levon u32 ior(u32 a) { return a | a; }
28*1f5207b7SJohn Levon u32 and(u32 a) { return a & a; }
29*1f5207b7SJohn Levon 
30*1f5207b7SJohn Levon /*
31*1f5207b7SJohn Levon  * check-name: double-unop
32*1f5207b7SJohn Levon  * check-command: test-linearize -Wno-decl $file
33*1f5207b7SJohn Levon  * check-output-ignore
34*1f5207b7SJohn Levon  *
35*1f5207b7SJohn Levon  * check-output-excludes: sub\\.
36*1f5207b7SJohn Levon  * check-output-contains: divs\\.
37*1f5207b7SJohn Levon  * check-output-contains: divu\\.
38*1f5207b7SJohn Levon  * check-output-contains: mods\\.
39*1f5207b7SJohn Levon  * check-output-contains: modu\\.
40*1f5207b7SJohn Levon  * check-output-excludes: seteq\\.
41*1f5207b7SJohn Levon  * check-output-excludes: setne\\.
42*1f5207b7SJohn Levon  * check-output-excludes: set[gl]t\\.
43*1f5207b7SJohn Levon  * check-output-excludes: set[gl]e\\.
44*1f5207b7SJohn Levon  * check-output-excludes: set[ab]\\.
45*1f5207b7SJohn Levon  * check-output-excludes: set[ab]e\\.
46*1f5207b7SJohn Levon  * check-output-excludes: xor\\.
47*1f5207b7SJohn Levon  * check-output-excludes: or\\.
48*1f5207b7SJohn Levon  * check-output-excludes: and\\.
49*1f5207b7SJohn Levon  */
50