mirror of
https://github.com/github/codeql.git
synced 2026-05-02 20:25:13 +02:00
C++: Add another test case with a throw.
This commit is contained in:
@@ -14931,3 +14931,42 @@ try_except.c:
|
||||
# 26| Type = [IntType] int
|
||||
# 26| ValueCategory = prvalue(load)
|
||||
# 28| getStmt(2): [ReturnStmt] return ...
|
||||
# 30| [TopLevelFunction] void AfxThrowMemoryException()
|
||||
# 30| <params>:
|
||||
# 32| [TopLevelFunction] void h(int)
|
||||
# 32| <params>:
|
||||
# 32| getParameter(0): [Parameter] b
|
||||
# 32| Type = [IntType] int
|
||||
# 32| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 33| getStmt(0): [DeclStmt] declaration
|
||||
# 33| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
|
||||
# 33| Type = [IntType] int
|
||||
# 33| getVariable().getInitializer(): [Initializer] initializer for x
|
||||
# 33| getExpr(): [Literal] 0
|
||||
# 33| Type = [IntType] int
|
||||
# 33| Value = [Literal] 0
|
||||
# 33| ValueCategory = prvalue
|
||||
# 34| getStmt(1): [MicrosoftTryExceptStmt] __try { ... } __except( ... ) { ... }
|
||||
# 34| getStmt(): [BlockStmt] { ... }
|
||||
# 35| getStmt(0): [IfStmt] if (...) ...
|
||||
# 35| getCondition(): [VariableAccess] b
|
||||
# 35| Type = [IntType] int
|
||||
# 35| ValueCategory = prvalue(load)
|
||||
# 35| getThen(): [BlockStmt] { ... }
|
||||
# 36| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 36| getExpr(): [FunctionCall] call to AfxThrowMemoryException
|
||||
# 36| Type = [VoidType] void
|
||||
# 36| ValueCategory = prvalue
|
||||
# 39| getCondition(): [Literal] 1
|
||||
# 39| Type = [IntType] int
|
||||
# 39| Value = [Literal] 1
|
||||
# 39| ValueCategory = prvalue
|
||||
# 39| getExcept(): [BlockStmt] { ... }
|
||||
# 40| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 40| getExpr(): [FunctionCall] call to sink
|
||||
# 40| Type = [VoidType] void
|
||||
# 40| ValueCategory = prvalue
|
||||
# 40| getArgument(0): [VariableAccess] x
|
||||
# 40| Type = [IntType] int
|
||||
# 40| ValueCategory = prvalue(load)
|
||||
# 42| getStmt(2): [ReturnStmt] return ...
|
||||
|
||||
@@ -9187,3 +9187,18 @@
|
||||
| try_except.c:26:10:26:10 | Address | &:r26_2 |
|
||||
| try_except.c:26:10:26:10 | Arg(0) | 0:r26_3 |
|
||||
| try_except.c:26:10:26:10 | Load | m22_4 |
|
||||
| try_except.c:32:6:32:6 | ChiPartial | partial:m32_3 |
|
||||
| try_except.c:32:6:32:6 | ChiTotal | total:m32_2 |
|
||||
| try_except.c:32:6:32:6 | SideEffect | ~m42_1 |
|
||||
| try_except.c:32:12:32:12 | Address | &:r32_5 |
|
||||
| try_except.c:33:7:33:7 | Address | &:r33_1 |
|
||||
| try_except.c:33:10:33:11 | StoreValue | r33_2 |
|
||||
| try_except.c:35:13:35:13 | Address | &:r35_1 |
|
||||
| try_except.c:35:13:35:13 | Condition | r35_2 |
|
||||
| try_except.c:35:13:35:13 | Load | m32_6 |
|
||||
| try_except.c:36:13:36:35 | CallTarget | func:r36_1 |
|
||||
| try_except.c:36:13:36:35 | ChiPartial | partial:m36_3 |
|
||||
| try_except.c:36:13:36:35 | ChiTotal | total:m32_4 |
|
||||
| try_except.c:36:13:36:35 | SideEffect | ~m32_4 |
|
||||
| try_except.c:42:1:42:1 | Phi | from 0:~m32_4 |
|
||||
| try_except.c:42:1:42:1 | Phi | from 1:~m36_4 |
|
||||
|
||||
@@ -21,6 +21,8 @@ useNotDominatedByDefinition
|
||||
| ir.cpp:1752:48:1752:48 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1750:5:1750:34 | int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) | int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) |
|
||||
| try_except.c:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:6:6:6:6 | void f() | void f() |
|
||||
| try_except.c:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:6:6:6:6 | void f() | void f() |
|
||||
| try_except.c:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) |
|
||||
| try_except.c:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) |
|
||||
switchInstructionWithoutDefaultEdge
|
||||
notMarkedAsConflated
|
||||
wronglyMarkedAsConflated
|
||||
|
||||
@@ -10506,3 +10506,64 @@ try_except.c:
|
||||
# 18| v18_4(void) = ReturnVoid :
|
||||
# 18| v18_5(void) = AliasedUse : ~m?
|
||||
# 18| v18_6(void) = ExitFunction :
|
||||
|
||||
# 32| void h(int)
|
||||
# 32| Block 0
|
||||
# 32| v32_1(void) = EnterFunction :
|
||||
# 32| mu32_2(unknown) = AliasedDefinition :
|
||||
# 32| mu32_3(unknown) = InitializeNonLocal :
|
||||
# 32| r32_4(glval<int>) = VariableAddress[b] :
|
||||
# 32| mu32_5(int) = InitializeParameter[b] : &:r32_4
|
||||
# 33| r33_1(glval<int>) = VariableAddress[x] :
|
||||
# 33| r33_2(int) = Constant[0] :
|
||||
# 33| mu33_3(int) = Store[x] : &:r33_1, r33_2
|
||||
# 35| r35_1(glval<int>) = VariableAddress[b] :
|
||||
# 35| r35_2(int) = Load[b] : &:r35_1, ~m?
|
||||
# 35| v35_3(void) = ConditionalBranch : r35_2
|
||||
#-----| False -> Block 7
|
||||
#-----| True -> Block 1
|
||||
|
||||
# 36| Block 1
|
||||
# 36| r36_1(glval<unknown>) = FunctionAddress[AfxThrowMemoryException] :
|
||||
# 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1
|
||||
# 36| mu36_3(unknown) = ^CallSideEffect : ~m?
|
||||
#-----| Goto -> Block 7
|
||||
|
||||
# 39| Block 2
|
||||
# 39| r39_1(int) = Constant[0] :
|
||||
# 39| r39_2(bool) = CompareEQ : r39_8, r39_1
|
||||
# 39| v39_3(void) = ConditionalBranch : r39_2
|
||||
#-----| False -> Block 3
|
||||
#-----| True -> Block 4
|
||||
|
||||
# 39| Block 3
|
||||
# 39| r39_4(int) = Constant[1] :
|
||||
# 39| r39_5(bool) = CompareEQ : r39_8, r39_4
|
||||
# 39| v39_6(void) = ConditionalBranch : r39_5
|
||||
#-----| True -> Block 6
|
||||
|
||||
# 39| Block 4
|
||||
# 39| v39_7(void) = Unwind :
|
||||
#-----| Goto -> Block 7
|
||||
|
||||
# 39| Block 5
|
||||
# 39| r39_8(int) = Constant[1] :
|
||||
# 39| r39_9(int) = Constant[-1] :
|
||||
# 39| r39_10(bool) = CompareEQ : r39_8, r39_9
|
||||
# 39| v39_11(void) = ConditionalBranch : r39_10
|
||||
#-----| False -> Block 2
|
||||
#-----| True -> Block 4
|
||||
|
||||
# 40| Block 6
|
||||
# 40| r40_1(glval<unknown>) = FunctionAddress[sink] :
|
||||
# 40| r40_2(glval<int>) = VariableAddress[x] :
|
||||
# 40| r40_3(int) = Load[x] : &:r40_2, ~m?
|
||||
# 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3
|
||||
# 40| mu40_5(unknown) = ^CallSideEffect : ~m?
|
||||
#-----| Goto -> Block 7
|
||||
|
||||
# 42| Block 7
|
||||
# 42| v42_1(void) = NoOp :
|
||||
# 32| v32_6(void) = ReturnVoid :
|
||||
# 32| v32_7(void) = AliasedUse : ~m?
|
||||
# 32| v32_8(void) = ExitFunction :
|
||||
|
||||
@@ -25,4 +25,18 @@ void g() {
|
||||
__finally {
|
||||
sink(x);
|
||||
}
|
||||
}
|
||||
|
||||
void AfxThrowMemoryException();
|
||||
|
||||
void h(int b) {
|
||||
int x = 0;
|
||||
__try {
|
||||
if (b) {
|
||||
AfxThrowMemoryException();
|
||||
}
|
||||
}
|
||||
__except (1) {
|
||||
sink(x);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user