mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
Merge pull request #15899 from jketema/destructors10
C++: Add IR tests for the destruction of temporaries
This commit is contained in:
@@ -1728,6 +1728,374 @@ complex.c:
|
||||
# 144| Type = [LongDoubleType] long double
|
||||
# 144| ValueCategory = prvalue
|
||||
# 145| getStmt(72): [ReturnStmt] return ...
|
||||
destructors_for_temps.cpp:
|
||||
# 1| [CopyAssignmentOperator] ClassWithDestructor2& ClassWithDestructor2::operator=(ClassWithDestructor2 const&)
|
||||
# 1| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const ClassWithDestructor2 &
|
||||
# 1| [CopyConstructor] void ClassWithDestructor2::ClassWithDestructor2(ClassWithDestructor2 const&)
|
||||
# 1| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const ClassWithDestructor2 &
|
||||
# 3| [Constructor] void ClassWithDestructor2::ClassWithDestructor2()
|
||||
# 3| <params>:
|
||||
# 4| [Destructor] void ClassWithDestructor2::~ClassWithDestructor2()
|
||||
# 4| <params>:
|
||||
# 6| [MemberFunction] char ClassWithDestructor2::get_x()
|
||||
# 6| <params>:
|
||||
# 9| [CopyAssignmentOperator] ClassWithConstructor& ClassWithConstructor::operator=(ClassWithConstructor const&)
|
||||
# 9| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const ClassWithConstructor &
|
||||
# 9| [MoveAssignmentOperator] ClassWithConstructor& ClassWithConstructor::operator=(ClassWithConstructor&&)
|
||||
# 9| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] ClassWithConstructor &&
|
||||
# 9| [CopyConstructor] void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor const&)
|
||||
# 9| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const ClassWithConstructor &
|
||||
# 9| [MoveConstructor] void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&)
|
||||
# 9| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] ClassWithConstructor &&
|
||||
# 9| <initializations>:
|
||||
# 9| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 9| getStmt(0): [ReturnStmt] return ...
|
||||
# 11| [Constructor] void ClassWithConstructor::ClassWithConstructor(char, char)
|
||||
# 11| <params>:
|
||||
# 11| getParameter(0): [Parameter] x
|
||||
# 11| Type = [PlainCharType] char
|
||||
# 11| getParameter(1): [Parameter] y
|
||||
# 11| Type = [PlainCharType] char
|
||||
# 14| [TopLevelFunction] char temp_test()
|
||||
# 14| <params>:
|
||||
# 14| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 15| getStmt(0): [DeclStmt] declaration
|
||||
# 15| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
|
||||
# 15| Type = [PlainCharType] char
|
||||
# 15| getVariable().getInitializer(): [Initializer] initializer for x
|
||||
# 15| getExpr(): [FunctionCall] call to get_x
|
||||
# 15| Type = [PlainCharType] char
|
||||
# 15| ValueCategory = prvalue
|
||||
# 15| getQualifier(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 15| Type = [VoidType] void
|
||||
# 15| ValueCategory = prvalue
|
||||
# 15| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 15| Type = [Class] ClassWithDestructor2
|
||||
# 15| ValueCategory = prvalue(load)
|
||||
# 16| getStmt(1): [DeclStmt] declaration
|
||||
# 16| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y
|
||||
# 16| Type = [Class] ClassWithConstructor
|
||||
# 16| getVariable().getInitializer(): [Initializer] initializer for y
|
||||
# 16| getExpr(): [ConstructorCall] call to ClassWithConstructor
|
||||
# 16| Type = [VoidType] void
|
||||
# 16| ValueCategory = prvalue
|
||||
# 16| getArgument(0): [CharLiteral] 97
|
||||
# 16| Type = [PlainCharType] char
|
||||
# 16| Value = [CharLiteral] 97
|
||||
# 16| ValueCategory = prvalue
|
||||
# 16| getArgument(1): [FunctionCall] call to get_x
|
||||
# 16| Type = [PlainCharType] char
|
||||
# 16| ValueCategory = prvalue
|
||||
# 16| getQualifier(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 16| Type = [VoidType] void
|
||||
# 16| ValueCategory = prvalue
|
||||
# 16| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 16| Type = [Class] ClassWithDestructor2
|
||||
# 16| ValueCategory = prvalue(load)
|
||||
# 17| getStmt(2): [ReturnStmt] return ...
|
||||
# 17| getExpr(): [FunctionCall] call to get_x
|
||||
# 17| Type = [PlainCharType] char
|
||||
# 17| ValueCategory = prvalue
|
||||
# 17| getQualifier(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 17| Type = [VoidType] void
|
||||
# 17| ValueCategory = prvalue
|
||||
# 17| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 17| Type = [Class] ClassWithDestructor2
|
||||
# 17| ValueCategory = prvalue(load)
|
||||
# 21| [TopLevelFunction] char temp_test2()
|
||||
# 21| <params>:
|
||||
# 21| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 22| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 22| getExpr(): [NewExpr] new
|
||||
# 22| Type = [PointerType] ClassWithDestructor2 *
|
||||
# 22| ValueCategory = prvalue
|
||||
# 22| getInitializer(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 22| Type = [VoidType] void
|
||||
# 22| ValueCategory = prvalue
|
||||
# 23| getStmt(1): [ReturnStmt] return ...
|
||||
# 23| getExpr(): [AddExpr] ... + ...
|
||||
# 23| Type = [IntType] int
|
||||
# 23| ValueCategory = prvalue
|
||||
# 23| getLeftOperand(): [FunctionCall] call to get_x
|
||||
# 23| Type = [PlainCharType] char
|
||||
# 23| ValueCategory = prvalue
|
||||
# 23| getQualifier(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 23| Type = [VoidType] void
|
||||
# 23| ValueCategory = prvalue
|
||||
# 23| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 23| Type = [Class] ClassWithDestructor2
|
||||
# 23| ValueCategory = prvalue(load)
|
||||
# 23| getRightOperand(): [FunctionCall] call to get_x
|
||||
# 23| Type = [PlainCharType] char
|
||||
# 23| ValueCategory = prvalue
|
||||
# 23| getQualifier(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 23| Type = [VoidType] void
|
||||
# 23| ValueCategory = prvalue
|
||||
# 23| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 23| Type = [Class] ClassWithDestructor2
|
||||
# 23| ValueCategory = prvalue(load)
|
||||
# 23| getLeftOperand().getFullyConverted(): [CStyleCast] (int)...
|
||||
# 23| Conversion = [IntegralConversion] integral conversion
|
||||
# 23| Type = [IntType] int
|
||||
# 23| ValueCategory = prvalue
|
||||
# 23| getRightOperand().getFullyConverted(): [CStyleCast] (int)...
|
||||
# 23| Conversion = [IntegralConversion] integral conversion
|
||||
# 23| Type = [IntType] int
|
||||
# 23| ValueCategory = prvalue
|
||||
# 23| getExpr().getFullyConverted(): [CStyleCast] (char)...
|
||||
# 23| Conversion = [IntegralConversion] integral conversion
|
||||
# 23| Type = [PlainCharType] char
|
||||
# 23| ValueCategory = prvalue
|
||||
# 27| [FunctionTemplateInstantiation,TopLevelFunction] ClassWithDestructor2 returnValue<ClassWithDestructor2>()
|
||||
# 27| <params>:
|
||||
# 27| [TemplateFunction,TopLevelFunction] T returnValue<T>()
|
||||
# 27| <params>:
|
||||
# 29| [TopLevelFunction] void temp_test3()
|
||||
# 29| <params>:
|
||||
# 29| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 30| getStmt(0): [DeclStmt] declaration
|
||||
# 30| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rs
|
||||
# 30| Type = [LValueReferenceType] const ClassWithDestructor2 &
|
||||
# 30| getVariable().getInitializer(): [Initializer] initializer for rs
|
||||
# 30| getExpr(): [FunctionCall] call to returnValue
|
||||
# 30| Type = [Class] ClassWithDestructor2
|
||||
# 30| ValueCategory = prvalue
|
||||
# 30| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 30| Type = [LValueReferenceType] const ClassWithDestructor2 &
|
||||
# 30| ValueCategory = prvalue
|
||||
# 30| getExpr(): [CStyleCast] (const ClassWithDestructor2)...
|
||||
# 30| Conversion = [GlvalueConversion] glvalue conversion
|
||||
# 30| Type = [SpecifiedType] const ClassWithDestructor2
|
||||
# 30| ValueCategory = lvalue
|
||||
# 30| getExpr(): [TemporaryObjectExpr] temporary object
|
||||
# 30| Type = [Class] ClassWithDestructor2
|
||||
# 30| ValueCategory = lvalue
|
||||
# 31| getStmt(1): [ReturnStmt] return ...
|
||||
# 33| [TopLevelFunction] void temp_test4()
|
||||
# 33| <params>:
|
||||
# 33| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 34| getStmt(0): [DeclStmt] declaration
|
||||
# 34| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c
|
||||
# 34| Type = [Class] ClassWithDestructor2
|
||||
# 34| getVariable().getInitializer(): [Initializer] initializer for c
|
||||
# 34| getExpr(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 34| Type = [VoidType] void
|
||||
# 34| ValueCategory = prvalue
|
||||
# 35| getStmt(1): [DeclStmt] declaration
|
||||
# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rs2
|
||||
# 35| Type = [LValueReferenceType] const ClassWithDestructor2 &
|
||||
# 35| getVariable().getInitializer(): [Initializer] initializer for rs2
|
||||
# 35| getExpr(): [FunctionCall] call to returnValue
|
||||
# 35| Type = [Class] ClassWithDestructor2
|
||||
# 35| ValueCategory = prvalue
|
||||
# 35| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 35| Type = [LValueReferenceType] const ClassWithDestructor2 &
|
||||
# 35| ValueCategory = prvalue
|
||||
# 35| getExpr(): [CStyleCast] (const ClassWithDestructor2)...
|
||||
# 35| Conversion = [GlvalueConversion] glvalue conversion
|
||||
# 35| Type = [SpecifiedType] const ClassWithDestructor2
|
||||
# 35| ValueCategory = lvalue
|
||||
# 35| getExpr(): [TemporaryObjectExpr] temporary object
|
||||
# 35| Type = [Class] ClassWithDestructor2
|
||||
# 35| ValueCategory = lvalue
|
||||
# 36| getStmt(2): [ReturnStmt] return ...
|
||||
# 36| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2
|
||||
# 36| Type = [VoidType] void
|
||||
# 36| ValueCategory = prvalue
|
||||
# 36| getQualifier(): [VariableAccess] c
|
||||
# 36| Type = [Class] ClassWithDestructor2
|
||||
# 36| ValueCategory = lvalue
|
||||
# 38| [TopLevelFunction] void temp_test5(bool)
|
||||
# 38| <params>:
|
||||
# 38| getParameter(0): [Parameter] b
|
||||
# 38| Type = [BoolType] bool
|
||||
# 38| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 39| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 39| getExpr(): [ConditionalExpr] ... ? ... : ...
|
||||
# 39| Type = [Class] ClassWithDestructor2
|
||||
# 39| ValueCategory = prvalue
|
||||
# 39| getCondition(): [VariableAccess] b
|
||||
# 39| Type = [BoolType] bool
|
||||
# 39| ValueCategory = prvalue(load)
|
||||
# 39| getThen(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 39| Type = [VoidType] void
|
||||
# 39| ValueCategory = prvalue
|
||||
# 39| getElse(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 39| Type = [VoidType] void
|
||||
# 39| ValueCategory = prvalue
|
||||
# 39| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 39| Type = [Class] ClassWithDestructor2
|
||||
# 39| ValueCategory = prvalue(load)
|
||||
# 39| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 39| Type = [Class] ClassWithDestructor2
|
||||
# 39| ValueCategory = prvalue(load)
|
||||
# 39| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 39| Type = [Class] ClassWithDestructor2
|
||||
# 39| ValueCategory = prvalue
|
||||
# 40| getStmt(1): [ReturnStmt] return ...
|
||||
# 42| [TopLevelFunction] void temp_test6(bool)
|
||||
# 42| <params>:
|
||||
# 42| getParameter(0): [Parameter] b
|
||||
# 42| Type = [BoolType] bool
|
||||
# 42| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 43| getStmt(0): [DeclStmt] declaration
|
||||
# 43| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c
|
||||
# 43| Type = [Class] ClassWithDestructor2
|
||||
# 43| getVariable().getInitializer(): [Initializer] initializer for c
|
||||
# 43| getExpr(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 43| Type = [VoidType] void
|
||||
# 43| ValueCategory = prvalue
|
||||
# 44| getStmt(1): [IfStmt] if (...) ...
|
||||
# 44| getCondition(): [VariableAccess] b
|
||||
# 44| Type = [BoolType] bool
|
||||
# 44| ValueCategory = prvalue(load)
|
||||
# 44| getThen(): [BlockStmt] { ... }
|
||||
# 45| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 45| getExpr(): [ThrowExpr] throw ...
|
||||
# 45| Type = [Class] ClassWithConstructor
|
||||
# 45| ValueCategory = prvalue
|
||||
# 45| getExpr(): [ConstructorCall] call to ClassWithConstructor
|
||||
# 45| Type = [VoidType] void
|
||||
# 45| ValueCategory = prvalue
|
||||
# 45| getArgument(0): [CharLiteral] 120
|
||||
# 45| Type = [PlainCharType] char
|
||||
# 45| Value = [CharLiteral] 120
|
||||
# 45| ValueCategory = prvalue
|
||||
# 45| getArgument(1): [FunctionCall] call to get_x
|
||||
# 45| Type = [PlainCharType] char
|
||||
# 45| ValueCategory = prvalue
|
||||
# 45| getQualifier(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 45| Type = [VoidType] void
|
||||
# 45| ValueCategory = prvalue
|
||||
# 45| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 45| Type = [Class] ClassWithDestructor2
|
||||
# 45| ValueCategory = prvalue(load)
|
||||
# 47| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2
|
||||
# 47| Type = [VoidType] void
|
||||
# 47| ValueCategory = prvalue
|
||||
# 47| getQualifier(): [VariableAccess] c
|
||||
# 47| Type = [Class] ClassWithDestructor2
|
||||
# 47| ValueCategory = lvalue
|
||||
# 47| getStmt(2): [ReturnStmt] return ...
|
||||
# 47| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2
|
||||
# 47| Type = [VoidType] void
|
||||
# 47| ValueCategory = prvalue
|
||||
# 47| getQualifier(): [VariableAccess] c
|
||||
# 47| Type = [Class] ClassWithDestructor2
|
||||
# 47| ValueCategory = lvalue
|
||||
# 49| [TopLevelFunction] void temp_test7(bool)
|
||||
# 49| <params>:
|
||||
# 49| getParameter(0): [Parameter] b
|
||||
# 49| Type = [BoolType] bool
|
||||
# 49| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 50| getStmt(0): [DeclStmt] declaration
|
||||
# 50| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c
|
||||
# 50| Type = [Class] ClassWithDestructor2
|
||||
# 50| getVariable().getInitializer(): [Initializer] initializer for c
|
||||
# 50| getExpr(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 50| Type = [VoidType] void
|
||||
# 50| ValueCategory = prvalue
|
||||
# 51| getStmt(1): [ExprStmt] ExprStmt
|
||||
# 51| getExpr(): [ConditionalExpr] ... ? ... : ...
|
||||
# 51| Type = [Class] ClassWithDestructor2
|
||||
# 51| ValueCategory = prvalue(load)
|
||||
# 51| getCondition(): [VariableAccess] b
|
||||
# 51| Type = [BoolType] bool
|
||||
# 51| ValueCategory = prvalue(load)
|
||||
# 51| getThen(): [ThrowExpr] throw ...
|
||||
# 51| Type = [Class] ClassWithConstructor
|
||||
# 51| ValueCategory = prvalue
|
||||
# 51| getExpr(): [ConstructorCall] call to ClassWithConstructor
|
||||
# 51| Type = [VoidType] void
|
||||
# 51| ValueCategory = prvalue
|
||||
# 51| getArgument(0): [CharLiteral] 120
|
||||
# 51| Type = [PlainCharType] char
|
||||
# 51| Value = [CharLiteral] 120
|
||||
# 51| ValueCategory = prvalue
|
||||
# 51| getArgument(1): [FunctionCall] call to get_x
|
||||
# 51| Type = [PlainCharType] char
|
||||
# 51| ValueCategory = prvalue
|
||||
# 51| getQualifier(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 51| Type = [VoidType] void
|
||||
# 51| ValueCategory = prvalue
|
||||
# 51| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 51| Type = [Class] ClassWithDestructor2
|
||||
# 51| ValueCategory = prvalue(load)
|
||||
# 52| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2
|
||||
# 52| Type = [VoidType] void
|
||||
# 52| ValueCategory = prvalue
|
||||
# 52| getQualifier(): [VariableAccess] c
|
||||
# 52| Type = [Class] ClassWithDestructor2
|
||||
# 52| ValueCategory = lvalue
|
||||
# 51| getElse(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 51| Type = [VoidType] void
|
||||
# 51| ValueCategory = prvalue
|
||||
# 51| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 51| Type = [Class] ClassWithDestructor2
|
||||
# 51| ValueCategory = prvalue(load)
|
||||
# 51| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 51| Type = [Class] ClassWithDestructor2
|
||||
# 51| ValueCategory = prvalue
|
||||
# 52| getStmt(2): [ReturnStmt] return ...
|
||||
# 52| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2
|
||||
# 52| Type = [VoidType] void
|
||||
# 52| ValueCategory = prvalue
|
||||
# 52| getQualifier(): [VariableAccess] c
|
||||
# 52| Type = [Class] ClassWithDestructor2
|
||||
# 52| ValueCategory = lvalue
|
||||
# 54| [TopLevelFunction] void temp_test8(bool)
|
||||
# 54| <params>:
|
||||
# 54| getParameter(0): [Parameter] b
|
||||
# 54| Type = [BoolType] bool
|
||||
# 54| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 55| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 55| getExpr(): [ConditionalExpr] ... ? ... : ...
|
||||
# 55| Type = [Class] ClassWithDestructor2
|
||||
# 55| ValueCategory = prvalue(load)
|
||||
# 55| getCondition(): [VariableAccess] b
|
||||
# 55| Type = [BoolType] bool
|
||||
# 55| ValueCategory = prvalue(load)
|
||||
# 55| getThen(): [ThrowExpr] throw ...
|
||||
# 55| Type = [Class] ClassWithConstructor
|
||||
# 55| ValueCategory = prvalue
|
||||
# 55| getExpr(): [ConstructorCall] call to ClassWithConstructor
|
||||
# 55| Type = [VoidType] void
|
||||
# 55| ValueCategory = prvalue
|
||||
# 55| getArgument(0): [CharLiteral] 120
|
||||
# 55| Type = [PlainCharType] char
|
||||
# 55| Value = [CharLiteral] 120
|
||||
# 55| ValueCategory = prvalue
|
||||
# 55| getArgument(1): [FunctionCall] call to get_x
|
||||
# 55| Type = [PlainCharType] char
|
||||
# 55| ValueCategory = prvalue
|
||||
# 55| getQualifier(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 55| Type = [VoidType] void
|
||||
# 55| ValueCategory = prvalue
|
||||
# 55| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 55| Type = [Class] ClassWithDestructor2
|
||||
# 55| ValueCategory = prvalue(load)
|
||||
# 55| getElse(): [ConstructorCall] call to ClassWithDestructor2
|
||||
# 55| Type = [VoidType] void
|
||||
# 55| ValueCategory = prvalue
|
||||
# 55| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 55| Type = [Class] ClassWithDestructor2
|
||||
# 55| ValueCategory = prvalue(load)
|
||||
# 55| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 55| Type = [Class] ClassWithDestructor2
|
||||
# 55| ValueCategory = prvalue
|
||||
# 56| getStmt(1): [ReturnStmt] return ...
|
||||
ir.c:
|
||||
# 5| [TopLevelFunction] int getX(MyCoords*)
|
||||
# 5| <params>:
|
||||
|
||||
@@ -738,6 +738,499 @@ complex.c:
|
||||
# 58| v58_6(void) = AliasedUse : m58_3
|
||||
# 58| v58_7(void) = ExitFunction :
|
||||
|
||||
destructors_for_temps.cpp:
|
||||
# 9| void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&)
|
||||
# 9| Block 0
|
||||
# 9| v9_1(void) = EnterFunction :
|
||||
# 9| m9_2(unknown) = AliasedDefinition :
|
||||
# 9| m9_3(unknown) = InitializeNonLocal :
|
||||
# 9| m9_4(unknown) = Chi : total:m9_2, partial:m9_3
|
||||
# 9| r9_5(glval<unknown>) = VariableAddress[#this] :
|
||||
# 9| m9_6(glval<ClassWithConstructor>) = InitializeParameter[#this] : &:r9_5
|
||||
# 9| r9_7(glval<ClassWithConstructor>) = Load[#this] : &:r9_5, m9_6
|
||||
# 9| m9_8(ClassWithConstructor) = InitializeIndirection[#this] : &:r9_7
|
||||
#-----| r0_1(glval<ClassWithConstructor &&>) = VariableAddress[(unnamed parameter 0)] :
|
||||
#-----| m0_2(ClassWithConstructor &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1
|
||||
#-----| r0_3(ClassWithConstructor &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2
|
||||
#-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3
|
||||
# 9| v9_9(void) = NoOp :
|
||||
# 9| v9_10(void) = ReturnIndirection[#this] : &:r9_7, m9_8
|
||||
#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4
|
||||
# 9| v9_11(void) = ReturnVoid :
|
||||
# 9| v9_12(void) = AliasedUse : m9_3
|
||||
# 9| v9_13(void) = ExitFunction :
|
||||
|
||||
# 14| char temp_test()
|
||||
# 14| Block 0
|
||||
# 14| v14_1(void) = EnterFunction :
|
||||
# 14| m14_2(unknown) = AliasedDefinition :
|
||||
# 14| m14_3(unknown) = InitializeNonLocal :
|
||||
# 14| m14_4(unknown) = Chi : total:m14_2, partial:m14_3
|
||||
# 15| r15_1(glval<char>) = VariableAddress[x] :
|
||||
# 15| r15_2(glval<ClassWithDestructor2>) = VariableAddress[#temp15:14] :
|
||||
# 15| m15_3(ClassWithDestructor2) = Uninitialized[#temp15:14] : &:r15_2
|
||||
# 15| r15_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 15| v15_5(void) = Call[ClassWithDestructor2] : func:r15_4, this:r15_2
|
||||
# 15| m15_6(unknown) = ^CallSideEffect : ~m14_4
|
||||
# 15| m15_7(unknown) = Chi : total:m14_4, partial:m15_6
|
||||
# 15| m15_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r15_2
|
||||
# 15| m15_9(ClassWithDestructor2) = Chi : total:m15_3, partial:m15_8
|
||||
# 15| r15_10(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 15| r15_11(char) = Call[get_x] : func:r15_10, this:r15_2
|
||||
# 15| m15_12(unknown) = ^CallSideEffect : ~m15_7
|
||||
# 15| m15_13(unknown) = Chi : total:m15_7, partial:m15_12
|
||||
# 15| v15_14(void) = ^IndirectReadSideEffect[-1] : &:r15_2, m15_9
|
||||
# 15| m15_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r15_2
|
||||
# 15| m15_16(ClassWithDestructor2) = Chi : total:m15_9, partial:m15_15
|
||||
# 15| m15_17(char) = Store[x] : &:r15_1, r15_11
|
||||
# 16| r16_1(glval<ClassWithConstructor>) = VariableAddress[y] :
|
||||
# 16| m16_2(ClassWithConstructor) = Uninitialized[y] : &:r16_1
|
||||
# 16| r16_3(glval<unknown>) = FunctionAddress[ClassWithConstructor] :
|
||||
# 16| r16_4(char) = Constant[97] :
|
||||
# 16| r16_5(glval<ClassWithDestructor2>) = VariableAddress[#temp16:33] :
|
||||
# 16| m16_6(ClassWithDestructor2) = Uninitialized[#temp16:33] : &:r16_5
|
||||
# 16| r16_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 16| v16_8(void) = Call[ClassWithDestructor2] : func:r16_7, this:r16_5
|
||||
# 16| m16_9(unknown) = ^CallSideEffect : ~m15_13
|
||||
# 16| m16_10(unknown) = Chi : total:m15_13, partial:m16_9
|
||||
# 16| m16_11(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r16_5
|
||||
# 16| m16_12(ClassWithDestructor2) = Chi : total:m16_6, partial:m16_11
|
||||
# 16| r16_13(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 16| r16_14(char) = Call[get_x] : func:r16_13, this:r16_5
|
||||
# 16| m16_15(unknown) = ^CallSideEffect : ~m16_10
|
||||
# 16| m16_16(unknown) = Chi : total:m16_10, partial:m16_15
|
||||
# 16| v16_17(void) = ^IndirectReadSideEffect[-1] : &:r16_5, m16_12
|
||||
# 16| m16_18(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r16_5
|
||||
# 16| m16_19(ClassWithDestructor2) = Chi : total:m16_12, partial:m16_18
|
||||
# 16| v16_20(void) = Call[ClassWithConstructor] : func:r16_3, this:r16_1, 0:r16_4, 1:r16_14
|
||||
# 16| m16_21(unknown) = ^CallSideEffect : ~m16_16
|
||||
# 16| m16_22(unknown) = Chi : total:m16_16, partial:m16_21
|
||||
# 16| m16_23(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r16_1
|
||||
# 16| m16_24(ClassWithConstructor) = Chi : total:m16_2, partial:m16_23
|
||||
# 17| r17_1(glval<char>) = VariableAddress[#return] :
|
||||
# 17| r17_2(glval<ClassWithDestructor2>) = VariableAddress[#temp17:12] :
|
||||
# 17| m17_3(ClassWithDestructor2) = Uninitialized[#temp17:12] : &:r17_2
|
||||
# 17| r17_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 17| v17_5(void) = Call[ClassWithDestructor2] : func:r17_4, this:r17_2
|
||||
# 17| m17_6(unknown) = ^CallSideEffect : ~m16_22
|
||||
# 17| m17_7(unknown) = Chi : total:m16_22, partial:m17_6
|
||||
# 17| m17_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r17_2
|
||||
# 17| m17_9(ClassWithDestructor2) = Chi : total:m17_3, partial:m17_8
|
||||
# 17| r17_10(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 17| r17_11(char) = Call[get_x] : func:r17_10, this:r17_2
|
||||
# 17| m17_12(unknown) = ^CallSideEffect : ~m17_7
|
||||
# 17| m17_13(unknown) = Chi : total:m17_7, partial:m17_12
|
||||
# 17| v17_14(void) = ^IndirectReadSideEffect[-1] : &:r17_2, m17_9
|
||||
# 17| m17_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r17_2
|
||||
# 17| m17_16(ClassWithDestructor2) = Chi : total:m17_9, partial:m17_15
|
||||
# 17| m17_17(char) = Store[#return] : &:r17_1, r17_11
|
||||
# 14| r14_5(glval<char>) = VariableAddress[#return] :
|
||||
# 14| v14_6(void) = ReturnValue : &:r14_5, m17_17
|
||||
# 14| v14_7(void) = AliasedUse : ~m17_13
|
||||
# 14| v14_8(void) = ExitFunction :
|
||||
|
||||
# 21| char temp_test2()
|
||||
# 21| Block 0
|
||||
# 21| v21_1(void) = EnterFunction :
|
||||
# 21| m21_2(unknown) = AliasedDefinition :
|
||||
# 21| m21_3(unknown) = InitializeNonLocal :
|
||||
# 21| m21_4(unknown) = Chi : total:m21_2, partial:m21_3
|
||||
# 22| r22_1(glval<unknown>) = FunctionAddress[operator new] :
|
||||
# 22| r22_2(unsigned long) = Constant[1] :
|
||||
# 22| r22_3(void *) = Call[operator new] : func:r22_1, 0:r22_2
|
||||
# 22| m22_4(unknown) = ^CallSideEffect : ~m21_4
|
||||
# 22| m22_5(unknown) = Chi : total:m21_4, partial:m22_4
|
||||
# 22| m22_6(unknown) = ^InitializeDynamicAllocation : &:r22_3
|
||||
# 22| r22_7(ClassWithDestructor2 *) = Convert : r22_3
|
||||
# 22| r22_8(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 22| v22_9(void) = Call[ClassWithDestructor2] : func:r22_8, this:r22_7
|
||||
# 22| m22_10(unknown) = ^CallSideEffect : ~m22_5
|
||||
# 22| m22_11(unknown) = Chi : total:m22_5, partial:m22_10
|
||||
# 22| m22_12(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r22_7
|
||||
# 22| m22_13(unknown) = Chi : total:m22_6, partial:m22_12
|
||||
# 23| r23_1(glval<char>) = VariableAddress[#return] :
|
||||
# 23| r23_2(glval<ClassWithDestructor2>) = VariableAddress[#temp23:12] :
|
||||
# 23| m23_3(ClassWithDestructor2) = Uninitialized[#temp23:12] : &:r23_2
|
||||
# 23| r23_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 23| v23_5(void) = Call[ClassWithDestructor2] : func:r23_4, this:r23_2
|
||||
# 23| m23_6(unknown) = ^CallSideEffect : ~m22_11
|
||||
# 23| m23_7(unknown) = Chi : total:m22_11, partial:m23_6
|
||||
# 23| m23_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_2
|
||||
# 23| m23_9(ClassWithDestructor2) = Chi : total:m23_3, partial:m23_8
|
||||
# 23| r23_10(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 23| r23_11(char) = Call[get_x] : func:r23_10, this:r23_2
|
||||
# 23| m23_12(unknown) = ^CallSideEffect : ~m23_7
|
||||
# 23| m23_13(unknown) = Chi : total:m23_7, partial:m23_12
|
||||
# 23| v23_14(void) = ^IndirectReadSideEffect[-1] : &:r23_2, m23_9
|
||||
# 23| m23_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_2
|
||||
# 23| m23_16(ClassWithDestructor2) = Chi : total:m23_9, partial:m23_15
|
||||
# 23| r23_17(int) = Convert : r23_11
|
||||
# 23| r23_18(glval<ClassWithDestructor2>) = VariableAddress[#temp23:45] :
|
||||
# 23| m23_19(ClassWithDestructor2) = Uninitialized[#temp23:45] : &:r23_18
|
||||
# 23| r23_20(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 23| v23_21(void) = Call[ClassWithDestructor2] : func:r23_20, this:r23_18
|
||||
# 23| m23_22(unknown) = ^CallSideEffect : ~m23_13
|
||||
# 23| m23_23(unknown) = Chi : total:m23_13, partial:m23_22
|
||||
# 23| m23_24(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_18
|
||||
# 23| m23_25(ClassWithDestructor2) = Chi : total:m23_19, partial:m23_24
|
||||
# 23| r23_26(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 23| r23_27(char) = Call[get_x] : func:r23_26, this:r23_18
|
||||
# 23| m23_28(unknown) = ^CallSideEffect : ~m23_23
|
||||
# 23| m23_29(unknown) = Chi : total:m23_23, partial:m23_28
|
||||
# 23| v23_30(void) = ^IndirectReadSideEffect[-1] : &:r23_18, m23_25
|
||||
# 23| m23_31(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_18
|
||||
# 23| m23_32(ClassWithDestructor2) = Chi : total:m23_25, partial:m23_31
|
||||
# 23| r23_33(int) = Convert : r23_27
|
||||
# 23| r23_34(int) = Add : r23_17, r23_33
|
||||
# 23| r23_35(char) = Convert : r23_34
|
||||
# 23| m23_36(char) = Store[#return] : &:r23_1, r23_35
|
||||
# 21| r21_5(glval<char>) = VariableAddress[#return] :
|
||||
# 21| v21_6(void) = ReturnValue : &:r21_5, m23_36
|
||||
# 21| v21_7(void) = AliasedUse : ~m23_29
|
||||
# 21| v21_8(void) = ExitFunction :
|
||||
|
||||
# 29| void temp_test3()
|
||||
# 29| Block 0
|
||||
# 29| v29_1(void) = EnterFunction :
|
||||
# 29| m29_2(unknown) = AliasedDefinition :
|
||||
# 29| m29_3(unknown) = InitializeNonLocal :
|
||||
# 29| m29_4(unknown) = Chi : total:m29_2, partial:m29_3
|
||||
# 30| r30_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs] :
|
||||
# 30| r30_2(glval<ClassWithDestructor2>) = VariableAddress[#temp30:38] :
|
||||
# 30| r30_3(glval<unknown>) = FunctionAddress[returnValue] :
|
||||
# 30| r30_4(ClassWithDestructor2) = Call[returnValue] : func:r30_3
|
||||
# 30| m30_5(unknown) = ^CallSideEffect : ~m29_4
|
||||
# 30| m30_6(unknown) = Chi : total:m29_4, partial:m30_5
|
||||
# 30| m30_7(ClassWithDestructor2) = Store[#temp30:38] : &:r30_2, r30_4
|
||||
# 30| r30_8(glval<ClassWithDestructor2>) = Convert : r30_2
|
||||
# 30| r30_9(ClassWithDestructor2 &) = CopyValue : r30_8
|
||||
# 30| m30_10(ClassWithDestructor2 &) = Store[rs] : &:r30_1, r30_9
|
||||
# 31| v31_1(void) = NoOp :
|
||||
# 29| v29_5(void) = ReturnVoid :
|
||||
# 29| v29_6(void) = AliasedUse : ~m30_6
|
||||
# 29| v29_7(void) = ExitFunction :
|
||||
|
||||
# 33| void temp_test4()
|
||||
# 33| Block 0
|
||||
# 33| v33_1(void) = EnterFunction :
|
||||
# 33| m33_2(unknown) = AliasedDefinition :
|
||||
# 33| m33_3(unknown) = InitializeNonLocal :
|
||||
# 33| m33_4(unknown) = Chi : total:m33_2, partial:m33_3
|
||||
# 34| r34_1(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 34| m34_2(ClassWithDestructor2) = Uninitialized[c] : &:r34_1
|
||||
# 34| r34_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 34| v34_4(void) = Call[ClassWithDestructor2] : func:r34_3, this:r34_1
|
||||
# 34| m34_5(unknown) = ^CallSideEffect : ~m33_4
|
||||
# 34| m34_6(unknown) = Chi : total:m33_4, partial:m34_5
|
||||
# 34| m34_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r34_1
|
||||
# 34| m34_8(ClassWithDestructor2) = Chi : total:m34_2, partial:m34_7
|
||||
# 35| r35_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs2] :
|
||||
# 35| r35_2(glval<ClassWithDestructor2>) = VariableAddress[#temp35:39] :
|
||||
# 35| r35_3(glval<unknown>) = FunctionAddress[returnValue] :
|
||||
# 35| r35_4(ClassWithDestructor2) = Call[returnValue] : func:r35_3
|
||||
# 35| m35_5(unknown) = ^CallSideEffect : ~m34_6
|
||||
# 35| m35_6(unknown) = Chi : total:m34_6, partial:m35_5
|
||||
# 35| m35_7(ClassWithDestructor2) = Store[#temp35:39] : &:r35_2, r35_4
|
||||
# 35| r35_8(glval<ClassWithDestructor2>) = Convert : r35_2
|
||||
# 35| r35_9(ClassWithDestructor2 &) = CopyValue : r35_8
|
||||
# 35| m35_10(ClassWithDestructor2 &) = Store[rs2] : &:r35_1, r35_9
|
||||
# 36| v36_1(void) = NoOp :
|
||||
# 36| r36_2(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 36| r36_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] :
|
||||
# 36| v36_4(void) = Call[~ClassWithDestructor2] : func:r36_3, this:r36_2
|
||||
# 36| m36_5(unknown) = ^CallSideEffect : ~m35_6
|
||||
# 36| m36_6(unknown) = Chi : total:m35_6, partial:m36_5
|
||||
# 36| v36_7(void) = ^IndirectReadSideEffect[-1] : &:r36_2, m34_8
|
||||
# 36| m36_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r36_2
|
||||
# 36| m36_9(ClassWithDestructor2) = Chi : total:m34_8, partial:m36_8
|
||||
# 33| v33_5(void) = ReturnVoid :
|
||||
# 33| v33_6(void) = AliasedUse : ~m36_6
|
||||
# 33| v33_7(void) = ExitFunction :
|
||||
|
||||
# 38| void temp_test5(bool)
|
||||
# 38| Block 0
|
||||
# 38| v38_1(void) = EnterFunction :
|
||||
# 38| m38_2(unknown) = AliasedDefinition :
|
||||
# 38| m38_3(unknown) = InitializeNonLocal :
|
||||
# 38| m38_4(unknown) = Chi : total:m38_2, partial:m38_3
|
||||
# 38| r38_5(glval<bool>) = VariableAddress[b] :
|
||||
# 38| m38_6(bool) = InitializeParameter[b] : &:r38_5
|
||||
# 39| r39_1(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] :
|
||||
# 39| r39_2(glval<bool>) = VariableAddress[b] :
|
||||
# 39| r39_3(bool) = Load[b] : &:r39_2, m38_6
|
||||
# 39| v39_4(void) = ConditionalBranch : r39_3
|
||||
#-----| False -> Block 3
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 39| Block 1
|
||||
# 39| m39_5(unknown) = Phi : from 2:~m39_15, from 3:~m39_26
|
||||
# 39| m39_6(ClassWithDestructor2) = Phi : from 2:m39_20, from 3:m39_31
|
||||
# 39| r39_7(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] :
|
||||
# 39| r39_8(ClassWithDestructor2) = Load[#temp39:3] : &:r39_7, m39_6
|
||||
# 39| m39_9(ClassWithDestructor2) = Store[#temp39:3] : &:r39_1, r39_8
|
||||
# 40| v40_1(void) = NoOp :
|
||||
# 38| v38_7(void) = ReturnVoid :
|
||||
# 38| v38_8(void) = AliasedUse : ~m39_5
|
||||
# 38| v38_9(void) = ExitFunction :
|
||||
|
||||
# 39| Block 2
|
||||
# 39| r39_10(glval<ClassWithDestructor2>) = VariableAddress[#temp39:7] :
|
||||
# 39| m39_11(ClassWithDestructor2) = Uninitialized[#temp39:7] : &:r39_10
|
||||
# 39| r39_12(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 39| v39_13(void) = Call[ClassWithDestructor2] : func:r39_12, this:r39_10
|
||||
# 39| m39_14(unknown) = ^CallSideEffect : ~m38_4
|
||||
# 39| m39_15(unknown) = Chi : total:m38_4, partial:m39_14
|
||||
# 39| m39_16(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r39_10
|
||||
# 39| m39_17(ClassWithDestructor2) = Chi : total:m39_11, partial:m39_16
|
||||
# 39| r39_18(ClassWithDestructor2) = Load[#temp39:7] : &:r39_10, m39_17
|
||||
# 39| r39_19(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] :
|
||||
# 39| m39_20(ClassWithDestructor2) = Store[#temp39:3] : &:r39_19, r39_18
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 39| Block 3
|
||||
# 39| r39_21(glval<ClassWithDestructor2>) = VariableAddress[#temp39:32] :
|
||||
# 39| m39_22(ClassWithDestructor2) = Uninitialized[#temp39:32] : &:r39_21
|
||||
# 39| r39_23(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 39| v39_24(void) = Call[ClassWithDestructor2] : func:r39_23, this:r39_21
|
||||
# 39| m39_25(unknown) = ^CallSideEffect : ~m38_4
|
||||
# 39| m39_26(unknown) = Chi : total:m38_4, partial:m39_25
|
||||
# 39| m39_27(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r39_21
|
||||
# 39| m39_28(ClassWithDestructor2) = Chi : total:m39_22, partial:m39_27
|
||||
# 39| r39_29(ClassWithDestructor2) = Load[#temp39:32] : &:r39_21, m39_28
|
||||
# 39| r39_30(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] :
|
||||
# 39| m39_31(ClassWithDestructor2) = Store[#temp39:3] : &:r39_30, r39_29
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 42| void temp_test6(bool)
|
||||
# 42| Block 0
|
||||
# 42| v42_1(void) = EnterFunction :
|
||||
# 42| m42_2(unknown) = AliasedDefinition :
|
||||
# 42| m42_3(unknown) = InitializeNonLocal :
|
||||
# 42| m42_4(unknown) = Chi : total:m42_2, partial:m42_3
|
||||
# 42| r42_5(glval<bool>) = VariableAddress[b] :
|
||||
# 42| m42_6(bool) = InitializeParameter[b] : &:r42_5
|
||||
# 43| r43_1(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 43| m43_2(ClassWithDestructor2) = Uninitialized[c] : &:r43_1
|
||||
# 43| r43_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 43| v43_4(void) = Call[ClassWithDestructor2] : func:r43_3, this:r43_1
|
||||
# 43| m43_5(unknown) = ^CallSideEffect : ~m42_4
|
||||
# 43| m43_6(unknown) = Chi : total:m42_4, partial:m43_5
|
||||
# 43| m43_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r43_1
|
||||
# 43| m43_8(ClassWithDestructor2) = Chi : total:m43_2, partial:m43_7
|
||||
# 44| r44_1(glval<bool>) = VariableAddress[b] :
|
||||
# 44| r44_2(bool) = Load[b] : &:r44_1, m42_6
|
||||
# 44| v44_3(void) = ConditionalBranch : r44_2
|
||||
#-----| False -> Block 4
|
||||
#-----| True -> Block 3
|
||||
|
||||
# 42| Block 1
|
||||
# 42| m42_7(unknown) = Phi : from 2:~m45_22, from 4:~m47_6
|
||||
# 42| v42_8(void) = AliasedUse : ~m42_7
|
||||
# 42| v42_9(void) = ExitFunction :
|
||||
|
||||
# 42| Block 2
|
||||
# 42| v42_10(void) = Unwind :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 45| Block 3
|
||||
# 45| r45_1(glval<ClassWithConstructor>) = VariableAddress[#throw45:7] :
|
||||
# 45| m45_2(ClassWithConstructor) = Uninitialized[#throw45:7] : &:r45_1
|
||||
# 45| r45_3(glval<unknown>) = FunctionAddress[ClassWithConstructor] :
|
||||
# 45| r45_4(char) = Constant[120] :
|
||||
# 45| r45_5(glval<ClassWithDestructor2>) = VariableAddress[#temp45:39] :
|
||||
# 45| m45_6(ClassWithDestructor2) = Uninitialized[#temp45:39] : &:r45_5
|
||||
# 45| r45_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 45| v45_8(void) = Call[ClassWithDestructor2] : func:r45_7, this:r45_5
|
||||
# 45| m45_9(unknown) = ^CallSideEffect : ~m43_6
|
||||
# 45| m45_10(unknown) = Chi : total:m43_6, partial:m45_9
|
||||
# 45| m45_11(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r45_5
|
||||
# 45| m45_12(ClassWithDestructor2) = Chi : total:m45_6, partial:m45_11
|
||||
# 45| r45_13(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 45| r45_14(char) = Call[get_x] : func:r45_13, this:r45_5
|
||||
# 45| m45_15(unknown) = ^CallSideEffect : ~m45_10
|
||||
# 45| m45_16(unknown) = Chi : total:m45_10, partial:m45_15
|
||||
# 45| v45_17(void) = ^IndirectReadSideEffect[-1] : &:r45_5, m45_12
|
||||
# 45| m45_18(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r45_5
|
||||
# 45| m45_19(ClassWithDestructor2) = Chi : total:m45_12, partial:m45_18
|
||||
# 45| v45_20(void) = Call[ClassWithConstructor] : func:r45_3, this:r45_1, 0:r45_4, 1:r45_14
|
||||
# 45| m45_21(unknown) = ^CallSideEffect : ~m45_16
|
||||
# 45| m45_22(unknown) = Chi : total:m45_16, partial:m45_21
|
||||
# 45| m45_23(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r45_1
|
||||
# 45| m45_24(ClassWithConstructor) = Chi : total:m45_2, partial:m45_23
|
||||
# 45| v45_25(void) = ThrowValue : &:r45_1, m45_24
|
||||
#-----| Exception -> Block 2
|
||||
|
||||
# 47| Block 4
|
||||
# 47| v47_1(void) = NoOp :
|
||||
# 47| r47_2(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 47| r47_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] :
|
||||
# 47| v47_4(void) = Call[~ClassWithDestructor2] : func:r47_3, this:r47_2
|
||||
# 47| m47_5(unknown) = ^CallSideEffect : ~m43_6
|
||||
# 47| m47_6(unknown) = Chi : total:m43_6, partial:m47_5
|
||||
# 47| v47_7(void) = ^IndirectReadSideEffect[-1] : &:r47_2, m43_8
|
||||
# 47| m47_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r47_2
|
||||
# 47| m47_9(ClassWithDestructor2) = Chi : total:m43_8, partial:m47_8
|
||||
# 42| v42_11(void) = ReturnVoid :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 49| void temp_test7(bool)
|
||||
# 49| Block 0
|
||||
# 49| v49_1(void) = EnterFunction :
|
||||
# 49| m49_2(unknown) = AliasedDefinition :
|
||||
# 49| m49_3(unknown) = InitializeNonLocal :
|
||||
# 49| m49_4(unknown) = Chi : total:m49_2, partial:m49_3
|
||||
# 49| r49_5(glval<bool>) = VariableAddress[b] :
|
||||
# 49| m49_6(bool) = InitializeParameter[b] : &:r49_5
|
||||
# 50| r50_1(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 50| m50_2(ClassWithDestructor2) = Uninitialized[c] : &:r50_1
|
||||
# 50| r50_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 50| v50_4(void) = Call[ClassWithDestructor2] : func:r50_3, this:r50_1
|
||||
# 50| m50_5(unknown) = ^CallSideEffect : ~m49_4
|
||||
# 50| m50_6(unknown) = Chi : total:m49_4, partial:m50_5
|
||||
# 50| m50_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r50_1
|
||||
# 50| m50_8(ClassWithDestructor2) = Chi : total:m50_2, partial:m50_7
|
||||
# 51| r51_1(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] :
|
||||
# 51| r51_2(glval<bool>) = VariableAddress[b] :
|
||||
# 51| r51_3(bool) = Load[b] : &:r51_2, m49_6
|
||||
# 51| v51_4(void) = ConditionalBranch : r51_3
|
||||
#-----| False -> Block 4
|
||||
#-----| True -> Block 3
|
||||
|
||||
# 49| Block 1
|
||||
# 49| m49_7(unknown) = Phi : from 2:~m51_26, from 4:~m52_6
|
||||
# 49| v49_8(void) = AliasedUse : ~m49_7
|
||||
# 49| v49_9(void) = ExitFunction :
|
||||
|
||||
# 49| Block 2
|
||||
# 49| v49_10(void) = Unwind :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 51| Block 3
|
||||
# 51| r51_5(glval<ClassWithConstructor>) = VariableAddress[#throw51:9] :
|
||||
# 51| m51_6(ClassWithConstructor) = Uninitialized[#throw51:9] : &:r51_5
|
||||
# 51| r51_7(glval<unknown>) = FunctionAddress[ClassWithConstructor] :
|
||||
# 51| r51_8(char) = Constant[120] :
|
||||
# 51| r51_9(glval<ClassWithDestructor2>) = VariableAddress[#temp51:41] :
|
||||
# 51| m51_10(ClassWithDestructor2) = Uninitialized[#temp51:41] : &:r51_9
|
||||
# 51| r51_11(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 51| v51_12(void) = Call[ClassWithDestructor2] : func:r51_11, this:r51_9
|
||||
# 51| m51_13(unknown) = ^CallSideEffect : ~m50_6
|
||||
# 51| m51_14(unknown) = Chi : total:m50_6, partial:m51_13
|
||||
# 51| m51_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_9
|
||||
# 51| m51_16(ClassWithDestructor2) = Chi : total:m51_10, partial:m51_15
|
||||
# 51| r51_17(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 51| r51_18(char) = Call[get_x] : func:r51_17, this:r51_9
|
||||
# 51| m51_19(unknown) = ^CallSideEffect : ~m51_14
|
||||
# 51| m51_20(unknown) = Chi : total:m51_14, partial:m51_19
|
||||
# 51| v51_21(void) = ^IndirectReadSideEffect[-1] : &:r51_9, m51_16
|
||||
# 51| m51_22(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_9
|
||||
# 51| m51_23(ClassWithDestructor2) = Chi : total:m51_16, partial:m51_22
|
||||
# 51| v51_24(void) = Call[ClassWithConstructor] : func:r51_7, this:r51_5, 0:r51_8, 1:r51_18
|
||||
# 51| m51_25(unknown) = ^CallSideEffect : ~m51_20
|
||||
# 51| m51_26(unknown) = Chi : total:m51_20, partial:m51_25
|
||||
# 51| m51_27(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r51_5
|
||||
# 51| m51_28(ClassWithConstructor) = Chi : total:m51_6, partial:m51_27
|
||||
# 51| v51_29(void) = ThrowValue : &:r51_5, m51_28
|
||||
#-----| Exception -> Block 2
|
||||
|
||||
# 51| Block 4
|
||||
# 51| r51_30(glval<ClassWithDestructor2>) = VariableAddress[#temp51:75] :
|
||||
# 51| m51_31(ClassWithDestructor2) = Uninitialized[#temp51:75] : &:r51_30
|
||||
# 51| r51_32(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 51| v51_33(void) = Call[ClassWithDestructor2] : func:r51_32, this:r51_30
|
||||
# 51| m51_34(unknown) = ^CallSideEffect : ~m50_6
|
||||
# 51| m51_35(unknown) = Chi : total:m50_6, partial:m51_34
|
||||
# 51| m51_36(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_30
|
||||
# 51| m51_37(ClassWithDestructor2) = Chi : total:m51_31, partial:m51_36
|
||||
# 51| r51_38(ClassWithDestructor2) = Load[#temp51:75] : &:r51_30, m51_37
|
||||
# 51| r51_39(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] :
|
||||
# 51| m51_40(ClassWithDestructor2) = Store[#temp51:5] : &:r51_39, r51_38
|
||||
# 51| r51_41(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] :
|
||||
# 51| r51_42(ClassWithDestructor2) = Load[#temp51:5] : &:r51_41, m51_40
|
||||
# 51| m51_43(ClassWithDestructor2) = Store[#temp51:5] : &:r51_1, r51_42
|
||||
# 52| v52_1(void) = NoOp :
|
||||
# 52| r52_2(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 52| r52_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] :
|
||||
# 52| v52_4(void) = Call[~ClassWithDestructor2] : func:r52_3, this:r52_2
|
||||
# 52| m52_5(unknown) = ^CallSideEffect : ~m51_35
|
||||
# 52| m52_6(unknown) = Chi : total:m51_35, partial:m52_5
|
||||
# 52| v52_7(void) = ^IndirectReadSideEffect[-1] : &:r52_2, m50_8
|
||||
# 52| m52_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r52_2
|
||||
# 52| m52_9(ClassWithDestructor2) = Chi : total:m50_8, partial:m52_8
|
||||
# 49| v49_11(void) = ReturnVoid :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 54| void temp_test8(bool)
|
||||
# 54| Block 0
|
||||
# 54| v54_1(void) = EnterFunction :
|
||||
# 54| m54_2(unknown) = AliasedDefinition :
|
||||
# 54| m54_3(unknown) = InitializeNonLocal :
|
||||
# 54| m54_4(unknown) = Chi : total:m54_2, partial:m54_3
|
||||
# 54| r54_5(glval<bool>) = VariableAddress[b] :
|
||||
# 54| m54_6(bool) = InitializeParameter[b] : &:r54_5
|
||||
# 55| r55_1(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] :
|
||||
# 55| r55_2(glval<bool>) = VariableAddress[b] :
|
||||
# 55| r55_3(bool) = Load[b] : &:r55_2, m54_6
|
||||
# 55| v55_4(void) = ConditionalBranch : r55_3
|
||||
#-----| False -> Block 4
|
||||
#-----| True -> Block 3
|
||||
|
||||
# 54| Block 1
|
||||
# 54| m54_7(unknown) = Phi : from 2:~m55_26, from 4:~m55_35
|
||||
# 54| v54_8(void) = AliasedUse : ~m54_7
|
||||
# 54| v54_9(void) = ExitFunction :
|
||||
|
||||
# 54| Block 2
|
||||
# 54| v54_10(void) = Unwind :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 55| Block 3
|
||||
# 55| r55_5(glval<ClassWithConstructor>) = VariableAddress[#throw55:9] :
|
||||
# 55| m55_6(ClassWithConstructor) = Uninitialized[#throw55:9] : &:r55_5
|
||||
# 55| r55_7(glval<unknown>) = FunctionAddress[ClassWithConstructor] :
|
||||
# 55| r55_8(char) = Constant[120] :
|
||||
# 55| r55_9(glval<ClassWithDestructor2>) = VariableAddress[#temp55:41] :
|
||||
# 55| m55_10(ClassWithDestructor2) = Uninitialized[#temp55:41] : &:r55_9
|
||||
# 55| r55_11(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 55| v55_12(void) = Call[ClassWithDestructor2] : func:r55_11, this:r55_9
|
||||
# 55| m55_13(unknown) = ^CallSideEffect : ~m54_4
|
||||
# 55| m55_14(unknown) = Chi : total:m54_4, partial:m55_13
|
||||
# 55| m55_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_9
|
||||
# 55| m55_16(ClassWithDestructor2) = Chi : total:m55_10, partial:m55_15
|
||||
# 55| r55_17(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 55| r55_18(char) = Call[get_x] : func:r55_17, this:r55_9
|
||||
# 55| m55_19(unknown) = ^CallSideEffect : ~m55_14
|
||||
# 55| m55_20(unknown) = Chi : total:m55_14, partial:m55_19
|
||||
# 55| v55_21(void) = ^IndirectReadSideEffect[-1] : &:r55_9, m55_16
|
||||
# 55| m55_22(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_9
|
||||
# 55| m55_23(ClassWithDestructor2) = Chi : total:m55_16, partial:m55_22
|
||||
# 55| v55_24(void) = Call[ClassWithConstructor] : func:r55_7, this:r55_5, 0:r55_8, 1:r55_18
|
||||
# 55| m55_25(unknown) = ^CallSideEffect : ~m55_20
|
||||
# 55| m55_26(unknown) = Chi : total:m55_20, partial:m55_25
|
||||
# 55| m55_27(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r55_5
|
||||
# 55| m55_28(ClassWithConstructor) = Chi : total:m55_6, partial:m55_27
|
||||
# 55| v55_29(void) = ThrowValue : &:r55_5, m55_28
|
||||
#-----| Exception -> Block 2
|
||||
|
||||
# 55| Block 4
|
||||
# 55| r55_30(glval<ClassWithDestructor2>) = VariableAddress[#temp55:75] :
|
||||
# 55| m55_31(ClassWithDestructor2) = Uninitialized[#temp55:75] : &:r55_30
|
||||
# 55| r55_32(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 55| v55_33(void) = Call[ClassWithDestructor2] : func:r55_32, this:r55_30
|
||||
# 55| m55_34(unknown) = ^CallSideEffect : ~m54_4
|
||||
# 55| m55_35(unknown) = Chi : total:m54_4, partial:m55_34
|
||||
# 55| m55_36(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_30
|
||||
# 55| m55_37(ClassWithDestructor2) = Chi : total:m55_31, partial:m55_36
|
||||
# 55| r55_38(ClassWithDestructor2) = Load[#temp55:75] : &:r55_30, m55_37
|
||||
# 55| r55_39(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] :
|
||||
# 55| m55_40(ClassWithDestructor2) = Store[#temp55:5] : &:r55_39, r55_38
|
||||
# 55| r55_41(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] :
|
||||
# 55| r55_42(ClassWithDestructor2) = Load[#temp55:5] : &:r55_41, m55_40
|
||||
# 55| m55_43(ClassWithDestructor2) = Store[#temp55:5] : &:r55_1, r55_42
|
||||
# 56| v56_1(void) = NoOp :
|
||||
# 54| v54_11(void) = ReturnVoid :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
ir.c:
|
||||
# 7| void MyCoordsTest(int)
|
||||
# 7| Block 0
|
||||
|
||||
56
cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp
Normal file
56
cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp
Normal file
@@ -0,0 +1,56 @@
|
||||
class ClassWithDestructor2 {
|
||||
public:
|
||||
ClassWithDestructor2();
|
||||
~ClassWithDestructor2();
|
||||
|
||||
char get_x();
|
||||
};
|
||||
|
||||
class ClassWithConstructor {
|
||||
public:
|
||||
ClassWithConstructor(char x, char y);
|
||||
};
|
||||
|
||||
char temp_test() {
|
||||
char x = ClassWithDestructor2().get_x();
|
||||
ClassWithConstructor y('a', ClassWithDestructor2().get_x());
|
||||
return ClassWithDestructor2().get_x();
|
||||
}
|
||||
|
||||
|
||||
char temp_test2() {
|
||||
new ClassWithDestructor2();
|
||||
return ClassWithDestructor2().get_x() + ClassWithDestructor2().get_x();
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T returnValue();
|
||||
|
||||
void temp_test3() {
|
||||
const ClassWithDestructor2& rs = returnValue<ClassWithDestructor2>();
|
||||
}
|
||||
|
||||
void temp_test4() {
|
||||
ClassWithDestructor2 c;
|
||||
const ClassWithDestructor2& rs2 = returnValue<ClassWithDestructor2>();
|
||||
}
|
||||
|
||||
void temp_test5(bool b) {
|
||||
b ? ClassWithDestructor2() : ClassWithDestructor2();
|
||||
}
|
||||
|
||||
void temp_test6(bool b) {
|
||||
ClassWithDestructor2 c;
|
||||
if (b) {
|
||||
throw ClassWithConstructor('x', ClassWithDestructor2().get_x());
|
||||
}
|
||||
}
|
||||
|
||||
void temp_test7(bool b) {
|
||||
ClassWithDestructor2 c;
|
||||
b ? throw ClassWithConstructor('x', ClassWithDestructor2().get_x()) : ClassWithDestructor2();
|
||||
}
|
||||
|
||||
void temp_test8(bool b) {
|
||||
b ? throw ClassWithConstructor('x', ClassWithDestructor2().get_x()) : ClassWithDestructor2();
|
||||
}
|
||||
@@ -652,6 +652,440 @@
|
||||
| complex.c:144:8:144:10 | Load | m133_5 |
|
||||
| complex.c:144:8:144:10 | StoreValue | r144_3 |
|
||||
| complex.c:144:8:144:10 | Unary | r144_2 |
|
||||
| destructors_for_temps.cpp:9:7:9:7 | Address | &:r9_5 |
|
||||
| destructors_for_temps.cpp:9:7:9:7 | Address | &:r9_5 |
|
||||
| destructors_for_temps.cpp:9:7:9:7 | Address | &:r9_7 |
|
||||
| destructors_for_temps.cpp:9:7:9:7 | Address | &:r9_7 |
|
||||
| destructors_for_temps.cpp:9:7:9:7 | ChiPartial | partial:m9_3 |
|
||||
| destructors_for_temps.cpp:9:7:9:7 | ChiTotal | total:m9_2 |
|
||||
| destructors_for_temps.cpp:9:7:9:7 | Load | m9_6 |
|
||||
| destructors_for_temps.cpp:9:7:9:7 | SideEffect | m9_3 |
|
||||
| destructors_for_temps.cpp:9:7:9:7 | SideEffect | m9_8 |
|
||||
| destructors_for_temps.cpp:14:6:14:14 | Address | &:r14_5 |
|
||||
| destructors_for_temps.cpp:14:6:14:14 | ChiPartial | partial:m14_3 |
|
||||
| destructors_for_temps.cpp:14:6:14:14 | ChiTotal | total:m14_2 |
|
||||
| destructors_for_temps.cpp:14:6:14:14 | Load | m17_17 |
|
||||
| destructors_for_temps.cpp:14:6:14:14 | SideEffect | ~m17_13 |
|
||||
| destructors_for_temps.cpp:15:10:15:10 | Address | &:r15_1 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | Address | &:r15_2 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | Address | &:r15_2 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | Address | &:r15_2 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | Address | &:r15_2 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | Arg(this) | this:r15_2 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | Arg(this) | this:r15_2 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | CallTarget | func:r15_4 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | ChiPartial | partial:m15_6 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | ChiPartial | partial:m15_8 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | ChiPartial | partial:m15_15 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | ChiTotal | total:m14_4 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | ChiTotal | total:m15_3 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | ChiTotal | total:m15_9 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | SideEffect | m15_9 |
|
||||
| destructors_for_temps.cpp:15:14:15:35 | SideEffect | ~m14_4 |
|
||||
| destructors_for_temps.cpp:15:37:15:41 | CallTarget | func:r15_10 |
|
||||
| destructors_for_temps.cpp:15:37:15:41 | ChiPartial | partial:m15_12 |
|
||||
| destructors_for_temps.cpp:15:37:15:41 | ChiTotal | total:m15_7 |
|
||||
| destructors_for_temps.cpp:15:37:15:41 | SideEffect | ~m15_7 |
|
||||
| destructors_for_temps.cpp:15:37:15:41 | StoreValue | r15_11 |
|
||||
| destructors_for_temps.cpp:16:26:16:26 | Address | &:r16_1 |
|
||||
| destructors_for_temps.cpp:16:26:16:26 | Address | &:r16_1 |
|
||||
| destructors_for_temps.cpp:16:26:16:26 | Arg(this) | this:r16_1 |
|
||||
| destructors_for_temps.cpp:16:28:16:30 | Arg(0) | 0:r16_4 |
|
||||
| destructors_for_temps.cpp:16:28:16:63 | CallTarget | func:r16_3 |
|
||||
| destructors_for_temps.cpp:16:28:16:63 | ChiPartial | partial:m16_21 |
|
||||
| destructors_for_temps.cpp:16:28:16:63 | ChiPartial | partial:m16_23 |
|
||||
| destructors_for_temps.cpp:16:28:16:63 | ChiTotal | total:m16_2 |
|
||||
| destructors_for_temps.cpp:16:28:16:63 | ChiTotal | total:m16_16 |
|
||||
| destructors_for_temps.cpp:16:28:16:63 | SideEffect | ~m16_16 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | Address | &:r16_5 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | Address | &:r16_5 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | Address | &:r16_5 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | Address | &:r16_5 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | Arg(this) | this:r16_5 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | Arg(this) | this:r16_5 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | CallTarget | func:r16_7 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | ChiPartial | partial:m16_9 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | ChiPartial | partial:m16_11 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | ChiPartial | partial:m16_18 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | ChiTotal | total:m15_13 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | ChiTotal | total:m16_6 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | ChiTotal | total:m16_12 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | SideEffect | m16_12 |
|
||||
| destructors_for_temps.cpp:16:33:16:54 | SideEffect | ~m15_13 |
|
||||
| destructors_for_temps.cpp:16:56:16:60 | Arg(1) | 1:r16_14 |
|
||||
| destructors_for_temps.cpp:16:56:16:60 | CallTarget | func:r16_13 |
|
||||
| destructors_for_temps.cpp:16:56:16:60 | ChiPartial | partial:m16_15 |
|
||||
| destructors_for_temps.cpp:16:56:16:60 | ChiTotal | total:m16_10 |
|
||||
| destructors_for_temps.cpp:16:56:16:60 | SideEffect | ~m16_10 |
|
||||
| destructors_for_temps.cpp:17:5:17:42 | Address | &:r17_1 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | Address | &:r17_2 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | Address | &:r17_2 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | Address | &:r17_2 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | Address | &:r17_2 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | Arg(this) | this:r17_2 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | Arg(this) | this:r17_2 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | CallTarget | func:r17_4 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | ChiPartial | partial:m17_6 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | ChiPartial | partial:m17_8 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | ChiPartial | partial:m17_15 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | ChiTotal | total:m16_22 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | ChiTotal | total:m17_3 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | ChiTotal | total:m17_9 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | SideEffect | m17_9 |
|
||||
| destructors_for_temps.cpp:17:12:17:33 | SideEffect | ~m16_22 |
|
||||
| destructors_for_temps.cpp:17:35:17:39 | CallTarget | func:r17_10 |
|
||||
| destructors_for_temps.cpp:17:35:17:39 | ChiPartial | partial:m17_12 |
|
||||
| destructors_for_temps.cpp:17:35:17:39 | ChiTotal | total:m17_7 |
|
||||
| destructors_for_temps.cpp:17:35:17:39 | SideEffect | ~m17_7 |
|
||||
| destructors_for_temps.cpp:17:35:17:39 | StoreValue | r17_11 |
|
||||
| destructors_for_temps.cpp:21:6:21:15 | Address | &:r21_5 |
|
||||
| destructors_for_temps.cpp:21:6:21:15 | ChiPartial | partial:m21_3 |
|
||||
| destructors_for_temps.cpp:21:6:21:15 | ChiTotal | total:m21_2 |
|
||||
| destructors_for_temps.cpp:21:6:21:15 | Load | m23_36 |
|
||||
| destructors_for_temps.cpp:21:6:21:15 | SideEffect | ~m23_29 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | Address | &:r22_3 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | Address | &:r22_7 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | Arg(0) | 0:r22_2 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | Arg(this) | this:r22_7 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | CallTarget | func:r22_1 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | CallTarget | func:r22_8 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | ChiPartial | partial:m22_4 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | ChiPartial | partial:m22_10 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | ChiPartial | partial:m22_12 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | ChiTotal | total:m21_4 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | ChiTotal | total:m22_5 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | ChiTotal | total:m22_6 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | SideEffect | ~m21_4 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | SideEffect | ~m22_5 |
|
||||
| destructors_for_temps.cpp:22:5:22:30 | Unary | r22_3 |
|
||||
| destructors_for_temps.cpp:23:5:23:75 | Address | &:r23_1 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | Address | &:r23_2 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | Address | &:r23_2 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | Address | &:r23_2 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | Address | &:r23_2 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | Arg(this) | this:r23_2 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | Arg(this) | this:r23_2 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | CallTarget | func:r23_4 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | ChiPartial | partial:m23_6 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | ChiPartial | partial:m23_8 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | ChiPartial | partial:m23_15 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | ChiTotal | total:m22_11 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | ChiTotal | total:m23_3 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | ChiTotal | total:m23_9 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | SideEffect | m23_9 |
|
||||
| destructors_for_temps.cpp:23:12:23:33 | SideEffect | ~m22_11 |
|
||||
| destructors_for_temps.cpp:23:12:23:41 | Left | r23_17 |
|
||||
| destructors_for_temps.cpp:23:12:23:74 | StoreValue | r23_35 |
|
||||
| destructors_for_temps.cpp:23:12:23:74 | Unary | r23_34 |
|
||||
| destructors_for_temps.cpp:23:35:23:39 | CallTarget | func:r23_10 |
|
||||
| destructors_for_temps.cpp:23:35:23:39 | ChiPartial | partial:m23_12 |
|
||||
| destructors_for_temps.cpp:23:35:23:39 | ChiTotal | total:m23_7 |
|
||||
| destructors_for_temps.cpp:23:35:23:39 | SideEffect | ~m23_7 |
|
||||
| destructors_for_temps.cpp:23:35:23:39 | Unary | r23_11 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | Address | &:r23_18 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | Address | &:r23_18 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | Address | &:r23_18 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | Address | &:r23_18 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | Arg(this) | this:r23_18 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | Arg(this) | this:r23_18 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | CallTarget | func:r23_20 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | ChiPartial | partial:m23_22 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | ChiPartial | partial:m23_24 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | ChiPartial | partial:m23_31 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | ChiTotal | total:m23_13 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | ChiTotal | total:m23_19 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | ChiTotal | total:m23_25 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | SideEffect | m23_25 |
|
||||
| destructors_for_temps.cpp:23:45:23:66 | SideEffect | ~m23_13 |
|
||||
| destructors_for_temps.cpp:23:45:23:74 | Right | r23_33 |
|
||||
| destructors_for_temps.cpp:23:68:23:72 | CallTarget | func:r23_26 |
|
||||
| destructors_for_temps.cpp:23:68:23:72 | ChiPartial | partial:m23_28 |
|
||||
| destructors_for_temps.cpp:23:68:23:72 | ChiTotal | total:m23_23 |
|
||||
| destructors_for_temps.cpp:23:68:23:72 | SideEffect | ~m23_23 |
|
||||
| destructors_for_temps.cpp:23:68:23:72 | Unary | r23_27 |
|
||||
| destructors_for_temps.cpp:29:6:29:15 | ChiPartial | partial:m29_3 |
|
||||
| destructors_for_temps.cpp:29:6:29:15 | ChiTotal | total:m29_2 |
|
||||
| destructors_for_temps.cpp:29:6:29:15 | SideEffect | ~m30_6 |
|
||||
| destructors_for_temps.cpp:30:33:30:34 | Address | &:r30_1 |
|
||||
| destructors_for_temps.cpp:30:38:30:70 | CallTarget | func:r30_3 |
|
||||
| destructors_for_temps.cpp:30:38:30:70 | ChiPartial | partial:m30_5 |
|
||||
| destructors_for_temps.cpp:30:38:30:70 | ChiTotal | total:m29_4 |
|
||||
| destructors_for_temps.cpp:30:38:30:70 | SideEffect | ~m29_4 |
|
||||
| destructors_for_temps.cpp:30:38:30:70 | StoreValue | r30_4 |
|
||||
| destructors_for_temps.cpp:30:38:30:72 | Address | &:r30_2 |
|
||||
| destructors_for_temps.cpp:30:38:30:72 | StoreValue | r30_9 |
|
||||
| destructors_for_temps.cpp:30:38:30:72 | Unary | r30_2 |
|
||||
| destructors_for_temps.cpp:30:38:30:72 | Unary | r30_8 |
|
||||
| destructors_for_temps.cpp:33:6:33:15 | ChiPartial | partial:m33_3 |
|
||||
| destructors_for_temps.cpp:33:6:33:15 | ChiTotal | total:m33_2 |
|
||||
| destructors_for_temps.cpp:33:6:33:15 | SideEffect | ~m36_6 |
|
||||
| destructors_for_temps.cpp:34:26:34:26 | Address | &:r34_1 |
|
||||
| destructors_for_temps.cpp:34:26:34:26 | Address | &:r34_1 |
|
||||
| destructors_for_temps.cpp:34:26:34:26 | Arg(this) | this:r34_1 |
|
||||
| destructors_for_temps.cpp:34:26:34:26 | CallTarget | func:r34_3 |
|
||||
| destructors_for_temps.cpp:34:26:34:26 | ChiPartial | partial:m34_5 |
|
||||
| destructors_for_temps.cpp:34:26:34:26 | ChiPartial | partial:m34_7 |
|
||||
| destructors_for_temps.cpp:34:26:34:26 | ChiTotal | total:m33_4 |
|
||||
| destructors_for_temps.cpp:34:26:34:26 | ChiTotal | total:m34_2 |
|
||||
| destructors_for_temps.cpp:34:26:34:26 | SideEffect | ~m33_4 |
|
||||
| destructors_for_temps.cpp:35:33:35:35 | Address | &:r35_1 |
|
||||
| destructors_for_temps.cpp:35:39:35:71 | CallTarget | func:r35_3 |
|
||||
| destructors_for_temps.cpp:35:39:35:71 | ChiPartial | partial:m35_5 |
|
||||
| destructors_for_temps.cpp:35:39:35:71 | ChiTotal | total:m34_6 |
|
||||
| destructors_for_temps.cpp:35:39:35:71 | SideEffect | ~m34_6 |
|
||||
| destructors_for_temps.cpp:35:39:35:71 | StoreValue | r35_4 |
|
||||
| destructors_for_temps.cpp:35:39:35:73 | Address | &:r35_2 |
|
||||
| destructors_for_temps.cpp:35:39:35:73 | StoreValue | r35_9 |
|
||||
| destructors_for_temps.cpp:35:39:35:73 | Unary | r35_2 |
|
||||
| destructors_for_temps.cpp:35:39:35:73 | Unary | r35_8 |
|
||||
| destructors_for_temps.cpp:36:1:36:1 | Address | &:r36_2 |
|
||||
| destructors_for_temps.cpp:36:1:36:1 | Address | &:r36_2 |
|
||||
| destructors_for_temps.cpp:36:1:36:1 | Arg(this) | this:r36_2 |
|
||||
| destructors_for_temps.cpp:36:1:36:1 | CallTarget | func:r36_3 |
|
||||
| destructors_for_temps.cpp:36:1:36:1 | ChiPartial | partial:m36_5 |
|
||||
| destructors_for_temps.cpp:36:1:36:1 | ChiPartial | partial:m36_8 |
|
||||
| destructors_for_temps.cpp:36:1:36:1 | ChiTotal | total:m34_8 |
|
||||
| destructors_for_temps.cpp:36:1:36:1 | ChiTotal | total:m35_6 |
|
||||
| destructors_for_temps.cpp:36:1:36:1 | SideEffect | m34_8 |
|
||||
| destructors_for_temps.cpp:36:1:36:1 | SideEffect | ~m35_6 |
|
||||
| destructors_for_temps.cpp:38:6:38:15 | ChiPartial | partial:m38_3 |
|
||||
| destructors_for_temps.cpp:38:6:38:15 | ChiTotal | total:m38_2 |
|
||||
| destructors_for_temps.cpp:38:6:38:15 | SideEffect | ~m39_5 |
|
||||
| destructors_for_temps.cpp:38:22:38:22 | Address | &:r38_5 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Address | &:r39_2 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Address | &:r39_7 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Address | &:r39_19 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Address | &:r39_30 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Condition | r39_3 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Load | m38_6 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Load | m39_6 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Phi | from 2:m39_20 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Phi | from 2:~m39_15 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Phi | from 3:m39_31 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | Phi | from 3:~m39_26 |
|
||||
| destructors_for_temps.cpp:39:3:39:3 | StoreValue | r39_8 |
|
||||
| destructors_for_temps.cpp:39:3:39:53 | Address | &:r39_1 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | Address | &:r39_10 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | Address | &:r39_10 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | Address | &:r39_10 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | Arg(this) | this:r39_10 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | CallTarget | func:r39_12 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | ChiPartial | partial:m39_14 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | ChiPartial | partial:m39_16 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | ChiTotal | total:m38_4 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | ChiTotal | total:m39_11 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | Load | m39_17 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | SideEffect | ~m38_4 |
|
||||
| destructors_for_temps.cpp:39:7:39:28 | StoreValue | r39_18 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | Address | &:r39_21 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | Address | &:r39_21 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | Address | &:r39_21 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | Arg(this) | this:r39_21 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | CallTarget | func:r39_23 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | ChiPartial | partial:m39_25 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | ChiPartial | partial:m39_27 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | ChiTotal | total:m38_4 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | ChiTotal | total:m39_22 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | Load | m39_28 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | SideEffect | ~m38_4 |
|
||||
| destructors_for_temps.cpp:39:32:39:53 | StoreValue | r39_29 |
|
||||
| destructors_for_temps.cpp:42:6:42:15 | ChiPartial | partial:m42_3 |
|
||||
| destructors_for_temps.cpp:42:6:42:15 | ChiTotal | total:m42_2 |
|
||||
| destructors_for_temps.cpp:42:6:42:15 | Phi | from 2:~m45_22 |
|
||||
| destructors_for_temps.cpp:42:6:42:15 | Phi | from 4:~m47_6 |
|
||||
| destructors_for_temps.cpp:42:6:42:15 | SideEffect | ~m42_7 |
|
||||
| destructors_for_temps.cpp:42:22:42:22 | Address | &:r42_5 |
|
||||
| destructors_for_temps.cpp:43:26:43:26 | Address | &:r43_1 |
|
||||
| destructors_for_temps.cpp:43:26:43:26 | Address | &:r43_1 |
|
||||
| destructors_for_temps.cpp:43:26:43:26 | Arg(this) | this:r43_1 |
|
||||
| destructors_for_temps.cpp:43:26:43:26 | CallTarget | func:r43_3 |
|
||||
| destructors_for_temps.cpp:43:26:43:26 | ChiPartial | partial:m43_5 |
|
||||
| destructors_for_temps.cpp:43:26:43:26 | ChiPartial | partial:m43_7 |
|
||||
| destructors_for_temps.cpp:43:26:43:26 | ChiTotal | total:m42_4 |
|
||||
| destructors_for_temps.cpp:43:26:43:26 | ChiTotal | total:m43_2 |
|
||||
| destructors_for_temps.cpp:43:26:43:26 | SideEffect | ~m42_4 |
|
||||
| destructors_for_temps.cpp:44:9:44:9 | Address | &:r44_1 |
|
||||
| destructors_for_temps.cpp:44:9:44:9 | Condition | r44_2 |
|
||||
| destructors_for_temps.cpp:44:9:44:9 | Load | m42_6 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | Address | &:r45_1 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | Address | &:r45_1 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | Address | &:r45_1 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | Arg(this) | this:r45_1 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | CallTarget | func:r45_3 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | ChiPartial | partial:m45_21 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | ChiPartial | partial:m45_23 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | ChiTotal | total:m45_2 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | ChiTotal | total:m45_16 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | Load | m45_24 |
|
||||
| destructors_for_temps.cpp:45:7:45:69 | SideEffect | ~m45_16 |
|
||||
| destructors_for_temps.cpp:45:34:45:36 | Arg(0) | 0:r45_4 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | Address | &:r45_5 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | Address | &:r45_5 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | Address | &:r45_5 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | Address | &:r45_5 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | Arg(this) | this:r45_5 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | Arg(this) | this:r45_5 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | CallTarget | func:r45_7 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | ChiPartial | partial:m45_9 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | ChiPartial | partial:m45_11 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | ChiPartial | partial:m45_18 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | ChiTotal | total:m43_6 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | ChiTotal | total:m45_6 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | ChiTotal | total:m45_12 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | SideEffect | m45_12 |
|
||||
| destructors_for_temps.cpp:45:39:45:60 | SideEffect | ~m43_6 |
|
||||
| destructors_for_temps.cpp:45:62:45:66 | Arg(1) | 1:r45_14 |
|
||||
| destructors_for_temps.cpp:45:62:45:66 | CallTarget | func:r45_13 |
|
||||
| destructors_for_temps.cpp:45:62:45:66 | ChiPartial | partial:m45_15 |
|
||||
| destructors_for_temps.cpp:45:62:45:66 | ChiTotal | total:m45_10 |
|
||||
| destructors_for_temps.cpp:45:62:45:66 | SideEffect | ~m45_10 |
|
||||
| destructors_for_temps.cpp:47:1:47:1 | Address | &:r47_2 |
|
||||
| destructors_for_temps.cpp:47:1:47:1 | Address | &:r47_2 |
|
||||
| destructors_for_temps.cpp:47:1:47:1 | Arg(this) | this:r47_2 |
|
||||
| destructors_for_temps.cpp:47:1:47:1 | CallTarget | func:r47_3 |
|
||||
| destructors_for_temps.cpp:47:1:47:1 | ChiPartial | partial:m47_5 |
|
||||
| destructors_for_temps.cpp:47:1:47:1 | ChiPartial | partial:m47_8 |
|
||||
| destructors_for_temps.cpp:47:1:47:1 | ChiTotal | total:m43_6 |
|
||||
| destructors_for_temps.cpp:47:1:47:1 | ChiTotal | total:m43_8 |
|
||||
| destructors_for_temps.cpp:47:1:47:1 | SideEffect | m43_8 |
|
||||
| destructors_for_temps.cpp:47:1:47:1 | SideEffect | ~m43_6 |
|
||||
| destructors_for_temps.cpp:49:6:49:15 | ChiPartial | partial:m49_3 |
|
||||
| destructors_for_temps.cpp:49:6:49:15 | ChiTotal | total:m49_2 |
|
||||
| destructors_for_temps.cpp:49:6:49:15 | Phi | from 2:~m51_26 |
|
||||
| destructors_for_temps.cpp:49:6:49:15 | Phi | from 4:~m52_6 |
|
||||
| destructors_for_temps.cpp:49:6:49:15 | SideEffect | ~m49_7 |
|
||||
| destructors_for_temps.cpp:49:22:49:22 | Address | &:r49_5 |
|
||||
| destructors_for_temps.cpp:50:26:50:26 | Address | &:r50_1 |
|
||||
| destructors_for_temps.cpp:50:26:50:26 | Address | &:r50_1 |
|
||||
| destructors_for_temps.cpp:50:26:50:26 | Arg(this) | this:r50_1 |
|
||||
| destructors_for_temps.cpp:50:26:50:26 | CallTarget | func:r50_3 |
|
||||
| destructors_for_temps.cpp:50:26:50:26 | ChiPartial | partial:m50_5 |
|
||||
| destructors_for_temps.cpp:50:26:50:26 | ChiPartial | partial:m50_7 |
|
||||
| destructors_for_temps.cpp:50:26:50:26 | ChiTotal | total:m49_4 |
|
||||
| destructors_for_temps.cpp:50:26:50:26 | ChiTotal | total:m50_2 |
|
||||
| destructors_for_temps.cpp:50:26:50:26 | SideEffect | ~m49_4 |
|
||||
| destructors_for_temps.cpp:51:5:51:5 | Address | &:r51_2 |
|
||||
| destructors_for_temps.cpp:51:5:51:5 | Address | &:r51_39 |
|
||||
| destructors_for_temps.cpp:51:5:51:5 | Address | &:r51_41 |
|
||||
| destructors_for_temps.cpp:51:5:51:5 | Condition | r51_3 |
|
||||
| destructors_for_temps.cpp:51:5:51:5 | Load | m49_6 |
|
||||
| destructors_for_temps.cpp:51:5:51:5 | Load | m51_40 |
|
||||
| destructors_for_temps.cpp:51:5:51:5 | StoreValue | r51_42 |
|
||||
| destructors_for_temps.cpp:51:5:51:96 | Address | &:r51_1 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | Address | &:r51_5 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | Address | &:r51_5 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | Address | &:r51_5 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | Arg(this) | this:r51_5 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | CallTarget | func:r51_7 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | ChiPartial | partial:m51_25 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | ChiPartial | partial:m51_27 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | ChiTotal | total:m51_6 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | ChiTotal | total:m51_20 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | Load | m51_28 |
|
||||
| destructors_for_temps.cpp:51:9:51:71 | SideEffect | ~m51_20 |
|
||||
| destructors_for_temps.cpp:51:36:51:38 | Arg(0) | 0:r51_8 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | Address | &:r51_9 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | Address | &:r51_9 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | Address | &:r51_9 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | Address | &:r51_9 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | Arg(this) | this:r51_9 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | Arg(this) | this:r51_9 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | CallTarget | func:r51_11 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | ChiPartial | partial:m51_13 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | ChiPartial | partial:m51_15 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | ChiPartial | partial:m51_22 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | ChiTotal | total:m50_6 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | ChiTotal | total:m51_10 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | ChiTotal | total:m51_16 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | SideEffect | m51_16 |
|
||||
| destructors_for_temps.cpp:51:41:51:62 | SideEffect | ~m50_6 |
|
||||
| destructors_for_temps.cpp:51:64:51:68 | Arg(1) | 1:r51_18 |
|
||||
| destructors_for_temps.cpp:51:64:51:68 | CallTarget | func:r51_17 |
|
||||
| destructors_for_temps.cpp:51:64:51:68 | ChiPartial | partial:m51_19 |
|
||||
| destructors_for_temps.cpp:51:64:51:68 | ChiTotal | total:m51_14 |
|
||||
| destructors_for_temps.cpp:51:64:51:68 | SideEffect | ~m51_14 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | Address | &:r51_30 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | Address | &:r51_30 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | Address | &:r51_30 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | Arg(this) | this:r51_30 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | CallTarget | func:r51_32 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | ChiPartial | partial:m51_34 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | ChiPartial | partial:m51_36 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | ChiTotal | total:m50_6 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | ChiTotal | total:m51_31 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | Load | m51_37 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | SideEffect | ~m50_6 |
|
||||
| destructors_for_temps.cpp:51:75:51:96 | StoreValue | r51_38 |
|
||||
| destructors_for_temps.cpp:52:1:52:1 | Address | &:r52_2 |
|
||||
| destructors_for_temps.cpp:52:1:52:1 | Address | &:r52_2 |
|
||||
| destructors_for_temps.cpp:52:1:52:1 | Arg(this) | this:r52_2 |
|
||||
| destructors_for_temps.cpp:52:1:52:1 | CallTarget | func:r52_3 |
|
||||
| destructors_for_temps.cpp:52:1:52:1 | ChiPartial | partial:m52_5 |
|
||||
| destructors_for_temps.cpp:52:1:52:1 | ChiPartial | partial:m52_8 |
|
||||
| destructors_for_temps.cpp:52:1:52:1 | ChiTotal | total:m50_8 |
|
||||
| destructors_for_temps.cpp:52:1:52:1 | ChiTotal | total:m51_35 |
|
||||
| destructors_for_temps.cpp:52:1:52:1 | SideEffect | m50_8 |
|
||||
| destructors_for_temps.cpp:52:1:52:1 | SideEffect | ~m51_35 |
|
||||
| destructors_for_temps.cpp:54:6:54:15 | ChiPartial | partial:m54_3 |
|
||||
| destructors_for_temps.cpp:54:6:54:15 | ChiTotal | total:m54_2 |
|
||||
| destructors_for_temps.cpp:54:6:54:15 | Phi | from 2:~m55_26 |
|
||||
| destructors_for_temps.cpp:54:6:54:15 | Phi | from 4:~m55_35 |
|
||||
| destructors_for_temps.cpp:54:6:54:15 | SideEffect | ~m54_7 |
|
||||
| destructors_for_temps.cpp:54:22:54:22 | Address | &:r54_5 |
|
||||
| destructors_for_temps.cpp:55:5:55:5 | Address | &:r55_2 |
|
||||
| destructors_for_temps.cpp:55:5:55:5 | Address | &:r55_39 |
|
||||
| destructors_for_temps.cpp:55:5:55:5 | Address | &:r55_41 |
|
||||
| destructors_for_temps.cpp:55:5:55:5 | Condition | r55_3 |
|
||||
| destructors_for_temps.cpp:55:5:55:5 | Load | m54_6 |
|
||||
| destructors_for_temps.cpp:55:5:55:5 | Load | m55_40 |
|
||||
| destructors_for_temps.cpp:55:5:55:5 | StoreValue | r55_42 |
|
||||
| destructors_for_temps.cpp:55:5:55:96 | Address | &:r55_1 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | Address | &:r55_5 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | Address | &:r55_5 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | Address | &:r55_5 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | Arg(this) | this:r55_5 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | CallTarget | func:r55_7 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | ChiPartial | partial:m55_25 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | ChiPartial | partial:m55_27 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | ChiTotal | total:m55_6 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | ChiTotal | total:m55_20 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | Load | m55_28 |
|
||||
| destructors_for_temps.cpp:55:9:55:71 | SideEffect | ~m55_20 |
|
||||
| destructors_for_temps.cpp:55:36:55:38 | Arg(0) | 0:r55_8 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | Address | &:r55_9 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | Address | &:r55_9 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | Address | &:r55_9 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | Address | &:r55_9 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | Arg(this) | this:r55_9 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | Arg(this) | this:r55_9 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | CallTarget | func:r55_11 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | ChiPartial | partial:m55_13 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | ChiPartial | partial:m55_15 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | ChiPartial | partial:m55_22 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | ChiTotal | total:m54_4 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | ChiTotal | total:m55_10 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | ChiTotal | total:m55_16 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | SideEffect | m55_16 |
|
||||
| destructors_for_temps.cpp:55:41:55:62 | SideEffect | ~m54_4 |
|
||||
| destructors_for_temps.cpp:55:64:55:68 | Arg(1) | 1:r55_18 |
|
||||
| destructors_for_temps.cpp:55:64:55:68 | CallTarget | func:r55_17 |
|
||||
| destructors_for_temps.cpp:55:64:55:68 | ChiPartial | partial:m55_19 |
|
||||
| destructors_for_temps.cpp:55:64:55:68 | ChiTotal | total:m55_14 |
|
||||
| destructors_for_temps.cpp:55:64:55:68 | SideEffect | ~m55_14 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | Address | &:r55_30 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | Address | &:r55_30 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | Address | &:r55_30 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | Arg(this) | this:r55_30 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | CallTarget | func:r55_32 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | ChiPartial | partial:m55_34 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | ChiPartial | partial:m55_36 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | ChiTotal | total:m54_4 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | ChiTotal | total:m55_31 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | Load | m55_37 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | SideEffect | ~m54_4 |
|
||||
| destructors_for_temps.cpp:55:75:55:96 | StoreValue | r55_38 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
@@ -726,6 +1160,8 @@
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_4 |
|
||||
| file://:0:0:0:0 | Address | &:r0_4 |
|
||||
| file://:0:0:0:0 | Address | &:r0_5 |
|
||||
@@ -861,6 +1297,7 @@
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_5 |
|
||||
| file://:0:0:0:0 | Load | m0_8 |
|
||||
| file://:0:0:0:0 | Load | m0_11 |
|
||||
@@ -900,6 +1337,7 @@
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_14 |
|
||||
| file://:0:0:0:0 | SideEffect | m1080_23 |
|
||||
| file://:0:0:0:0 | SideEffect | m1080_23 |
|
||||
|
||||
@@ -724,6 +724,420 @@ complex.c:
|
||||
# 58| v58_5(void) = AliasedUse : ~m?
|
||||
# 58| v58_6(void) = ExitFunction :
|
||||
|
||||
destructors_for_temps.cpp:
|
||||
# 9| void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&)
|
||||
# 9| Block 0
|
||||
# 9| v9_1(void) = EnterFunction :
|
||||
# 9| mu9_2(unknown) = AliasedDefinition :
|
||||
# 9| mu9_3(unknown) = InitializeNonLocal :
|
||||
# 9| r9_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 9| mu9_5(glval<ClassWithConstructor>) = InitializeParameter[#this] : &:r9_4
|
||||
# 9| r9_6(glval<ClassWithConstructor>) = Load[#this] : &:r9_4, ~m?
|
||||
# 9| mu9_7(ClassWithConstructor) = InitializeIndirection[#this] : &:r9_6
|
||||
#-----| r0_1(glval<ClassWithConstructor &&>) = VariableAddress[(unnamed parameter 0)] :
|
||||
#-----| mu0_2(ClassWithConstructor &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1
|
||||
#-----| r0_3(ClassWithConstructor &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m?
|
||||
#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3
|
||||
# 9| v9_8(void) = NoOp :
|
||||
# 9| v9_9(void) = ReturnIndirection[#this] : &:r9_6, ~m?
|
||||
#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m?
|
||||
# 9| v9_10(void) = ReturnVoid :
|
||||
# 9| v9_11(void) = AliasedUse : ~m?
|
||||
# 9| v9_12(void) = ExitFunction :
|
||||
|
||||
# 14| char temp_test()
|
||||
# 14| Block 0
|
||||
# 14| v14_1(void) = EnterFunction :
|
||||
# 14| mu14_2(unknown) = AliasedDefinition :
|
||||
# 14| mu14_3(unknown) = InitializeNonLocal :
|
||||
# 15| r15_1(glval<char>) = VariableAddress[x] :
|
||||
# 15| r15_2(glval<ClassWithDestructor2>) = VariableAddress[#temp15:14] :
|
||||
# 15| mu15_3(ClassWithDestructor2) = Uninitialized[#temp15:14] : &:r15_2
|
||||
# 15| r15_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 15| v15_5(void) = Call[ClassWithDestructor2] : func:r15_4, this:r15_2
|
||||
# 15| mu15_6(unknown) = ^CallSideEffect : ~m?
|
||||
# 15| mu15_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r15_2
|
||||
# 15| r15_8(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 15| r15_9(char) = Call[get_x] : func:r15_8, this:r15_2
|
||||
# 15| mu15_10(unknown) = ^CallSideEffect : ~m?
|
||||
# 15| v15_11(void) = ^IndirectReadSideEffect[-1] : &:r15_2, ~m?
|
||||
# 15| mu15_12(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r15_2
|
||||
# 15| mu15_13(char) = Store[x] : &:r15_1, r15_9
|
||||
# 16| r16_1(glval<ClassWithConstructor>) = VariableAddress[y] :
|
||||
# 16| mu16_2(ClassWithConstructor) = Uninitialized[y] : &:r16_1
|
||||
# 16| r16_3(glval<unknown>) = FunctionAddress[ClassWithConstructor] :
|
||||
# 16| r16_4(char) = Constant[97] :
|
||||
# 16| r16_5(glval<ClassWithDestructor2>) = VariableAddress[#temp16:33] :
|
||||
# 16| mu16_6(ClassWithDestructor2) = Uninitialized[#temp16:33] : &:r16_5
|
||||
# 16| r16_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 16| v16_8(void) = Call[ClassWithDestructor2] : func:r16_7, this:r16_5
|
||||
# 16| mu16_9(unknown) = ^CallSideEffect : ~m?
|
||||
# 16| mu16_10(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r16_5
|
||||
# 16| r16_11(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 16| r16_12(char) = Call[get_x] : func:r16_11, this:r16_5
|
||||
# 16| mu16_13(unknown) = ^CallSideEffect : ~m?
|
||||
# 16| v16_14(void) = ^IndirectReadSideEffect[-1] : &:r16_5, ~m?
|
||||
# 16| mu16_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r16_5
|
||||
# 16| v16_16(void) = Call[ClassWithConstructor] : func:r16_3, this:r16_1, 0:r16_4, 1:r16_12
|
||||
# 16| mu16_17(unknown) = ^CallSideEffect : ~m?
|
||||
# 16| mu16_18(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r16_1
|
||||
# 17| r17_1(glval<char>) = VariableAddress[#return] :
|
||||
# 17| r17_2(glval<ClassWithDestructor2>) = VariableAddress[#temp17:12] :
|
||||
# 17| mu17_3(ClassWithDestructor2) = Uninitialized[#temp17:12] : &:r17_2
|
||||
# 17| r17_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 17| v17_5(void) = Call[ClassWithDestructor2] : func:r17_4, this:r17_2
|
||||
# 17| mu17_6(unknown) = ^CallSideEffect : ~m?
|
||||
# 17| mu17_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r17_2
|
||||
# 17| r17_8(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 17| r17_9(char) = Call[get_x] : func:r17_8, this:r17_2
|
||||
# 17| mu17_10(unknown) = ^CallSideEffect : ~m?
|
||||
# 17| v17_11(void) = ^IndirectReadSideEffect[-1] : &:r17_2, ~m?
|
||||
# 17| mu17_12(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r17_2
|
||||
# 17| mu17_13(char) = Store[#return] : &:r17_1, r17_9
|
||||
# 14| r14_4(glval<char>) = VariableAddress[#return] :
|
||||
# 14| v14_5(void) = ReturnValue : &:r14_4, ~m?
|
||||
# 14| v14_6(void) = AliasedUse : ~m?
|
||||
# 14| v14_7(void) = ExitFunction :
|
||||
|
||||
# 21| char temp_test2()
|
||||
# 21| Block 0
|
||||
# 21| v21_1(void) = EnterFunction :
|
||||
# 21| mu21_2(unknown) = AliasedDefinition :
|
||||
# 21| mu21_3(unknown) = InitializeNonLocal :
|
||||
# 22| r22_1(glval<unknown>) = FunctionAddress[operator new] :
|
||||
# 22| r22_2(unsigned long) = Constant[1] :
|
||||
# 22| r22_3(void *) = Call[operator new] : func:r22_1, 0:r22_2
|
||||
# 22| mu22_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 22| mu22_5(unknown) = ^InitializeDynamicAllocation : &:r22_3
|
||||
# 22| r22_6(ClassWithDestructor2 *) = Convert : r22_3
|
||||
# 22| r22_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 22| v22_8(void) = Call[ClassWithDestructor2] : func:r22_7, this:r22_6
|
||||
# 22| mu22_9(unknown) = ^CallSideEffect : ~m?
|
||||
# 22| mu22_10(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r22_6
|
||||
# 23| r23_1(glval<char>) = VariableAddress[#return] :
|
||||
# 23| r23_2(glval<ClassWithDestructor2>) = VariableAddress[#temp23:12] :
|
||||
# 23| mu23_3(ClassWithDestructor2) = Uninitialized[#temp23:12] : &:r23_2
|
||||
# 23| r23_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 23| v23_5(void) = Call[ClassWithDestructor2] : func:r23_4, this:r23_2
|
||||
# 23| mu23_6(unknown) = ^CallSideEffect : ~m?
|
||||
# 23| mu23_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_2
|
||||
# 23| r23_8(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 23| r23_9(char) = Call[get_x] : func:r23_8, this:r23_2
|
||||
# 23| mu23_10(unknown) = ^CallSideEffect : ~m?
|
||||
# 23| v23_11(void) = ^IndirectReadSideEffect[-1] : &:r23_2, ~m?
|
||||
# 23| mu23_12(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_2
|
||||
# 23| r23_13(int) = Convert : r23_9
|
||||
# 23| r23_14(glval<ClassWithDestructor2>) = VariableAddress[#temp23:45] :
|
||||
# 23| mu23_15(ClassWithDestructor2) = Uninitialized[#temp23:45] : &:r23_14
|
||||
# 23| r23_16(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 23| v23_17(void) = Call[ClassWithDestructor2] : func:r23_16, this:r23_14
|
||||
# 23| mu23_18(unknown) = ^CallSideEffect : ~m?
|
||||
# 23| mu23_19(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_14
|
||||
# 23| r23_20(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 23| r23_21(char) = Call[get_x] : func:r23_20, this:r23_14
|
||||
# 23| mu23_22(unknown) = ^CallSideEffect : ~m?
|
||||
# 23| v23_23(void) = ^IndirectReadSideEffect[-1] : &:r23_14, ~m?
|
||||
# 23| mu23_24(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_14
|
||||
# 23| r23_25(int) = Convert : r23_21
|
||||
# 23| r23_26(int) = Add : r23_13, r23_25
|
||||
# 23| r23_27(char) = Convert : r23_26
|
||||
# 23| mu23_28(char) = Store[#return] : &:r23_1, r23_27
|
||||
# 21| r21_4(glval<char>) = VariableAddress[#return] :
|
||||
# 21| v21_5(void) = ReturnValue : &:r21_4, ~m?
|
||||
# 21| v21_6(void) = AliasedUse : ~m?
|
||||
# 21| v21_7(void) = ExitFunction :
|
||||
|
||||
# 29| void temp_test3()
|
||||
# 29| Block 0
|
||||
# 29| v29_1(void) = EnterFunction :
|
||||
# 29| mu29_2(unknown) = AliasedDefinition :
|
||||
# 29| mu29_3(unknown) = InitializeNonLocal :
|
||||
# 30| r30_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs] :
|
||||
# 30| r30_2(glval<ClassWithDestructor2>) = VariableAddress[#temp30:38] :
|
||||
# 30| r30_3(glval<unknown>) = FunctionAddress[returnValue] :
|
||||
# 30| r30_4(ClassWithDestructor2) = Call[returnValue] : func:r30_3
|
||||
# 30| mu30_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 30| mu30_6(ClassWithDestructor2) = Store[#temp30:38] : &:r30_2, r30_4
|
||||
# 30| r30_7(glval<ClassWithDestructor2>) = Convert : r30_2
|
||||
# 30| r30_8(ClassWithDestructor2 &) = CopyValue : r30_7
|
||||
# 30| mu30_9(ClassWithDestructor2 &) = Store[rs] : &:r30_1, r30_8
|
||||
# 31| v31_1(void) = NoOp :
|
||||
# 29| v29_4(void) = ReturnVoid :
|
||||
# 29| v29_5(void) = AliasedUse : ~m?
|
||||
# 29| v29_6(void) = ExitFunction :
|
||||
|
||||
# 33| void temp_test4()
|
||||
# 33| Block 0
|
||||
# 33| v33_1(void) = EnterFunction :
|
||||
# 33| mu33_2(unknown) = AliasedDefinition :
|
||||
# 33| mu33_3(unknown) = InitializeNonLocal :
|
||||
# 34| r34_1(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 34| mu34_2(ClassWithDestructor2) = Uninitialized[c] : &:r34_1
|
||||
# 34| r34_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 34| v34_4(void) = Call[ClassWithDestructor2] : func:r34_3, this:r34_1
|
||||
# 34| mu34_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 34| mu34_6(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r34_1
|
||||
# 35| r35_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs2] :
|
||||
# 35| r35_2(glval<ClassWithDestructor2>) = VariableAddress[#temp35:39] :
|
||||
# 35| r35_3(glval<unknown>) = FunctionAddress[returnValue] :
|
||||
# 35| r35_4(ClassWithDestructor2) = Call[returnValue] : func:r35_3
|
||||
# 35| mu35_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 35| mu35_6(ClassWithDestructor2) = Store[#temp35:39] : &:r35_2, r35_4
|
||||
# 35| r35_7(glval<ClassWithDestructor2>) = Convert : r35_2
|
||||
# 35| r35_8(ClassWithDestructor2 &) = CopyValue : r35_7
|
||||
# 35| mu35_9(ClassWithDestructor2 &) = Store[rs2] : &:r35_1, r35_8
|
||||
# 36| v36_1(void) = NoOp :
|
||||
# 36| r36_2(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 36| r36_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] :
|
||||
# 36| v36_4(void) = Call[~ClassWithDestructor2] : func:r36_3, this:r36_2
|
||||
# 36| mu36_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 36| v36_6(void) = ^IndirectReadSideEffect[-1] : &:r36_2, ~m?
|
||||
# 36| mu36_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r36_2
|
||||
# 33| v33_4(void) = ReturnVoid :
|
||||
# 33| v33_5(void) = AliasedUse : ~m?
|
||||
# 33| v33_6(void) = ExitFunction :
|
||||
|
||||
# 38| void temp_test5(bool)
|
||||
# 38| Block 0
|
||||
# 38| v38_1(void) = EnterFunction :
|
||||
# 38| mu38_2(unknown) = AliasedDefinition :
|
||||
# 38| mu38_3(unknown) = InitializeNonLocal :
|
||||
# 38| r38_4(glval<bool>) = VariableAddress[b] :
|
||||
# 38| mu38_5(bool) = InitializeParameter[b] : &:r38_4
|
||||
# 39| r39_1(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] :
|
||||
# 39| r39_2(glval<bool>) = VariableAddress[b] :
|
||||
# 39| r39_3(bool) = Load[b] : &:r39_2, ~m?
|
||||
# 39| v39_4(void) = ConditionalBranch : r39_3
|
||||
#-----| False -> Block 3
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 39| Block 1
|
||||
# 39| r39_5(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] :
|
||||
# 39| r39_6(ClassWithDestructor2) = Load[#temp39:3] : &:r39_5, ~m?
|
||||
# 39| mu39_7(ClassWithDestructor2) = Store[#temp39:3] : &:r39_1, r39_6
|
||||
# 40| v40_1(void) = NoOp :
|
||||
# 38| v38_6(void) = ReturnVoid :
|
||||
# 38| v38_7(void) = AliasedUse : ~m?
|
||||
# 38| v38_8(void) = ExitFunction :
|
||||
|
||||
# 39| Block 2
|
||||
# 39| r39_8(glval<ClassWithDestructor2>) = VariableAddress[#temp39:7] :
|
||||
# 39| mu39_9(ClassWithDestructor2) = Uninitialized[#temp39:7] : &:r39_8
|
||||
# 39| r39_10(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 39| v39_11(void) = Call[ClassWithDestructor2] : func:r39_10, this:r39_8
|
||||
# 39| mu39_12(unknown) = ^CallSideEffect : ~m?
|
||||
# 39| mu39_13(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r39_8
|
||||
# 39| r39_14(ClassWithDestructor2) = Load[#temp39:7] : &:r39_8, ~m?
|
||||
# 39| r39_15(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] :
|
||||
# 39| mu39_16(ClassWithDestructor2) = Store[#temp39:3] : &:r39_15, r39_14
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 39| Block 3
|
||||
# 39| r39_17(glval<ClassWithDestructor2>) = VariableAddress[#temp39:32] :
|
||||
# 39| mu39_18(ClassWithDestructor2) = Uninitialized[#temp39:32] : &:r39_17
|
||||
# 39| r39_19(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 39| v39_20(void) = Call[ClassWithDestructor2] : func:r39_19, this:r39_17
|
||||
# 39| mu39_21(unknown) = ^CallSideEffect : ~m?
|
||||
# 39| mu39_22(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r39_17
|
||||
# 39| r39_23(ClassWithDestructor2) = Load[#temp39:32] : &:r39_17, ~m?
|
||||
# 39| r39_24(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] :
|
||||
# 39| mu39_25(ClassWithDestructor2) = Store[#temp39:3] : &:r39_24, r39_23
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 42| void temp_test6(bool)
|
||||
# 42| Block 0
|
||||
# 42| v42_1(void) = EnterFunction :
|
||||
# 42| mu42_2(unknown) = AliasedDefinition :
|
||||
# 42| mu42_3(unknown) = InitializeNonLocal :
|
||||
# 42| r42_4(glval<bool>) = VariableAddress[b] :
|
||||
# 42| mu42_5(bool) = InitializeParameter[b] : &:r42_4
|
||||
# 43| r43_1(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 43| mu43_2(ClassWithDestructor2) = Uninitialized[c] : &:r43_1
|
||||
# 43| r43_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 43| v43_4(void) = Call[ClassWithDestructor2] : func:r43_3, this:r43_1
|
||||
# 43| mu43_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 43| mu43_6(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r43_1
|
||||
# 44| r44_1(glval<bool>) = VariableAddress[b] :
|
||||
# 44| r44_2(bool) = Load[b] : &:r44_1, ~m?
|
||||
# 44| v44_3(void) = ConditionalBranch : r44_2
|
||||
#-----| False -> Block 4
|
||||
#-----| True -> Block 3
|
||||
|
||||
# 42| Block 1
|
||||
# 42| v42_6(void) = AliasedUse : ~m?
|
||||
# 42| v42_7(void) = ExitFunction :
|
||||
|
||||
# 42| Block 2
|
||||
# 42| v42_8(void) = Unwind :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 45| Block 3
|
||||
# 45| r45_1(glval<ClassWithConstructor>) = VariableAddress[#throw45:7] :
|
||||
# 45| mu45_2(ClassWithConstructor) = Uninitialized[#throw45:7] : &:r45_1
|
||||
# 45| r45_3(glval<unknown>) = FunctionAddress[ClassWithConstructor] :
|
||||
# 45| r45_4(char) = Constant[120] :
|
||||
# 45| r45_5(glval<ClassWithDestructor2>) = VariableAddress[#temp45:39] :
|
||||
# 45| mu45_6(ClassWithDestructor2) = Uninitialized[#temp45:39] : &:r45_5
|
||||
# 45| r45_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 45| v45_8(void) = Call[ClassWithDestructor2] : func:r45_7, this:r45_5
|
||||
# 45| mu45_9(unknown) = ^CallSideEffect : ~m?
|
||||
# 45| mu45_10(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r45_5
|
||||
# 45| r45_11(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 45| r45_12(char) = Call[get_x] : func:r45_11, this:r45_5
|
||||
# 45| mu45_13(unknown) = ^CallSideEffect : ~m?
|
||||
# 45| v45_14(void) = ^IndirectReadSideEffect[-1] : &:r45_5, ~m?
|
||||
# 45| mu45_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r45_5
|
||||
# 45| v45_16(void) = Call[ClassWithConstructor] : func:r45_3, this:r45_1, 0:r45_4, 1:r45_12
|
||||
# 45| mu45_17(unknown) = ^CallSideEffect : ~m?
|
||||
# 45| mu45_18(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r45_1
|
||||
# 45| v45_19(void) = ThrowValue : &:r45_1, ~m?
|
||||
#-----| Exception -> Block 2
|
||||
|
||||
# 47| Block 4
|
||||
# 47| v47_1(void) = NoOp :
|
||||
# 47| r47_2(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 47| r47_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] :
|
||||
# 47| v47_4(void) = Call[~ClassWithDestructor2] : func:r47_3, this:r47_2
|
||||
# 47| mu47_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 47| v47_6(void) = ^IndirectReadSideEffect[-1] : &:r47_2, ~m?
|
||||
# 47| mu47_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r47_2
|
||||
# 42| v42_9(void) = ReturnVoid :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 49| void temp_test7(bool)
|
||||
# 49| Block 0
|
||||
# 49| v49_1(void) = EnterFunction :
|
||||
# 49| mu49_2(unknown) = AliasedDefinition :
|
||||
# 49| mu49_3(unknown) = InitializeNonLocal :
|
||||
# 49| r49_4(glval<bool>) = VariableAddress[b] :
|
||||
# 49| mu49_5(bool) = InitializeParameter[b] : &:r49_4
|
||||
# 50| r50_1(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 50| mu50_2(ClassWithDestructor2) = Uninitialized[c] : &:r50_1
|
||||
# 50| r50_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 50| v50_4(void) = Call[ClassWithDestructor2] : func:r50_3, this:r50_1
|
||||
# 50| mu50_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 50| mu50_6(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r50_1
|
||||
# 51| r51_1(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] :
|
||||
# 51| r51_2(glval<bool>) = VariableAddress[b] :
|
||||
# 51| r51_3(bool) = Load[b] : &:r51_2, ~m?
|
||||
# 51| v51_4(void) = ConditionalBranch : r51_3
|
||||
#-----| False -> Block 4
|
||||
#-----| True -> Block 3
|
||||
|
||||
# 49| Block 1
|
||||
# 49| v49_6(void) = AliasedUse : ~m?
|
||||
# 49| v49_7(void) = ExitFunction :
|
||||
|
||||
# 49| Block 2
|
||||
# 49| v49_8(void) = Unwind :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 51| Block 3
|
||||
# 51| r51_5(glval<ClassWithConstructor>) = VariableAddress[#throw51:9] :
|
||||
# 51| mu51_6(ClassWithConstructor) = Uninitialized[#throw51:9] : &:r51_5
|
||||
# 51| r51_7(glval<unknown>) = FunctionAddress[ClassWithConstructor] :
|
||||
# 51| r51_8(char) = Constant[120] :
|
||||
# 51| r51_9(glval<ClassWithDestructor2>) = VariableAddress[#temp51:41] :
|
||||
# 51| mu51_10(ClassWithDestructor2) = Uninitialized[#temp51:41] : &:r51_9
|
||||
# 51| r51_11(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 51| v51_12(void) = Call[ClassWithDestructor2] : func:r51_11, this:r51_9
|
||||
# 51| mu51_13(unknown) = ^CallSideEffect : ~m?
|
||||
# 51| mu51_14(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_9
|
||||
# 51| r51_15(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 51| r51_16(char) = Call[get_x] : func:r51_15, this:r51_9
|
||||
# 51| mu51_17(unknown) = ^CallSideEffect : ~m?
|
||||
# 51| v51_18(void) = ^IndirectReadSideEffect[-1] : &:r51_9, ~m?
|
||||
# 51| mu51_19(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_9
|
||||
# 51| v51_20(void) = Call[ClassWithConstructor] : func:r51_7, this:r51_5, 0:r51_8, 1:r51_16
|
||||
# 51| mu51_21(unknown) = ^CallSideEffect : ~m?
|
||||
# 51| mu51_22(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r51_5
|
||||
# 51| v51_23(void) = ThrowValue : &:r51_5, ~m?
|
||||
#-----| Exception -> Block 2
|
||||
|
||||
# 51| Block 4
|
||||
# 51| r51_24(glval<ClassWithDestructor2>) = VariableAddress[#temp51:75] :
|
||||
# 51| mu51_25(ClassWithDestructor2) = Uninitialized[#temp51:75] : &:r51_24
|
||||
# 51| r51_26(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 51| v51_27(void) = Call[ClassWithDestructor2] : func:r51_26, this:r51_24
|
||||
# 51| mu51_28(unknown) = ^CallSideEffect : ~m?
|
||||
# 51| mu51_29(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_24
|
||||
# 51| r51_30(ClassWithDestructor2) = Load[#temp51:75] : &:r51_24, ~m?
|
||||
# 51| r51_31(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] :
|
||||
# 51| mu51_32(ClassWithDestructor2) = Store[#temp51:5] : &:r51_31, r51_30
|
||||
# 51| r51_33(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] :
|
||||
# 51| r51_34(ClassWithDestructor2) = Load[#temp51:5] : &:r51_33, ~m?
|
||||
# 51| mu51_35(ClassWithDestructor2) = Store[#temp51:5] : &:r51_1, r51_34
|
||||
# 52| v52_1(void) = NoOp :
|
||||
# 52| r52_2(glval<ClassWithDestructor2>) = VariableAddress[c] :
|
||||
# 52| r52_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] :
|
||||
# 52| v52_4(void) = Call[~ClassWithDestructor2] : func:r52_3, this:r52_2
|
||||
# 52| mu52_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 52| v52_6(void) = ^IndirectReadSideEffect[-1] : &:r52_2, ~m?
|
||||
# 52| mu52_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r52_2
|
||||
# 49| v49_9(void) = ReturnVoid :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 54| void temp_test8(bool)
|
||||
# 54| Block 0
|
||||
# 54| v54_1(void) = EnterFunction :
|
||||
# 54| mu54_2(unknown) = AliasedDefinition :
|
||||
# 54| mu54_3(unknown) = InitializeNonLocal :
|
||||
# 54| r54_4(glval<bool>) = VariableAddress[b] :
|
||||
# 54| mu54_5(bool) = InitializeParameter[b] : &:r54_4
|
||||
# 55| r55_1(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] :
|
||||
# 55| r55_2(glval<bool>) = VariableAddress[b] :
|
||||
# 55| r55_3(bool) = Load[b] : &:r55_2, ~m?
|
||||
# 55| v55_4(void) = ConditionalBranch : r55_3
|
||||
#-----| False -> Block 4
|
||||
#-----| True -> Block 3
|
||||
|
||||
# 54| Block 1
|
||||
# 54| v54_6(void) = AliasedUse : ~m?
|
||||
# 54| v54_7(void) = ExitFunction :
|
||||
|
||||
# 54| Block 2
|
||||
# 54| v54_8(void) = Unwind :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 55| Block 3
|
||||
# 55| r55_5(glval<ClassWithConstructor>) = VariableAddress[#throw55:9] :
|
||||
# 55| mu55_6(ClassWithConstructor) = Uninitialized[#throw55:9] : &:r55_5
|
||||
# 55| r55_7(glval<unknown>) = FunctionAddress[ClassWithConstructor] :
|
||||
# 55| r55_8(char) = Constant[120] :
|
||||
# 55| r55_9(glval<ClassWithDestructor2>) = VariableAddress[#temp55:41] :
|
||||
# 55| mu55_10(ClassWithDestructor2) = Uninitialized[#temp55:41] : &:r55_9
|
||||
# 55| r55_11(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 55| v55_12(void) = Call[ClassWithDestructor2] : func:r55_11, this:r55_9
|
||||
# 55| mu55_13(unknown) = ^CallSideEffect : ~m?
|
||||
# 55| mu55_14(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_9
|
||||
# 55| r55_15(glval<unknown>) = FunctionAddress[get_x] :
|
||||
# 55| r55_16(char) = Call[get_x] : func:r55_15, this:r55_9
|
||||
# 55| mu55_17(unknown) = ^CallSideEffect : ~m?
|
||||
# 55| v55_18(void) = ^IndirectReadSideEffect[-1] : &:r55_9, ~m?
|
||||
# 55| mu55_19(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_9
|
||||
# 55| v55_20(void) = Call[ClassWithConstructor] : func:r55_7, this:r55_5, 0:r55_8, 1:r55_16
|
||||
# 55| mu55_21(unknown) = ^CallSideEffect : ~m?
|
||||
# 55| mu55_22(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r55_5
|
||||
# 55| v55_23(void) = ThrowValue : &:r55_5, ~m?
|
||||
#-----| Exception -> Block 2
|
||||
|
||||
# 55| Block 4
|
||||
# 55| r55_24(glval<ClassWithDestructor2>) = VariableAddress[#temp55:75] :
|
||||
# 55| mu55_25(ClassWithDestructor2) = Uninitialized[#temp55:75] : &:r55_24
|
||||
# 55| r55_26(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
|
||||
# 55| v55_27(void) = Call[ClassWithDestructor2] : func:r55_26, this:r55_24
|
||||
# 55| mu55_28(unknown) = ^CallSideEffect : ~m?
|
||||
# 55| mu55_29(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_24
|
||||
# 55| r55_30(ClassWithDestructor2) = Load[#temp55:75] : &:r55_24, ~m?
|
||||
# 55| r55_31(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] :
|
||||
# 55| mu55_32(ClassWithDestructor2) = Store[#temp55:5] : &:r55_31, r55_30
|
||||
# 55| r55_33(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] :
|
||||
# 55| r55_34(ClassWithDestructor2) = Load[#temp55:5] : &:r55_33, ~m?
|
||||
# 55| mu55_35(ClassWithDestructor2) = Store[#temp55:5] : &:r55_1, r55_34
|
||||
# 56| v56_1(void) = NoOp :
|
||||
# 54| v54_9(void) = ReturnVoid :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
ir.c:
|
||||
# 7| void MyCoordsTest(int)
|
||||
# 7| Block 0
|
||||
|
||||
Reference in New Issue
Block a user