mirror of
https://github.com/github/codeql.git
synced 2026-04-24 08:15:14 +02:00
C++: test for return in if
This commit is contained in:
@@ -17001,6 +17001,41 @@ ir.cpp:
|
||||
# 2234| Type = [Class] Bool
|
||||
# 2234| ValueCategory = lvalue
|
||||
# 2236| getStmt(2): [ReturnStmt] return ...
|
||||
# 2238| [TopLevelFunction] void IfReturnDestructors(bool)
|
||||
# 2238| <params>:
|
||||
# 2238| getParameter(0): [Parameter] b
|
||||
# 2238| Type = [BoolType] bool
|
||||
# 2238| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2239| getStmt(0): [DeclStmt] declaration
|
||||
# 2239| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s
|
||||
# 2239| Type = [Struct] String
|
||||
# 2239| getVariable().getInitializer(): [Initializer] initializer for s
|
||||
# 2239| getExpr(): [ConstructorCall] call to String
|
||||
# 2239| Type = [VoidType] void
|
||||
# 2239| ValueCategory = prvalue
|
||||
# 2240| getStmt(1): [IfStmt] if (...) ...
|
||||
# 2240| getCondition(): [VariableAccess] b
|
||||
# 2240| Type = [BoolType] bool
|
||||
# 2240| ValueCategory = prvalue(load)
|
||||
# 2240| getThen(): [BlockStmt] { ... }
|
||||
# 2241| getStmt(0): [ReturnStmt] return ...
|
||||
# 2244| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2244| Type = [VoidType] void
|
||||
# 2244| ValueCategory = prvalue
|
||||
# 2244| getQualifier(): [VariableAccess] s
|
||||
# 2244| Type = [Struct] String
|
||||
# 2244| ValueCategory = lvalue
|
||||
# 2243| getStmt(2): [ExprStmt] ExprStmt
|
||||
# 2243| getExpr(): [VariableAccess] s
|
||||
# 2243| Type = [Struct] String
|
||||
# 2243| ValueCategory = lvalue
|
||||
# 2244| getStmt(3): [ReturnStmt] return ...
|
||||
# 2244| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2244| Type = [VoidType] void
|
||||
# 2244| ValueCategory = prvalue
|
||||
# 2244| getQualifier(): [VariableAccess] s
|
||||
# 2244| Type = [Struct] String
|
||||
# 2244| ValueCategory = lvalue
|
||||
perf-regression.cpp:
|
||||
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
|
||||
# 4| <params>:
|
||||
|
||||
@@ -13492,6 +13492,57 @@ ir.cpp:
|
||||
# 2223| v2223_8(void) = AliasedUse : ~m2234_13
|
||||
# 2223| v2223_9(void) = ExitFunction :
|
||||
|
||||
# 2238| void IfReturnDestructors(bool)
|
||||
# 2238| Block 0
|
||||
# 2238| v2238_1(void) = EnterFunction :
|
||||
# 2238| m2238_2(unknown) = AliasedDefinition :
|
||||
# 2238| m2238_3(unknown) = InitializeNonLocal :
|
||||
# 2238| m2238_4(unknown) = Chi : total:m2238_2, partial:m2238_3
|
||||
# 2238| r2238_5(glval<bool>) = VariableAddress[b] :
|
||||
# 2238| m2238_6(bool) = InitializeParameter[b] : &:r2238_5
|
||||
# 2239| r2239_1(glval<String>) = VariableAddress[s] :
|
||||
# 2239| m2239_2(String) = Uninitialized[s] : &:r2239_1
|
||||
# 2239| r2239_3(glval<unknown>) = FunctionAddress[String] :
|
||||
# 2239| v2239_4(void) = Call[String] : func:r2239_3, this:r2239_1
|
||||
# 2239| m2239_5(unknown) = ^CallSideEffect : ~m2238_4
|
||||
# 2239| m2239_6(unknown) = Chi : total:m2238_4, partial:m2239_5
|
||||
# 2239| m2239_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2239_1
|
||||
# 2239| m2239_8(String) = Chi : total:m2239_2, partial:m2239_7
|
||||
# 2240| r2240_1(glval<bool>) = VariableAddress[b] :
|
||||
# 2240| r2240_2(bool) = Load[b] : &:r2240_1, m2238_6
|
||||
# 2240| v2240_3(void) = ConditionalBranch : r2240_2
|
||||
#-----| False -> Block 2
|
||||
#-----| True -> Block 1
|
||||
|
||||
# 2241| Block 1
|
||||
# 2241| v2241_1(void) = NoOp :
|
||||
# 2244| r2244_1(glval<String>) = VariableAddress[s] :
|
||||
# 2244| r2244_2(glval<unknown>) = FunctionAddress[~String] :
|
||||
# 2244| v2244_3(void) = Call[~String] : func:r2244_2, this:r2244_1
|
||||
# 2244| m2244_4(unknown) = ^CallSideEffect : ~m2239_6
|
||||
# 2244| m2244_5(unknown) = Chi : total:m2239_6, partial:m2244_4
|
||||
# 2244| v2244_6(void) = ^IndirectReadSideEffect[-1] : &:r2244_1, m2239_8
|
||||
# 2244| m2244_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2244_1
|
||||
# 2244| m2244_8(String) = Chi : total:m2239_8, partial:m2244_7
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 2243| Block 2
|
||||
# 2243| m2243_1(String) = Phi : from 0:m2239_8, from 1:m2244_8
|
||||
# 2243| m2243_2(unknown) = Phi : from 0:~m2239_6, from 1:~m2244_5
|
||||
# 2243| r2243_3(glval<String>) = VariableAddress[s] :
|
||||
# 2244| v2244_9(void) = NoOp :
|
||||
# 2244| r2244_10(glval<String>) = VariableAddress[s] :
|
||||
# 2244| r2244_11(glval<unknown>) = FunctionAddress[~String] :
|
||||
# 2244| v2244_12(void) = Call[~String] : func:r2244_11, this:r2244_10
|
||||
# 2244| m2244_13(unknown) = ^CallSideEffect : ~m2243_2
|
||||
# 2244| m2244_14(unknown) = Chi : total:m2243_2, partial:m2244_13
|
||||
# 2244| v2244_15(void) = ^IndirectReadSideEffect[-1] : &:r2244_10, m2243_1
|
||||
# 2244| m2244_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r2244_10
|
||||
# 2244| m2244_17(String) = Chi : total:m2243_1, partial:m2244_16
|
||||
# 2238| v2238_7(void) = ReturnVoid :
|
||||
# 2238| v2238_8(void) = AliasedUse : ~m2244_14
|
||||
# 2238| v2238_9(void) = ExitFunction :
|
||||
|
||||
perf-regression.cpp:
|
||||
# 6| void Big::Big()
|
||||
# 6| Block 0
|
||||
|
||||
@@ -2235,4 +2235,12 @@ void WhileLoopDestructors(bool b) {
|
||||
}
|
||||
}
|
||||
|
||||
void IfReturnDestructors(bool b) {
|
||||
String s;
|
||||
if(b) {
|
||||
return;
|
||||
}
|
||||
s;
|
||||
}
|
||||
|
||||
// semmle-extractor-options: -std=c++20 --clang
|
||||
|
||||
@@ -11042,6 +11042,46 @@
|
||||
| ir.cpp:2234:9:2234:9 | SideEffect | m2232_20 |
|
||||
| ir.cpp:2234:9:2234:9 | SideEffect | ~m2232_17 |
|
||||
| ir.cpp:2234:9:2234:9 | SideEffect | ~m2232_17 |
|
||||
| ir.cpp:2238:6:2238:24 | ChiPartial | partial:m2238_3 |
|
||||
| ir.cpp:2238:6:2238:24 | ChiTotal | total:m2238_2 |
|
||||
| ir.cpp:2238:6:2238:24 | SideEffect | ~m2244_14 |
|
||||
| ir.cpp:2238:31:2238:31 | Address | &:r2238_5 |
|
||||
| ir.cpp:2239:12:2239:12 | Address | &:r2239_1 |
|
||||
| ir.cpp:2239:12:2239:12 | Address | &:r2239_1 |
|
||||
| ir.cpp:2239:12:2239:12 | Arg(this) | this:r2239_1 |
|
||||
| ir.cpp:2239:12:2239:12 | CallTarget | func:r2239_3 |
|
||||
| ir.cpp:2239:12:2239:12 | ChiPartial | partial:m2239_5 |
|
||||
| ir.cpp:2239:12:2239:12 | ChiPartial | partial:m2239_7 |
|
||||
| ir.cpp:2239:12:2239:12 | ChiTotal | total:m2238_4 |
|
||||
| ir.cpp:2239:12:2239:12 | ChiTotal | total:m2239_2 |
|
||||
| ir.cpp:2239:12:2239:12 | SideEffect | ~m2238_4 |
|
||||
| ir.cpp:2240:8:2240:8 | Address | &:r2240_1 |
|
||||
| ir.cpp:2240:8:2240:8 | Condition | r2240_2 |
|
||||
| ir.cpp:2240:8:2240:8 | Load | m2238_6 |
|
||||
| ir.cpp:2243:5:2243:5 | Phi | from 0:m2239_8 |
|
||||
| ir.cpp:2243:5:2243:5 | Phi | from 0:~m2239_6 |
|
||||
| ir.cpp:2243:5:2243:5 | Phi | from 1:m2244_8 |
|
||||
| ir.cpp:2243:5:2243:5 | Phi | from 1:~m2244_5 |
|
||||
| ir.cpp:2244:1:2244:1 | Address | &:r2244_1 |
|
||||
| ir.cpp:2244:1:2244:1 | Address | &:r2244_1 |
|
||||
| ir.cpp:2244:1:2244:1 | Address | &:r2244_10 |
|
||||
| ir.cpp:2244:1:2244:1 | Address | &:r2244_10 |
|
||||
| ir.cpp:2244:1:2244:1 | Arg(this) | this:r2244_1 |
|
||||
| ir.cpp:2244:1:2244:1 | Arg(this) | this:r2244_10 |
|
||||
| ir.cpp:2244:1:2244:1 | CallTarget | func:r2244_2 |
|
||||
| ir.cpp:2244:1:2244:1 | CallTarget | func:r2244_11 |
|
||||
| ir.cpp:2244:1:2244:1 | ChiPartial | partial:m2244_4 |
|
||||
| ir.cpp:2244:1:2244:1 | ChiPartial | partial:m2244_7 |
|
||||
| ir.cpp:2244:1:2244:1 | ChiPartial | partial:m2244_13 |
|
||||
| ir.cpp:2244:1:2244:1 | ChiPartial | partial:m2244_16 |
|
||||
| ir.cpp:2244:1:2244:1 | ChiTotal | total:m2239_6 |
|
||||
| ir.cpp:2244:1:2244:1 | ChiTotal | total:m2239_8 |
|
||||
| ir.cpp:2244:1:2244:1 | ChiTotal | total:m2243_1 |
|
||||
| ir.cpp:2244:1:2244:1 | ChiTotal | total:m2243_2 |
|
||||
| ir.cpp:2244:1:2244:1 | SideEffect | m2239_8 |
|
||||
| ir.cpp:2244:1:2244:1 | SideEffect | m2243_1 |
|
||||
| ir.cpp:2244:1:2244:1 | SideEffect | ~m2239_6 |
|
||||
| ir.cpp:2244:1:2244:1 | SideEffect | ~m2243_2 |
|
||||
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
|
||||
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
|
||||
| perf-regression.cpp:6:3:6:5 | Address | &:r6_7 |
|
||||
|
||||
@@ -12685,6 +12685,48 @@ ir.cpp:
|
||||
# 2223| v2223_7(void) = AliasedUse : ~m?
|
||||
# 2223| v2223_8(void) = ExitFunction :
|
||||
|
||||
# 2238| void IfReturnDestructors(bool)
|
||||
# 2238| Block 0
|
||||
# 2238| v2238_1(void) = EnterFunction :
|
||||
# 2238| mu2238_2(unknown) = AliasedDefinition :
|
||||
# 2238| mu2238_3(unknown) = InitializeNonLocal :
|
||||
# 2238| r2238_4(glval<bool>) = VariableAddress[b] :
|
||||
# 2238| mu2238_5(bool) = InitializeParameter[b] : &:r2238_4
|
||||
# 2239| r2239_1(glval<String>) = VariableAddress[s] :
|
||||
# 2239| mu2239_2(String) = Uninitialized[s] : &:r2239_1
|
||||
# 2239| r2239_3(glval<unknown>) = FunctionAddress[String] :
|
||||
# 2239| v2239_4(void) = Call[String] : func:r2239_3, this:r2239_1
|
||||
# 2239| mu2239_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2239| mu2239_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2239_1
|
||||
# 2240| r2240_1(glval<bool>) = VariableAddress[b] :
|
||||
# 2240| r2240_2(bool) = Load[b] : &:r2240_1, ~m?
|
||||
# 2240| v2240_3(void) = ConditionalBranch : r2240_2
|
||||
#-----| False -> Block 2
|
||||
#-----| True -> Block 1
|
||||
|
||||
# 2241| Block 1
|
||||
# 2241| v2241_1(void) = NoOp :
|
||||
# 2244| r2244_1(glval<String>) = VariableAddress[s] :
|
||||
# 2244| r2244_2(glval<unknown>) = FunctionAddress[~String] :
|
||||
# 2244| v2244_3(void) = Call[~String] : func:r2244_2, this:r2244_1
|
||||
# 2244| mu2244_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 2244| v2244_5(void) = ^IndirectReadSideEffect[-1] : &:r2244_1, ~m?
|
||||
# 2244| mu2244_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2244_1
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 2243| Block 2
|
||||
# 2243| r2243_1(glval<String>) = VariableAddress[s] :
|
||||
# 2244| v2244_7(void) = NoOp :
|
||||
# 2244| r2244_8(glval<String>) = VariableAddress[s] :
|
||||
# 2244| r2244_9(glval<unknown>) = FunctionAddress[~String] :
|
||||
# 2244| v2244_10(void) = Call[~String] : func:r2244_9, this:r2244_8
|
||||
# 2244| mu2244_11(unknown) = ^CallSideEffect : ~m?
|
||||
# 2244| v2244_12(void) = ^IndirectReadSideEffect[-1] : &:r2244_8, ~m?
|
||||
# 2244| mu2244_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2244_8
|
||||
# 2238| v2238_6(void) = ReturnVoid :
|
||||
# 2238| v2238_7(void) = AliasedUse : ~m?
|
||||
# 2238| v2238_8(void) = ExitFunction :
|
||||
|
||||
perf-regression.cpp:
|
||||
# 6| void Big::Big()
|
||||
# 6| Block 0
|
||||
|
||||
Reference in New Issue
Block a user