Skip to content

Commit 28391d1

Browse files
committed
C++: Add some more tests to expose consistency issues.
1 parent 493ea6d commit 28391d1

10 files changed

+1884
-0
lines changed

cpp/ql/test/library-tests/ir/ir/PrintAST.expected

Lines changed: 472 additions & 0 deletions
Large diffs are not rendered by default.

cpp/ql/test/library-tests/ir/ir/aliased_ir.expected

Lines changed: 596 additions & 0 deletions
Large diffs are not rendered by default.

cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,41 @@ thisArgumentIsNonPointer
3030
| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
3131
nonUniqueIRVariable
3232
nonBooleanOperand
33+
| ir.c:85:7:85:8 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
34+
| ir.c:86:6:86:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
35+
| ir.c:86:6:86:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
36+
| ir.c:88:11:88:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
37+
| ir.c:89:6:89:6 | ConditionalBranch: y | Conditional branch instruction ConditionalBranch: y with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
38+
| ir.c:90:6:90:7 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
39+
| ir.c:90:6:90:7 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
40+
| ir.c:92:6:92:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
41+
| ir.c:92:12:92:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
42+
| ir.c:93:6:93:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
43+
| ir.c:93:6:93:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
44+
| ir.c:93:13:93:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
45+
| ir.c:94:6:94:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
46+
| ir.c:94:12:94:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
47+
| ir.c:94:12:94:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
48+
| ir.c:95:6:95:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
49+
| ir.c:95:6:95:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
50+
| ir.c:95:13:95:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
51+
| ir.c:95:13:95:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
52+
| ir.c:96:6:96:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
53+
| ir.c:96:12:96:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
54+
| ir.c:97:6:97:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
55+
| ir.c:97:6:97:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
56+
| ir.c:97:13:97:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
57+
| ir.c:98:6:98:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
58+
| ir.c:98:12:98:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
59+
| ir.c:98:12:98:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
60+
| ir.c:99:6:99:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
61+
| ir.c:99:6:99:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
62+
| ir.c:99:13:99:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
63+
| ir.c:99:13:99:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
64+
| ir.c:101:19:101:20 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
65+
| ir.c:101:25:101:26 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
66+
| ir.c:102:6:102:14 | ConditionalBranch: x_1_and_2 | Conditional branch instruction ConditionalBranch: x_1_and_2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
67+
| ir.c:103:6:103:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
68+
| ir.c:103:6:103:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
3369
| try_except.c:35:13:35:13 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) |
3470
missingCppType

cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,41 @@ thisArgumentIsNonPointer
3030
| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
3131
nonUniqueIRVariable
3232
nonBooleanOperand
33+
| ir.c:85:7:85:8 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
34+
| ir.c:86:6:86:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
35+
| ir.c:86:6:86:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
36+
| ir.c:88:11:88:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
37+
| ir.c:89:6:89:6 | ConditionalBranch: y | Conditional branch instruction ConditionalBranch: y with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
38+
| ir.c:90:6:90:7 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
39+
| ir.c:90:6:90:7 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
40+
| ir.c:92:6:92:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
41+
| ir.c:92:12:92:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
42+
| ir.c:93:6:93:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
43+
| ir.c:93:6:93:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
44+
| ir.c:93:13:93:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
45+
| ir.c:94:6:94:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
46+
| ir.c:94:12:94:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
47+
| ir.c:94:12:94:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
48+
| ir.c:95:6:95:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
49+
| ir.c:95:6:95:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
50+
| ir.c:95:13:95:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
51+
| ir.c:95:13:95:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
52+
| ir.c:96:6:96:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
53+
| ir.c:96:12:96:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
54+
| ir.c:97:6:97:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
55+
| ir.c:97:6:97:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
56+
| ir.c:97:13:97:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
57+
| ir.c:98:6:98:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
58+
| ir.c:98:12:98:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
59+
| ir.c:98:12:98:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
60+
| ir.c:99:6:99:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
61+
| ir.c:99:6:99:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
62+
| ir.c:99:13:99:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
63+
| ir.c:99:13:99:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
64+
| ir.c:101:19:101:20 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
65+
| ir.c:101:25:101:26 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
66+
| ir.c:102:6:102:14 | ConditionalBranch: x_1_and_2 | Conditional branch instruction ConditionalBranch: x_1_and_2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
67+
| ir.c:103:6:103:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
68+
| ir.c:103:6:103:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
3369
| try_except.c:35:13:35:13 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) |
3470
missingCppType

cpp/ql/test/library-tests/ir/ir/ir.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,26 @@ void raise_access_violation() {
8181
ExRaiseAccessViolation(1);
8282
}
8383

84+
void branch_on_integral_in_c(int x1, int x2) {
85+
if (x1) {}
86+
if(!x1) {}
87+
88+
int y = !x1;
89+
if(y) {}
90+
if(!y) {}
91+
92+
if(x1 && x2) {}
93+
if(!x1 && x2) {}
94+
if(x1 && !x2) {}
95+
if(!x1 && !x2) {}
96+
if(x1 || x2) {}
97+
if(!x1 || x2) {}
98+
if(x1 || !x2) {}
99+
if(!x1 || !x2) {}
100+
101+
int x_1_and_2 = x1 && x2;
102+
if(x_1_and_2) {}
103+
if(!x_1_and_2) {}
104+
}
105+
84106
// semmle-extractor-options: --microsoft

cpp/ql/test/library-tests/ir/ir/ir.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2695,4 +2695,26 @@ int requires_use() {
26952695

26962696
}
26972697

2698+
void branch_on_integral_in_cpp(int x1, int x2) {
2699+
if (x1) {}
2700+
if(!x1) {}
2701+
2702+
int y = !x1;
2703+
if(y) {}
2704+
if(!y) {}
2705+
2706+
if(x1 && x2) {}
2707+
if(!x1 && x2) {}
2708+
if(x1 && !x2) {}
2709+
if(!x1 && !x2) {}
2710+
if(x1 || x2) {}
2711+
if(!x1 || x2) {}
2712+
if(x1 || !x2) {}
2713+
if(!x1 || !x2) {}
2714+
2715+
int x_1_and_2 = x1 && x2;
2716+
if(x_1_and_2) {}
2717+
if(!x_1_and_2) {}
2718+
}
2719+
26982720
// semmle-extractor-options: -std=c++20 --clang

0 commit comments

Comments
 (0)