mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
Merge pull request #15670 from jketema/destructors7
C++: Add IR tests for destruction of static locals
This commit is contained in:
@@ -10404,24 +10404,6 @@ ir.cpp:
|
||||
# 1245| Type = [PointerType] const char *
|
||||
# 1245| ValueCategory = prvalue(load)
|
||||
# 1246| getStmt(3): [ReturnStmt] return ...
|
||||
# 1246| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 1246| Type = [VoidType] void
|
||||
# 1246| ValueCategory = prvalue
|
||||
# 1246| getQualifier(): [VariableAccess] c
|
||||
# 1246| Type = [Struct] String
|
||||
# 1246| ValueCategory = lvalue
|
||||
# 1246| getImplicitDestructorCall(1): [DestructorCall] call to ~String
|
||||
# 1246| Type = [VoidType] void
|
||||
# 1246| ValueCategory = prvalue
|
||||
# 1246| getQualifier(): [VariableAccess] b
|
||||
# 1246| Type = [Struct] String
|
||||
# 1246| ValueCategory = lvalue
|
||||
# 1246| getImplicitDestructorCall(2): [DestructorCall] call to ~String
|
||||
# 1246| Type = [VoidType] void
|
||||
# 1246| ValueCategory = prvalue
|
||||
# 1246| getQualifier(): [VariableAccess] a
|
||||
# 1246| Type = [Struct] String
|
||||
# 1246| ValueCategory = lvalue
|
||||
# 1250| [TopLevelFunction] char* strcpy(char*, char const*)
|
||||
# 1250| <params>:
|
||||
# 1250| getParameter(0): [Parameter] destination
|
||||
@@ -16901,6 +16883,96 @@ ir.cpp:
|
||||
# 2167| getQualifier(): [VariableAccess] x
|
||||
# 2167| Type = [Class] ClassWithDestructor
|
||||
# 2167| ValueCategory = lvalue
|
||||
# 2169| [TopLevelFunction] void static_variable_with_destructor_1()
|
||||
# 2169| <params>:
|
||||
# 2169| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2170| getStmt(0): [DeclStmt] declaration
|
||||
# 2170| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a
|
||||
# 2170| Type = [Class] ClassWithDestructor
|
||||
# 2170| getVariable().getInitializer(): [Initializer] initializer for a
|
||||
# 2170| getExpr(): [ConstructorCall] call to ClassWithDestructor
|
||||
# 2170| Type = [VoidType] void
|
||||
# 2170| ValueCategory = prvalue
|
||||
# 2171| getStmt(1): [DeclStmt] declaration
|
||||
# 2171| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b
|
||||
# 2171| Type = [Class] ClassWithDestructor
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for b
|
||||
#-----| getExpr(): [ConstructorCall] call to ClassWithDestructor
|
||||
#-----| Type = [VoidType] void
|
||||
#-----| ValueCategory = prvalue
|
||||
# 2172| getStmt(2): [ReturnStmt] return ...
|
||||
# 2172| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
|
||||
# 2172| Type = [VoidType] void
|
||||
# 2172| ValueCategory = prvalue
|
||||
# 2172| getQualifier(): [VariableAccess] a
|
||||
# 2172| Type = [Class] ClassWithDestructor
|
||||
# 2172| ValueCategory = lvalue
|
||||
# 2174| [TopLevelFunction] void static_variable_with_destructor_2()
|
||||
# 2174| <params>:
|
||||
# 2174| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2175| getStmt(0): [DeclStmt] declaration
|
||||
# 2175| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a
|
||||
# 2175| Type = [Class] ClassWithDestructor
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for a
|
||||
#-----| getExpr(): [ConstructorCall] call to ClassWithDestructor
|
||||
#-----| Type = [VoidType] void
|
||||
#-----| ValueCategory = prvalue
|
||||
# 2176| getStmt(1): [DeclStmt] declaration
|
||||
# 2176| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b
|
||||
# 2176| Type = [Class] ClassWithDestructor
|
||||
# 2176| getVariable().getInitializer(): [Initializer] initializer for b
|
||||
# 2176| getExpr(): [ConstructorCall] call to ClassWithDestructor
|
||||
# 2176| Type = [VoidType] void
|
||||
# 2176| ValueCategory = prvalue
|
||||
# 2177| getStmt(2): [ReturnStmt] return ...
|
||||
# 2177| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
|
||||
# 2177| Type = [VoidType] void
|
||||
# 2177| ValueCategory = prvalue
|
||||
# 2177| getQualifier(): [VariableAccess] b
|
||||
# 2177| Type = [Class] ClassWithDestructor
|
||||
# 2177| ValueCategory = lvalue
|
||||
# 2179| [TopLevelFunction] void static_variable_with_destructor_3()
|
||||
# 2179| <params>:
|
||||
# 2179| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2180| getStmt(0): [DeclStmt] declaration
|
||||
# 2180| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a
|
||||
# 2180| Type = [Class] ClassWithDestructor
|
||||
# 2180| getVariable().getInitializer(): [Initializer] initializer for a
|
||||
# 2180| getExpr(): [ConstructorCall] call to ClassWithDestructor
|
||||
# 2180| Type = [VoidType] void
|
||||
# 2180| ValueCategory = prvalue
|
||||
# 2181| getStmt(1): [DeclStmt] declaration
|
||||
# 2181| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b
|
||||
# 2181| Type = [Class] ClassWithDestructor
|
||||
# 2181| getVariable().getInitializer(): [Initializer] initializer for b
|
||||
# 2181| getExpr(): [ConstructorCall] call to ClassWithDestructor
|
||||
# 2181| Type = [VoidType] void
|
||||
# 2181| ValueCategory = prvalue
|
||||
# 2182| getStmt(2): [DeclStmt] declaration
|
||||
# 2182| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c
|
||||
# 2182| Type = [Class] ClassWithDestructor
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for c
|
||||
#-----| getExpr(): [ConstructorCall] call to ClassWithDestructor
|
||||
#-----| Type = [VoidType] void
|
||||
#-----| ValueCategory = prvalue
|
||||
# 2183| getStmt(3): [ReturnStmt] return ...
|
||||
# 2183| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
|
||||
# 2183| Type = [VoidType] void
|
||||
# 2183| ValueCategory = prvalue
|
||||
# 2183| getQualifier(): [VariableAccess] b
|
||||
# 2183| Type = [Class] ClassWithDestructor
|
||||
# 2183| ValueCategory = lvalue
|
||||
# 2183| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor
|
||||
# 2183| Type = [VoidType] void
|
||||
# 2183| ValueCategory = prvalue
|
||||
# 2183| getQualifier(): [VariableAccess] a
|
||||
# 2183| Type = [Class] ClassWithDestructor
|
||||
# 2183| ValueCategory = lvalue
|
||||
# 2185| [GlobalVariable] ClassWithDestructor global_class_with_destructor
|
||||
# 2185| getInitializer(): [Initializer] initializer for global_class_with_destructor
|
||||
# 2185| getExpr(): [ConstructorCall] call to ClassWithDestructor
|
||||
# 2185| Type = [VoidType] void
|
||||
# 2185| ValueCategory = prvalue
|
||||
perf-regression.cpp:
|
||||
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
|
||||
# 4| <params>:
|
||||
|
||||
@@ -13030,6 +13030,149 @@ ir.cpp:
|
||||
# 2137| Block 21
|
||||
# 2137| v2137_13(void) = Unreached :
|
||||
|
||||
# 2169| void static_variable_with_destructor_1()
|
||||
# 2169| Block 0
|
||||
# 2169| v2169_1(void) = EnterFunction :
|
||||
# 2169| m2169_2(unknown) = AliasedDefinition :
|
||||
# 2169| m2169_3(unknown) = InitializeNonLocal :
|
||||
# 2169| m2169_4(unknown) = Chi : total:m2169_2, partial:m2169_3
|
||||
# 2170| r2170_1(glval<ClassWithDestructor>) = VariableAddress[a] :
|
||||
# 2170| m2170_2(ClassWithDestructor) = Uninitialized[a] : &:r2170_1
|
||||
# 2170| r2170_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2170| v2170_4(void) = Call[ClassWithDestructor] : func:r2170_3, this:r2170_1
|
||||
# 2170| m2170_5(unknown) = ^CallSideEffect : ~m2169_4
|
||||
# 2170| m2170_6(unknown) = Chi : total:m2169_4, partial:m2170_5
|
||||
# 2170| m2170_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2170_1
|
||||
# 2170| m2170_8(ClassWithDestructor) = Chi : total:m2170_2, partial:m2170_7
|
||||
# 2171| r2171_1(glval<bool>) = VariableAddress[b#init] :
|
||||
# 2171| r2171_2(bool) = Load[b#init] : &:r2171_1, ~m2170_6
|
||||
# 2171| v2171_3(void) = ConditionalBranch : r2171_2
|
||||
#-----| False -> Block 1
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 2171| Block 1
|
||||
# 2171| r2171_4(glval<ClassWithDestructor>) = VariableAddress[b] :
|
||||
#-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2171_4
|
||||
#-----| m0_3(unknown) = ^CallSideEffect : ~m2170_6
|
||||
#-----| m0_4(unknown) = Chi : total:m2170_6, partial:m0_3
|
||||
#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2171_4
|
||||
#-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5
|
||||
# 2171| r2171_5(bool) = Constant[1] :
|
||||
# 2171| m2171_6(bool) = Store[b#init] : &:r2171_1, r2171_5
|
||||
# 2171| m2171_7(unknown) = Chi : total:m0_6, partial:m2171_6
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 2172| Block 2
|
||||
# 2172| m2172_1(unknown) = Phi : from 0:~m2170_6, from 1:~m2171_7
|
||||
# 2172| v2172_2(void) = NoOp :
|
||||
# 2169| v2169_5(void) = ReturnVoid :
|
||||
# 2169| v2169_6(void) = AliasedUse : ~m2172_1
|
||||
# 2169| v2169_7(void) = ExitFunction :
|
||||
|
||||
# 2174| void static_variable_with_destructor_2()
|
||||
# 2174| Block 0
|
||||
# 2174| v2174_1(void) = EnterFunction :
|
||||
# 2174| m2174_2(unknown) = AliasedDefinition :
|
||||
# 2174| m2174_3(unknown) = InitializeNonLocal :
|
||||
# 2174| m2174_4(unknown) = Chi : total:m2174_2, partial:m2174_3
|
||||
# 2175| r2175_1(glval<bool>) = VariableAddress[a#init] :
|
||||
# 2175| r2175_2(bool) = Load[a#init] : &:r2175_1, ~m2174_3
|
||||
# 2175| v2175_3(void) = ConditionalBranch : r2175_2
|
||||
#-----| False -> Block 1
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 2175| Block 1
|
||||
# 2175| r2175_4(glval<ClassWithDestructor>) = VariableAddress[a] :
|
||||
#-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2175_4
|
||||
#-----| m0_3(unknown) = ^CallSideEffect : ~m2174_4
|
||||
#-----| m0_4(unknown) = Chi : total:m2174_4, partial:m0_3
|
||||
#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2175_4
|
||||
#-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5
|
||||
# 2175| r2175_5(bool) = Constant[1] :
|
||||
# 2175| m2175_6(bool) = Store[a#init] : &:r2175_1, r2175_5
|
||||
# 2175| m2175_7(unknown) = Chi : total:m0_6, partial:m2175_6
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 2176| Block 2
|
||||
# 2176| m2176_1(unknown) = Phi : from 0:~m2174_4, from 1:~m2175_7
|
||||
# 2176| r2176_2(glval<ClassWithDestructor>) = VariableAddress[b] :
|
||||
# 2176| m2176_3(ClassWithDestructor) = Uninitialized[b] : &:r2176_2
|
||||
# 2176| r2176_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2176| v2176_5(void) = Call[ClassWithDestructor] : func:r2176_4, this:r2176_2
|
||||
# 2176| m2176_6(unknown) = ^CallSideEffect : ~m2176_1
|
||||
# 2176| m2176_7(unknown) = Chi : total:m2176_1, partial:m2176_6
|
||||
# 2176| m2176_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2176_2
|
||||
# 2176| m2176_9(ClassWithDestructor) = Chi : total:m2176_3, partial:m2176_8
|
||||
# 2177| v2177_1(void) = NoOp :
|
||||
# 2174| v2174_5(void) = ReturnVoid :
|
||||
# 2174| v2174_6(void) = AliasedUse : ~m2176_7
|
||||
# 2174| v2174_7(void) = ExitFunction :
|
||||
|
||||
# 2179| void static_variable_with_destructor_3()
|
||||
# 2179| Block 0
|
||||
# 2179| v2179_1(void) = EnterFunction :
|
||||
# 2179| m2179_2(unknown) = AliasedDefinition :
|
||||
# 2179| m2179_3(unknown) = InitializeNonLocal :
|
||||
# 2179| m2179_4(unknown) = Chi : total:m2179_2, partial:m2179_3
|
||||
# 2180| r2180_1(glval<ClassWithDestructor>) = VariableAddress[a] :
|
||||
# 2180| m2180_2(ClassWithDestructor) = Uninitialized[a] : &:r2180_1
|
||||
# 2180| r2180_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2180| v2180_4(void) = Call[ClassWithDestructor] : func:r2180_3, this:r2180_1
|
||||
# 2180| m2180_5(unknown) = ^CallSideEffect : ~m2179_4
|
||||
# 2180| m2180_6(unknown) = Chi : total:m2179_4, partial:m2180_5
|
||||
# 2180| m2180_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2180_1
|
||||
# 2180| m2180_8(ClassWithDestructor) = Chi : total:m2180_2, partial:m2180_7
|
||||
# 2181| r2181_1(glval<ClassWithDestructor>) = VariableAddress[b] :
|
||||
# 2181| m2181_2(ClassWithDestructor) = Uninitialized[b] : &:r2181_1
|
||||
# 2181| r2181_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2181| v2181_4(void) = Call[ClassWithDestructor] : func:r2181_3, this:r2181_1
|
||||
# 2181| m2181_5(unknown) = ^CallSideEffect : ~m2180_6
|
||||
# 2181| m2181_6(unknown) = Chi : total:m2180_6, partial:m2181_5
|
||||
# 2181| m2181_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2181_1
|
||||
# 2181| m2181_8(ClassWithDestructor) = Chi : total:m2181_2, partial:m2181_7
|
||||
# 2182| r2182_1(glval<bool>) = VariableAddress[c#init] :
|
||||
# 2182| r2182_2(bool) = Load[c#init] : &:r2182_1, ~m2181_6
|
||||
# 2182| v2182_3(void) = ConditionalBranch : r2182_2
|
||||
#-----| False -> Block 1
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 2182| Block 1
|
||||
# 2182| r2182_4(glval<ClassWithDestructor>) = VariableAddress[c] :
|
||||
#-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2182_4
|
||||
#-----| m0_3(unknown) = ^CallSideEffect : ~m2181_6
|
||||
#-----| m0_4(unknown) = Chi : total:m2181_6, partial:m0_3
|
||||
#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2182_4
|
||||
#-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5
|
||||
# 2182| r2182_5(bool) = Constant[1] :
|
||||
# 2182| m2182_6(bool) = Store[c#init] : &:r2182_1, r2182_5
|
||||
# 2182| m2182_7(unknown) = Chi : total:m0_6, partial:m2182_6
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 2183| Block 2
|
||||
# 2183| m2183_1(unknown) = Phi : from 0:~m2181_6, from 1:~m2182_7
|
||||
# 2183| v2183_2(void) = NoOp :
|
||||
# 2179| v2179_5(void) = ReturnVoid :
|
||||
# 2179| v2179_6(void) = AliasedUse : ~m2183_1
|
||||
# 2179| v2179_7(void) = ExitFunction :
|
||||
|
||||
# 2185| ClassWithDestructor global_class_with_destructor
|
||||
# 2185| Block 0
|
||||
# 2185| v2185_1(void) = EnterFunction :
|
||||
# 2185| m2185_2(unknown) = AliasedDefinition :
|
||||
# 2185| r2185_3(glval<ClassWithDestructor>) = VariableAddress[global_class_with_destructor] :
|
||||
# 2185| r2185_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2185| v2185_5(void) = Call[ClassWithDestructor] : func:r2185_4, this:r2185_3
|
||||
# 2185| m2185_6(unknown) = ^CallSideEffect : ~m2185_2
|
||||
# 2185| m2185_7(unknown) = Chi : total:m2185_2, partial:m2185_6
|
||||
# 2185| m2185_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2185_3
|
||||
# 2185| m2185_9(unknown) = Chi : total:m2185_7, partial:m2185_8
|
||||
# 2185| v2185_10(void) = ReturnVoid :
|
||||
# 2185| v2185_11(void) = AliasedUse : ~m2185_9
|
||||
# 2185| v2185_12(void) = ExitFunction :
|
||||
|
||||
perf-regression.cpp:
|
||||
# 6| void Big::Big()
|
||||
# 6| Block 0
|
||||
|
||||
@@ -2166,4 +2166,22 @@ void initialization_with_destructor(bool b, char c) {
|
||||
}
|
||||
}
|
||||
|
||||
void static_variable_with_destructor_1() {
|
||||
ClassWithDestructor a;
|
||||
static ClassWithDestructor b;
|
||||
}
|
||||
|
||||
void static_variable_with_destructor_2() {
|
||||
static ClassWithDestructor a;
|
||||
ClassWithDestructor b;
|
||||
}
|
||||
|
||||
void static_variable_with_destructor_3() {
|
||||
ClassWithDestructor a;
|
||||
ClassWithDestructor b;
|
||||
static ClassWithDestructor c;
|
||||
}
|
||||
|
||||
static ClassWithDestructor global_class_with_destructor;
|
||||
|
||||
// semmle-extractor-options: -std=c++20 --clang
|
||||
|
||||
@@ -792,10 +792,19 @@
|
||||
| file://:0:0:0:0 | Arg(0) | 0:r0_15 |
|
||||
| file://:0:0:0:0 | Arg(0) | 0:r0_15 |
|
||||
| file://:0:0:0:0 | CallTarget | func:r0_1 |
|
||||
| file://:0:0:0:0 | CallTarget | func:r0_1 |
|
||||
| file://:0:0:0:0 | CallTarget | func:r0_1 |
|
||||
| file://:0:0:0:0 | CallTarget | func:r0_1 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_2 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_2 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_2 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_3 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_3 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_3 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_3 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_5 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_5 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_5 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_5 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_5 |
|
||||
| file://:0:0:0:0 | ChiPartial | partial:m0_8 |
|
||||
@@ -807,6 +816,9 @@
|
||||
| file://:0:0:0:0 | ChiTotal | total:m0_3 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m0_4 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m0_4 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m0_4 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m0_4 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m0_4 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m754_8 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m763_8 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m1043_10 |
|
||||
@@ -816,6 +828,9 @@
|
||||
| file://:0:0:0:0 | ChiTotal | total:m1718_19 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m1836_8 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m1841_8 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m2170_6 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m2174_4 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m2181_6 |
|
||||
| file://:0:0:0:0 | Left | r0_2 |
|
||||
| file://:0:0:0:0 | Left | r0_4 |
|
||||
| file://:0:0:0:0 | Left | r0_7 |
|
||||
@@ -910,6 +925,9 @@
|
||||
| file://:0:0:0:0 | SideEffect | ~m1242_4 |
|
||||
| file://:0:0:0:0 | SideEffect | ~m1449_6 |
|
||||
| file://:0:0:0:0 | SideEffect | ~m1841_8 |
|
||||
| file://:0:0:0:0 | SideEffect | ~m2170_6 |
|
||||
| file://:0:0:0:0 | SideEffect | ~m2174_4 |
|
||||
| file://:0:0:0:0 | SideEffect | ~m2181_6 |
|
||||
| file://:0:0:0:0 | StoreValue | r0_1 |
|
||||
| file://:0:0:0:0 | StoreValue | r0_1 |
|
||||
| file://:0:0:0:0 | StoreValue | r0_1 |
|
||||
@@ -10589,6 +10607,93 @@
|
||||
| ir.cpp:2164:11:2164:11 | Load | m2163_56 |
|
||||
| ir.cpp:2164:11:2164:16 | Condition | r2164_4 |
|
||||
| ir.cpp:2164:16:2164:16 | Right | r2164_3 |
|
||||
| ir.cpp:2169:6:2169:38 | ChiPartial | partial:m2169_3 |
|
||||
| ir.cpp:2169:6:2169:38 | ChiTotal | total:m2169_2 |
|
||||
| ir.cpp:2169:6:2169:38 | SideEffect | ~m2172_1 |
|
||||
| ir.cpp:2170:25:2170:25 | Address | &:r2170_1 |
|
||||
| ir.cpp:2170:25:2170:25 | Address | &:r2170_1 |
|
||||
| ir.cpp:2170:25:2170:25 | Arg(this) | this:r2170_1 |
|
||||
| ir.cpp:2170:25:2170:25 | CallTarget | func:r2170_3 |
|
||||
| ir.cpp:2170:25:2170:25 | ChiPartial | partial:m2170_5 |
|
||||
| ir.cpp:2170:25:2170:25 | ChiPartial | partial:m2170_7 |
|
||||
| ir.cpp:2170:25:2170:25 | ChiTotal | total:m2169_4 |
|
||||
| ir.cpp:2170:25:2170:25 | ChiTotal | total:m2170_2 |
|
||||
| ir.cpp:2170:25:2170:25 | SideEffect | ~m2169_4 |
|
||||
| ir.cpp:2171:32:2171:32 | Address | &:r2171_1 |
|
||||
| ir.cpp:2171:32:2171:32 | Address | &:r2171_1 |
|
||||
| ir.cpp:2171:32:2171:32 | Address | &:r2171_4 |
|
||||
| ir.cpp:2171:32:2171:32 | Arg(this) | this:r2171_4 |
|
||||
| ir.cpp:2171:32:2171:32 | ChiPartial | partial:m2171_6 |
|
||||
| ir.cpp:2171:32:2171:32 | ChiTotal | total:m0_6 |
|
||||
| ir.cpp:2171:32:2171:32 | Condition | r2171_2 |
|
||||
| ir.cpp:2171:32:2171:32 | Load | ~m2170_6 |
|
||||
| ir.cpp:2171:32:2171:32 | StoreValue | r2171_5 |
|
||||
| ir.cpp:2172:1:2172:1 | Phi | from 0:~m2170_6 |
|
||||
| ir.cpp:2172:1:2172:1 | Phi | from 1:~m2171_7 |
|
||||
| ir.cpp:2174:6:2174:38 | ChiPartial | partial:m2174_3 |
|
||||
| ir.cpp:2174:6:2174:38 | ChiTotal | total:m2174_2 |
|
||||
| ir.cpp:2174:6:2174:38 | SideEffect | ~m2176_7 |
|
||||
| ir.cpp:2175:32:2175:32 | Address | &:r2175_1 |
|
||||
| ir.cpp:2175:32:2175:32 | Address | &:r2175_1 |
|
||||
| ir.cpp:2175:32:2175:32 | Address | &:r2175_4 |
|
||||
| ir.cpp:2175:32:2175:32 | Arg(this) | this:r2175_4 |
|
||||
| ir.cpp:2175:32:2175:32 | ChiPartial | partial:m2175_6 |
|
||||
| ir.cpp:2175:32:2175:32 | ChiTotal | total:m0_6 |
|
||||
| ir.cpp:2175:32:2175:32 | Condition | r2175_2 |
|
||||
| ir.cpp:2175:32:2175:32 | Load | ~m2174_3 |
|
||||
| ir.cpp:2175:32:2175:32 | StoreValue | r2175_5 |
|
||||
| ir.cpp:2176:25:2176:25 | Address | &:r2176_2 |
|
||||
| ir.cpp:2176:25:2176:25 | Address | &:r2176_2 |
|
||||
| ir.cpp:2176:25:2176:25 | Arg(this) | this:r2176_2 |
|
||||
| ir.cpp:2176:25:2176:25 | CallTarget | func:r2176_4 |
|
||||
| ir.cpp:2176:25:2176:25 | ChiPartial | partial:m2176_6 |
|
||||
| ir.cpp:2176:25:2176:25 | ChiPartial | partial:m2176_8 |
|
||||
| ir.cpp:2176:25:2176:25 | ChiTotal | total:m2176_1 |
|
||||
| ir.cpp:2176:25:2176:25 | ChiTotal | total:m2176_3 |
|
||||
| ir.cpp:2176:25:2176:25 | Phi | from 0:~m2174_4 |
|
||||
| ir.cpp:2176:25:2176:25 | Phi | from 1:~m2175_7 |
|
||||
| ir.cpp:2176:25:2176:25 | SideEffect | ~m2176_1 |
|
||||
| ir.cpp:2179:6:2179:38 | ChiPartial | partial:m2179_3 |
|
||||
| ir.cpp:2179:6:2179:38 | ChiTotal | total:m2179_2 |
|
||||
| ir.cpp:2179:6:2179:38 | SideEffect | ~m2183_1 |
|
||||
| ir.cpp:2180:25:2180:25 | Address | &:r2180_1 |
|
||||
| ir.cpp:2180:25:2180:25 | Address | &:r2180_1 |
|
||||
| ir.cpp:2180:25:2180:25 | Arg(this) | this:r2180_1 |
|
||||
| ir.cpp:2180:25:2180:25 | CallTarget | func:r2180_3 |
|
||||
| ir.cpp:2180:25:2180:25 | ChiPartial | partial:m2180_5 |
|
||||
| ir.cpp:2180:25:2180:25 | ChiPartial | partial:m2180_7 |
|
||||
| ir.cpp:2180:25:2180:25 | ChiTotal | total:m2179_4 |
|
||||
| ir.cpp:2180:25:2180:25 | ChiTotal | total:m2180_2 |
|
||||
| ir.cpp:2180:25:2180:25 | SideEffect | ~m2179_4 |
|
||||
| ir.cpp:2181:25:2181:25 | Address | &:r2181_1 |
|
||||
| ir.cpp:2181:25:2181:25 | Address | &:r2181_1 |
|
||||
| ir.cpp:2181:25:2181:25 | Arg(this) | this:r2181_1 |
|
||||
| ir.cpp:2181:25:2181:25 | CallTarget | func:r2181_3 |
|
||||
| ir.cpp:2181:25:2181:25 | ChiPartial | partial:m2181_5 |
|
||||
| ir.cpp:2181:25:2181:25 | ChiPartial | partial:m2181_7 |
|
||||
| ir.cpp:2181:25:2181:25 | ChiTotal | total:m2180_6 |
|
||||
| ir.cpp:2181:25:2181:25 | ChiTotal | total:m2181_2 |
|
||||
| ir.cpp:2181:25:2181:25 | SideEffect | ~m2180_6 |
|
||||
| ir.cpp:2182:32:2182:32 | Address | &:r2182_1 |
|
||||
| ir.cpp:2182:32:2182:32 | Address | &:r2182_1 |
|
||||
| ir.cpp:2182:32:2182:32 | Address | &:r2182_4 |
|
||||
| ir.cpp:2182:32:2182:32 | Arg(this) | this:r2182_4 |
|
||||
| ir.cpp:2182:32:2182:32 | ChiPartial | partial:m2182_6 |
|
||||
| ir.cpp:2182:32:2182:32 | ChiTotal | total:m0_6 |
|
||||
| ir.cpp:2182:32:2182:32 | Condition | r2182_2 |
|
||||
| ir.cpp:2182:32:2182:32 | Load | ~m2181_6 |
|
||||
| ir.cpp:2182:32:2182:32 | StoreValue | r2182_5 |
|
||||
| ir.cpp:2183:1:2183:1 | Phi | from 0:~m2181_6 |
|
||||
| ir.cpp:2183:1:2183:1 | Phi | from 1:~m2182_7 |
|
||||
| ir.cpp:2185:28:2185:55 | Address | &:r2185_3 |
|
||||
| ir.cpp:2185:28:2185:55 | Arg(this) | this:r2185_3 |
|
||||
| ir.cpp:2185:28:2185:55 | CallTarget | func:r2185_4 |
|
||||
| ir.cpp:2185:28:2185:55 | ChiPartial | partial:m2185_6 |
|
||||
| ir.cpp:2185:28:2185:55 | ChiPartial | partial:m2185_8 |
|
||||
| ir.cpp:2185:28:2185:55 | ChiTotal | total:m2185_2 |
|
||||
| ir.cpp:2185:28:2185:55 | ChiTotal | total:m2185_7 |
|
||||
| ir.cpp:2185:28:2185:55 | SideEffect | ~m2185_2 |
|
||||
| ir.cpp:2185:28:2185:55 | SideEffect | ~m2185_9 |
|
||||
| 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 |
|
||||
|
||||
@@ -12166,6 +12166,124 @@ ir.cpp:
|
||||
# 2167| v2167_1(void) = NoOp :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 2169| void static_variable_with_destructor_1()
|
||||
# 2169| Block 0
|
||||
# 2169| v2169_1(void) = EnterFunction :
|
||||
# 2169| mu2169_2(unknown) = AliasedDefinition :
|
||||
# 2169| mu2169_3(unknown) = InitializeNonLocal :
|
||||
# 2170| r2170_1(glval<ClassWithDestructor>) = VariableAddress[a] :
|
||||
# 2170| mu2170_2(ClassWithDestructor) = Uninitialized[a] : &:r2170_1
|
||||
# 2170| r2170_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2170| v2170_4(void) = Call[ClassWithDestructor] : func:r2170_3, this:r2170_1
|
||||
# 2170| mu2170_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2170| mu2170_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2170_1
|
||||
# 2171| r2171_1(glval<bool>) = VariableAddress[b#init] :
|
||||
# 2171| r2171_2(bool) = Load[b#init] : &:r2171_1, ~m?
|
||||
# 2171| v2171_3(void) = ConditionalBranch : r2171_2
|
||||
#-----| False -> Block 1
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 2171| Block 1
|
||||
# 2171| r2171_4(glval<ClassWithDestructor>) = VariableAddress[b] :
|
||||
#-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2171_4
|
||||
#-----| mu0_3(unknown) = ^CallSideEffect : ~m?
|
||||
#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2171_4
|
||||
# 2171| r2171_5(bool) = Constant[1] :
|
||||
# 2171| mu2171_6(bool) = Store[b#init] : &:r2171_1, r2171_5
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 2172| Block 2
|
||||
# 2172| v2172_1(void) = NoOp :
|
||||
# 2169| v2169_4(void) = ReturnVoid :
|
||||
# 2169| v2169_5(void) = AliasedUse : ~m?
|
||||
# 2169| v2169_6(void) = ExitFunction :
|
||||
|
||||
# 2174| void static_variable_with_destructor_2()
|
||||
# 2174| Block 0
|
||||
# 2174| v2174_1(void) = EnterFunction :
|
||||
# 2174| mu2174_2(unknown) = AliasedDefinition :
|
||||
# 2174| mu2174_3(unknown) = InitializeNonLocal :
|
||||
# 2175| r2175_1(glval<bool>) = VariableAddress[a#init] :
|
||||
# 2175| r2175_2(bool) = Load[a#init] : &:r2175_1, ~m?
|
||||
# 2175| v2175_3(void) = ConditionalBranch : r2175_2
|
||||
#-----| False -> Block 1
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 2175| Block 1
|
||||
# 2175| r2175_4(glval<ClassWithDestructor>) = VariableAddress[a] :
|
||||
#-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2175_4
|
||||
#-----| mu0_3(unknown) = ^CallSideEffect : ~m?
|
||||
#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2175_4
|
||||
# 2175| r2175_5(bool) = Constant[1] :
|
||||
# 2175| mu2175_6(bool) = Store[a#init] : &:r2175_1, r2175_5
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 2176| Block 2
|
||||
# 2176| r2176_1(glval<ClassWithDestructor>) = VariableAddress[b] :
|
||||
# 2176| mu2176_2(ClassWithDestructor) = Uninitialized[b] : &:r2176_1
|
||||
# 2176| r2176_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2176| v2176_4(void) = Call[ClassWithDestructor] : func:r2176_3, this:r2176_1
|
||||
# 2176| mu2176_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2176| mu2176_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2176_1
|
||||
# 2177| v2177_1(void) = NoOp :
|
||||
# 2174| v2174_4(void) = ReturnVoid :
|
||||
# 2174| v2174_5(void) = AliasedUse : ~m?
|
||||
# 2174| v2174_6(void) = ExitFunction :
|
||||
|
||||
# 2179| void static_variable_with_destructor_3()
|
||||
# 2179| Block 0
|
||||
# 2179| v2179_1(void) = EnterFunction :
|
||||
# 2179| mu2179_2(unknown) = AliasedDefinition :
|
||||
# 2179| mu2179_3(unknown) = InitializeNonLocal :
|
||||
# 2180| r2180_1(glval<ClassWithDestructor>) = VariableAddress[a] :
|
||||
# 2180| mu2180_2(ClassWithDestructor) = Uninitialized[a] : &:r2180_1
|
||||
# 2180| r2180_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2180| v2180_4(void) = Call[ClassWithDestructor] : func:r2180_3, this:r2180_1
|
||||
# 2180| mu2180_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2180| mu2180_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2180_1
|
||||
# 2181| r2181_1(glval<ClassWithDestructor>) = VariableAddress[b] :
|
||||
# 2181| mu2181_2(ClassWithDestructor) = Uninitialized[b] : &:r2181_1
|
||||
# 2181| r2181_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2181| v2181_4(void) = Call[ClassWithDestructor] : func:r2181_3, this:r2181_1
|
||||
# 2181| mu2181_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2181| mu2181_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2181_1
|
||||
# 2182| r2182_1(glval<bool>) = VariableAddress[c#init] :
|
||||
# 2182| r2182_2(bool) = Load[c#init] : &:r2182_1, ~m?
|
||||
# 2182| v2182_3(void) = ConditionalBranch : r2182_2
|
||||
#-----| False -> Block 1
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 2182| Block 1
|
||||
# 2182| r2182_4(glval<ClassWithDestructor>) = VariableAddress[c] :
|
||||
#-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2182_4
|
||||
#-----| mu0_3(unknown) = ^CallSideEffect : ~m?
|
||||
#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2182_4
|
||||
# 2182| r2182_5(bool) = Constant[1] :
|
||||
# 2182| mu2182_6(bool) = Store[c#init] : &:r2182_1, r2182_5
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 2183| Block 2
|
||||
# 2183| v2183_1(void) = NoOp :
|
||||
# 2179| v2179_4(void) = ReturnVoid :
|
||||
# 2179| v2179_5(void) = AliasedUse : ~m?
|
||||
# 2179| v2179_6(void) = ExitFunction :
|
||||
|
||||
# 2185| ClassWithDestructor global_class_with_destructor
|
||||
# 2185| Block 0
|
||||
# 2185| v2185_1(void) = EnterFunction :
|
||||
# 2185| mu2185_2(unknown) = AliasedDefinition :
|
||||
# 2185| r2185_3(glval<ClassWithDestructor>) = VariableAddress[global_class_with_destructor] :
|
||||
# 2185| r2185_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2185| v2185_5(void) = Call[ClassWithDestructor] : func:r2185_4, this:r2185_3
|
||||
# 2185| mu2185_6(unknown) = ^CallSideEffect : ~m?
|
||||
# 2185| mu2185_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2185_3
|
||||
# 2185| v2185_8(void) = ReturnVoid :
|
||||
# 2185| v2185_9(void) = AliasedUse : ~m?
|
||||
# 2185| v2185_10(void) = ExitFunction :
|
||||
|
||||
perf-regression.cpp:
|
||||
# 6| void Big::Big()
|
||||
# 6| Block 0
|
||||
|
||||
@@ -2,5 +2,3 @@
|
||||
| no_dynamic_init.cpp:5:12:5:35 | no_dynamic_init.cpp:5:12:5:35 | no_dynamic_init.cpp:5:12:5:35 | Goodbye cruel world.\n |
|
||||
| no_dynamic_init.cpp:5:12:5:35 | no_dynamic_init.cpp:5:12:5:35 | no_dynamic_init.cpp:5:12:5:35 | array to pointer conversion |
|
||||
| no_dynamic_init.cpp:11:10:11:10 | no_dynamic_init.cpp:11:10:11:10 | no_dynamic_init.cpp:11:10:11:10 | 0 |
|
||||
| no_dynamic_init.cpp:12:1:12:1 | no_dynamic_init.cpp:12:1:12:1 | no_dynamic_init.cpp:12:1:12:1 | call to ~Magic |
|
||||
| no_dynamic_init.cpp:12:1:12:1 | no_dynamic_init.cpp:12:1:12:1 | no_dynamic_init.cpp:12:1:12:1 | m |
|
||||
|
||||
Reference in New Issue
Block a user