mirror of
https://github.com/github/codeql.git
synced 2026-03-31 12:48:17 +02:00
C++: Call functions for NSDMI initialization
Currently missing: side-effect information for the functions
This commit is contained in:
@@ -767,7 +767,7 @@ newtype TTranslatedElement =
|
||||
expr = initList.getFieldExpr(field, position).getFullyConverted()
|
||||
)
|
||||
or
|
||||
exists(ConstructorFieldInit init |
|
||||
exists(ConstructorDirectFieldInit init |
|
||||
not ignoreExpr(init) and
|
||||
ast = init and
|
||||
field = init.getTarget() and
|
||||
@@ -775,6 +775,14 @@ newtype TTranslatedElement =
|
||||
position = -1
|
||||
)
|
||||
} or
|
||||
// The initialization of a field via a default member initializer.
|
||||
TTranslatedDefaultFieldInitialization(Expr ast, Field field) {
|
||||
exists(ConstructorDefaultFieldInit init |
|
||||
not ignoreExpr(init) and
|
||||
ast = init and
|
||||
field = init.getTarget()
|
||||
)
|
||||
} or
|
||||
// The value initialization of a field due to an omitted member of an
|
||||
// initializer list.
|
||||
TTranslatedFieldValueInitialization(Expr ast, Field field) {
|
||||
|
||||
@@ -533,10 +533,7 @@ abstract class TranslatedFieldInitialization extends TranslatedElement {
|
||||
result = getEnclosingVariable(ast).(Field)
|
||||
}
|
||||
|
||||
final override Instruction getFirstInstruction(EdgeKind kind) {
|
||||
result = this.getInstruction(this.getFieldAddressTag()) and
|
||||
kind instanceof GotoEdge
|
||||
}
|
||||
final Field getField() { result = field }
|
||||
|
||||
/**
|
||||
* Gets the zero-based index describing the order in which this field is to be
|
||||
@@ -544,6 +541,20 @@ abstract class TranslatedFieldInitialization extends TranslatedElement {
|
||||
*/
|
||||
final int getOrder() { result = field.getInitializationOrder() }
|
||||
|
||||
/** Gets the position in the initializer list, or `-1` if the initialization is implicit. */
|
||||
int getPosition() { result = -1 }
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the IR translation of the initialization of a field from an
|
||||
* element of an initializer list where default initialization is not used.
|
||||
*/
|
||||
abstract class TranslatedNonDefaultFieldInitialization extends TranslatedFieldInitialization {
|
||||
final override Instruction getFirstInstruction(EdgeKind kind) {
|
||||
result = this.getInstruction(this.getFieldAddressTag()) and
|
||||
kind instanceof GotoEdge
|
||||
}
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) {
|
||||
tag = this.getFieldAddressTag() and
|
||||
opcode instanceof Opcode::FieldAddress and
|
||||
@@ -561,18 +572,13 @@ abstract class TranslatedFieldInitialization extends TranslatedElement {
|
||||
}
|
||||
|
||||
final InstructionTag getFieldAddressTag() { result = InitializerFieldAddressTag() }
|
||||
|
||||
final Field getField() { result = field }
|
||||
|
||||
/** Gets the position in the initializer list, or `-1` if the initialization is implicit. */
|
||||
int getPosition() { result = -1 }
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the IR translation of the initialization of a field from an
|
||||
* explicit element in an initializer list.
|
||||
*/
|
||||
class TranslatedExplicitFieldInitialization extends TranslatedFieldInitialization,
|
||||
class TranslatedExplicitFieldInitialization extends TranslatedNonDefaultFieldInitialization,
|
||||
InitializationContext, TTranslatedExplicitFieldInitialization
|
||||
{
|
||||
Expr expr;
|
||||
@@ -612,6 +618,61 @@ class TranslatedExplicitFieldInitialization extends TranslatedFieldInitializatio
|
||||
override int getPosition() { result = position }
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the IR translation of the initialization of a field from an
|
||||
* element of an initializer list where default initialization is used.
|
||||
*/
|
||||
class TranslatedDefaultFieldInitialization extends TranslatedFieldInitialization,
|
||||
TTranslatedDefaultFieldInitialization
|
||||
{
|
||||
TranslatedDefaultFieldInitialization() {
|
||||
this = TTranslatedDefaultFieldInitialization(ast, field)
|
||||
}
|
||||
|
||||
final override Instruction getFirstInstruction(EdgeKind kind) {
|
||||
result = this.getInstruction(CallTargetTag()) and
|
||||
kind instanceof GotoEdge
|
||||
}
|
||||
|
||||
override Instruction getALastInstructionInternal() { result = this.getInstruction(CallTag()) }
|
||||
|
||||
override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) {
|
||||
tag = CallTargetTag() and
|
||||
result = this.getInstruction(CallTag())
|
||||
or
|
||||
tag = CallTag() and
|
||||
result = this.getParent().getChildSuccessor(this, kind)
|
||||
}
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) {
|
||||
tag = CallTargetTag() and
|
||||
opcode instanceof Opcode::FunctionAddress and
|
||||
resultType = getFunctionGLValueType()
|
||||
or
|
||||
tag = CallTag() and
|
||||
opcode instanceof Opcode::Call and
|
||||
resultType = getVoidType()
|
||||
}
|
||||
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = CallTag() and
|
||||
(
|
||||
operandTag instanceof CallTargetOperandTag and
|
||||
result = this.getInstruction(CallTargetTag())
|
||||
or
|
||||
operandTag instanceof ThisArgumentOperandTag and
|
||||
result = getTranslatedFunction(this.getFunction()).getLoadThisInstruction()
|
||||
)
|
||||
}
|
||||
|
||||
override Declaration getInstructionFunction(InstructionTag tag) {
|
||||
tag = CallTargetTag() and
|
||||
result = field
|
||||
}
|
||||
|
||||
override TranslatedElement getChild(int id) { none() }
|
||||
}
|
||||
|
||||
private string getZeroValue(Type type) {
|
||||
if type instanceof FloatingPointType then result = "0.0" else result = "0"
|
||||
}
|
||||
@@ -620,7 +681,7 @@ private string getZeroValue(Type type) {
|
||||
* Represents the IR translation of the initialization of a field without a
|
||||
* corresponding element in the initializer list.
|
||||
*/
|
||||
class TranslatedFieldValueInitialization extends TranslatedFieldInitialization,
|
||||
class TranslatedFieldValueInitialization extends TranslatedNonDefaultFieldInitialization,
|
||||
TTranslatedFieldValueInitialization
|
||||
{
|
||||
TranslatedFieldValueInitialization() { this = TTranslatedFieldValueInitialization(ast, field) }
|
||||
@@ -630,7 +691,7 @@ class TranslatedFieldValueInitialization extends TranslatedFieldInitialization,
|
||||
}
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) {
|
||||
TranslatedFieldInitialization.super.hasInstruction(opcode, tag, resultType)
|
||||
TranslatedNonDefaultFieldInitialization.super.hasInstruction(opcode, tag, resultType)
|
||||
or
|
||||
tag = this.getFieldDefaultValueTag() and
|
||||
opcode instanceof Opcode::Constant and
|
||||
@@ -661,7 +722,8 @@ class TranslatedFieldValueInitialization extends TranslatedFieldInitialization,
|
||||
}
|
||||
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = TranslatedFieldInitialization.super.getInstructionRegisterOperand(tag, operandTag)
|
||||
result =
|
||||
TranslatedNonDefaultFieldInitialization.super.getInstructionRegisterOperand(tag, operandTag)
|
||||
or
|
||||
tag = this.getFieldDefaultValueStoreTag() and
|
||||
(
|
||||
|
||||
@@ -12369,11 +12369,14 @@ ir.cpp:
|
||||
# 1533| m1533_6(glval<StructuredBindingDataMemberMemberStruct>) = InitializeParameter[#this] : &:r1533_5
|
||||
# 1533| r1533_7(glval<StructuredBindingDataMemberMemberStruct>) = Load[#this] : &:r1533_5, m1533_6
|
||||
# 1533| m1533_8(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1533_7
|
||||
# 1533| v1533_9(void) = NoOp :
|
||||
# 1533| v1533_10(void) = ReturnIndirection[#this] : &:r1533_7, m1533_8
|
||||
# 1533| v1533_11(void) = ReturnVoid :
|
||||
# 1533| v1533_12(void) = AliasedUse : m1533_3
|
||||
# 1533| v1533_13(void) = ExitFunction :
|
||||
# 1533| m1533_9(unknown) = Chi : total:m1533_4, partial:m1533_8
|
||||
# 1533| r1533_10(glval<unknown>) = FunctionAddress[x] :
|
||||
# 1533| v1533_11(void) = Call[x] : func:r1533_10, this:r1533_7
|
||||
# 1533| v1533_12(void) = NoOp :
|
||||
# 1533| v1533_13(void) = ReturnIndirection[#this] : &:r1533_7, m1533_8
|
||||
# 1533| v1533_14(void) = ReturnVoid :
|
||||
# 1533| v1533_15(void) = AliasedUse : ~m1533_9
|
||||
# 1533| v1533_16(void) = ExitFunction :
|
||||
|
||||
# 1534| int StructuredBindingDataMemberMemberStruct::x
|
||||
# 1534| Block 0
|
||||
@@ -12395,19 +12398,39 @@ ir.cpp:
|
||||
|
||||
# 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct()
|
||||
# 1537| Block 0
|
||||
# 1537| v1537_1(void) = EnterFunction :
|
||||
# 1537| m1537_2(unknown) = AliasedDefinition :
|
||||
# 1537| m1537_3(unknown) = InitializeNonLocal :
|
||||
# 1537| m1537_4(unknown) = Chi : total:m1537_2, partial:m1537_3
|
||||
# 1537| r1537_5(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1537| m1537_6(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1537_5
|
||||
# 1537| r1537_7(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1537_5, m1537_6
|
||||
# 1537| m1537_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_7
|
||||
# 1537| v1537_9(void) = NoOp :
|
||||
# 1537| v1537_10(void) = ReturnIndirection[#this] : &:r1537_7, m1537_8
|
||||
# 1537| v1537_11(void) = ReturnVoid :
|
||||
# 1537| v1537_12(void) = AliasedUse : m1537_3
|
||||
# 1537| v1537_13(void) = ExitFunction :
|
||||
# 1537| v1537_1(void) = EnterFunction :
|
||||
# 1537| m1537_2(unknown) = AliasedDefinition :
|
||||
# 1537| m1537_3(unknown) = InitializeNonLocal :
|
||||
# 1537| m1537_4(unknown) = Chi : total:m1537_2, partial:m1537_3
|
||||
# 1537| r1537_5(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1537| m1537_6(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1537_5
|
||||
# 1537| r1537_7(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1537_5, m1537_6
|
||||
# 1537| m1537_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_7
|
||||
# 1537| m1537_9(unknown) = Chi : total:m1537_4, partial:m1537_8
|
||||
# 1537| r1537_10(glval<unknown>) = FunctionAddress[i] :
|
||||
# 1537| v1537_11(void) = Call[i] : func:r1537_10, this:r1537_7
|
||||
# 1537| r1537_12(glval<unknown>) = FunctionAddress[d] :
|
||||
# 1537| v1537_13(void) = Call[d] : func:r1537_12, this:r1537_7
|
||||
# 1537| r1537_14(glval<unknown>) = FunctionAddress[r] :
|
||||
# 1537| v1537_15(void) = Call[r] : func:r1537_14, this:r1537_7
|
||||
# 1537| r1537_16(glval<unknown>) = FunctionAddress[p] :
|
||||
# 1537| v1537_17(void) = Call[p] : func:r1537_16, this:r1537_7
|
||||
# 1537| r1537_18(glval<unknown>) = FunctionAddress[xs] :
|
||||
# 1537| v1537_19(void) = Call[xs] : func:r1537_18, this:r1537_7
|
||||
# 1537| r1537_20(glval<unknown>) = FunctionAddress[r_alt] :
|
||||
# 1537| v1537_21(void) = Call[r_alt] : func:r1537_20, this:r1537_7
|
||||
# 1537| r1537_22(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1537_7
|
||||
# 1537| r1537_23(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberMemberStruct] :
|
||||
# 1537| v1537_24(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1537_23, this:r1537_22
|
||||
# 1537| m1537_25(unknown) = ^CallSideEffect : ~m1537_9
|
||||
# 1537| m1537_26(unknown) = Chi : total:m1537_9, partial:m1537_25
|
||||
# 1537| m1537_27(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_22
|
||||
# 1537| m1537_28(unknown) = Chi : total:m1537_26, partial:m1537_27
|
||||
# 1537| v1537_29(void) = NoOp :
|
||||
# 1537| v1537_30(void) = ReturnIndirection[#this] : &:r1537_7, ~m1537_28
|
||||
# 1537| v1537_31(void) = ReturnVoid :
|
||||
# 1537| v1537_32(void) = AliasedUse : ~m1537_28
|
||||
# 1537| v1537_33(void) = ExitFunction :
|
||||
|
||||
# 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&)
|
||||
# 1537| Block 0
|
||||
@@ -12626,15 +12649,16 @@ ir.cpp:
|
||||
# 1550| m1550_4(unknown) = Chi : total:m1550_2, partial:m1550_3
|
||||
# 1551| r1551_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] :
|
||||
# 1551| m1551_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1551_1
|
||||
# 1551| r1551_3(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberStruct] :
|
||||
# 1551| v1551_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1551_3, this:r1551_1
|
||||
# 1551| m1551_5(unknown) = ^CallSideEffect : ~m1550_4
|
||||
# 1551| m1551_6(unknown) = Chi : total:m1550_4, partial:m1551_5
|
||||
# 1551| m1551_7(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1551_1
|
||||
# 1551| m1551_8(StructuredBindingDataMemberStruct) = Chi : total:m1551_2, partial:m1551_7
|
||||
# 1551| m1551_3(unknown) = Chi : total:m1550_4, partial:m1551_2
|
||||
# 1551| r1551_4(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberStruct] :
|
||||
# 1551| v1551_5(void) = Call[StructuredBindingDataMemberStruct] : func:r1551_4, this:r1551_1
|
||||
# 1551| m1551_6(unknown) = ^CallSideEffect : ~m1551_3
|
||||
# 1551| m1551_7(unknown) = Chi : total:m1551_3, partial:m1551_6
|
||||
# 1551| m1551_8(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1551_1
|
||||
# 1551| m1551_9(unknown) = Chi : total:m1551_7, partial:m1551_8
|
||||
# 1554| r1554_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1554| r1554_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] :
|
||||
# 1554| r1554_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1554_2, m1551_8
|
||||
# 1554| r1554_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1554_2, ~m1551_9
|
||||
# 1554| m1554_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1554_1, r1554_3
|
||||
# 1554| r1554_5(glval<int &>) = VariableAddress[i] :
|
||||
# 1554| r1554_6(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
@@ -12691,7 +12715,7 @@ ir.cpp:
|
||||
# 1558| r1558_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1558| r1558_3(int &) = Load[r] : &:r1558_2, m1554_22
|
||||
# 1558| m1558_4(int) = Store[?] : &:r1558_3, r1558_1
|
||||
# 1558| m1558_5(unknown) = Chi : total:m1551_6, partial:m1558_4
|
||||
# 1558| m1558_5(unknown) = Chi : total:m1551_9, partial:m1558_4
|
||||
# 1559| r1559_1(int) = Constant[6] :
|
||||
# 1559| r1559_2(glval<int *&>) = VariableAddress[p] :
|
||||
# 1559| r1559_3(int *&) = Load[p] : &:r1559_2, m1554_26
|
||||
@@ -12716,7 +12740,7 @@ ir.cpp:
|
||||
# 1562| m1562_5(int) = Store[w] : &:r1562_1, r1562_4
|
||||
# 1566| r1566_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1566| r1566_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] :
|
||||
# 1566| r1566_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1566_2, m1551_8
|
||||
# 1566| r1566_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1566_2, ~m1559_7
|
||||
# 1566| m1566_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1566_1, r1566_3
|
||||
# 1567| r1567_1(glval<int &>) = VariableAddress[i] :
|
||||
# 1567| r1567_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
@@ -12802,11 +12826,18 @@ ir.cpp:
|
||||
# 1590| m1590_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1590_5
|
||||
# 1590| r1590_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1590_5, m1590_6
|
||||
# 1590| m1590_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1590_7
|
||||
# 1590| v1590_9(void) = NoOp :
|
||||
# 1590| v1590_10(void) = ReturnIndirection[#this] : &:r1590_7, m1590_8
|
||||
# 1590| v1590_11(void) = ReturnVoid :
|
||||
# 1590| v1590_12(void) = AliasedUse : m1590_3
|
||||
# 1590| v1590_13(void) = ExitFunction :
|
||||
# 1590| m1590_9(unknown) = Chi : total:m1590_4, partial:m1590_8
|
||||
# 1590| r1590_10(glval<unknown>) = FunctionAddress[i] :
|
||||
# 1590| v1590_11(void) = Call[i] : func:r1590_10, this:r1590_7
|
||||
# 1590| r1590_12(glval<unknown>) = FunctionAddress[d] :
|
||||
# 1590| v1590_13(void) = Call[d] : func:r1590_12, this:r1590_7
|
||||
# 1590| r1590_14(glval<unknown>) = FunctionAddress[r] :
|
||||
# 1590| v1590_15(void) = Call[r] : func:r1590_14, this:r1590_7
|
||||
# 1590| v1590_16(void) = NoOp :
|
||||
# 1590| v1590_17(void) = ReturnIndirection[#this] : &:r1590_7, m1590_8
|
||||
# 1590| v1590_18(void) = ReturnVoid :
|
||||
# 1590| v1590_19(void) = AliasedUse : ~m1590_9
|
||||
# 1590| v1590_20(void) = ExitFunction :
|
||||
|
||||
# 1590| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&)
|
||||
# 1590| Block 0
|
||||
@@ -12986,22 +13017,23 @@ ir.cpp:
|
||||
# 1630| m1630_4(unknown) = Chi : total:m1630_2, partial:m1630_3
|
||||
# 1631| r1631_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] :
|
||||
# 1631| m1631_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1631_1
|
||||
# 1631| r1631_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleRefGet] :
|
||||
# 1631| v1631_4(void) = Call[StructuredBindingTupleRefGet] : func:r1631_3, this:r1631_1
|
||||
# 1631| m1631_5(unknown) = ^CallSideEffect : ~m1630_4
|
||||
# 1631| m1631_6(unknown) = Chi : total:m1630_4, partial:m1631_5
|
||||
# 1631| m1631_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1631_1
|
||||
# 1631| m1631_8(StructuredBindingTupleRefGet) = Chi : total:m1631_2, partial:m1631_7
|
||||
# 1631| m1631_3(unknown) = Chi : total:m1630_4, partial:m1631_2
|
||||
# 1631| r1631_4(glval<unknown>) = FunctionAddress[StructuredBindingTupleRefGet] :
|
||||
# 1631| v1631_5(void) = Call[StructuredBindingTupleRefGet] : func:r1631_4, this:r1631_1
|
||||
# 1631| m1631_6(unknown) = ^CallSideEffect : ~m1631_3
|
||||
# 1631| m1631_7(unknown) = Chi : total:m1631_3, partial:m1631_6
|
||||
# 1631| m1631_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1631_1
|
||||
# 1631| m1631_9(unknown) = Chi : total:m1631_7, partial:m1631_8
|
||||
# 1634| r1634_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1634| r1634_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] :
|
||||
# 1634| r1634_3(StructuredBindingTupleRefGet) = Load[t] : &:r1634_2, m1631_8
|
||||
# 1634| r1634_3(StructuredBindingTupleRefGet) = Load[t] : &:r1634_2, ~m1631_9
|
||||
# 1634| m1634_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1634_1, r1634_3
|
||||
# 1634| r1634_5(glval<int &>) = VariableAddress[i] :
|
||||
# 1634| r1634_6(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1634| r1634_7(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1634| r1634_8(int &) = Call[get] : func:r1634_7, this:r1634_6
|
||||
# 1634| m1634_9(unknown) = ^CallSideEffect : ~m1631_6
|
||||
# 1634| m1634_10(unknown) = Chi : total:m1631_6, partial:m1634_9
|
||||
# 1634| m1634_9(unknown) = ^CallSideEffect : ~m1631_9
|
||||
# 1634| m1634_10(unknown) = Chi : total:m1631_9, partial:m1634_9
|
||||
# 1634| v1634_11(void) = ^IndirectReadSideEffect[-1] : &:r1634_6, m1634_4
|
||||
# 1634| m1634_12(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1634_6
|
||||
# 1634| m1634_13(StructuredBindingTupleRefGet) = Chi : total:m1634_4, partial:m1634_12
|
||||
@@ -13068,7 +13100,7 @@ ir.cpp:
|
||||
# 1640| m1640_5(int) = Store[w] : &:r1640_1, r1640_4
|
||||
# 1644| r1644_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1644| r1644_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] :
|
||||
# 1644| r1644_3(StructuredBindingTupleRefGet) = Load[t] : &:r1644_2, m1631_8
|
||||
# 1644| r1644_3(StructuredBindingTupleRefGet) = Load[t] : &:r1644_2, ~m1638_6
|
||||
# 1644| m1644_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1644_1, r1644_3
|
||||
# 1645| r1645_1(glval<int &>) = VariableAddress[i] :
|
||||
# 1645| r1645_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] :
|
||||
@@ -13155,11 +13187,16 @@ ir.cpp:
|
||||
# 1657| m1657_6(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1657_5
|
||||
# 1657| r1657_7(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1657_5, m1657_6
|
||||
# 1657| m1657_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1657_7
|
||||
# 1657| v1657_9(void) = NoOp :
|
||||
# 1657| v1657_10(void) = ReturnIndirection[#this] : &:r1657_7, m1657_8
|
||||
# 1657| v1657_11(void) = ReturnVoid :
|
||||
# 1657| v1657_12(void) = AliasedUse : m1657_3
|
||||
# 1657| v1657_13(void) = ExitFunction :
|
||||
# 1657| m1657_9(unknown) = Chi : total:m1657_4, partial:m1657_8
|
||||
# 1657| r1657_10(glval<unknown>) = FunctionAddress[i] :
|
||||
# 1657| v1657_11(void) = Call[i] : func:r1657_10, this:r1657_7
|
||||
# 1657| r1657_12(glval<unknown>) = FunctionAddress[r] :
|
||||
# 1657| v1657_13(void) = Call[r] : func:r1657_12, this:r1657_7
|
||||
# 1657| v1657_14(void) = NoOp :
|
||||
# 1657| v1657_15(void) = ReturnIndirection[#this] : &:r1657_7, m1657_8
|
||||
# 1657| v1657_16(void) = ReturnVoid :
|
||||
# 1657| v1657_17(void) = AliasedUse : ~m1657_9
|
||||
# 1657| v1657_18(void) = ExitFunction :
|
||||
|
||||
# 1658| int StructuredBindingTupleNoRefGet::i
|
||||
# 1658| Block 0
|
||||
@@ -13276,12 +13313,13 @@ ir.cpp:
|
||||
# 1696| m1696_4(unknown) = Chi : total:m1696_2, partial:m1696_3
|
||||
# 1697| r1697_1(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] :
|
||||
# 1697| m1697_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1697_1
|
||||
# 1697| r1697_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleNoRefGet] :
|
||||
# 1697| v1697_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1697_3, this:r1697_1
|
||||
# 1697| m1697_5(unknown) = ^CallSideEffect : ~m1696_4
|
||||
# 1697| m1697_6(unknown) = Chi : total:m1696_4, partial:m1697_5
|
||||
# 1697| m1697_7(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1697_1
|
||||
# 1697| m1697_8(StructuredBindingTupleNoRefGet) = Chi : total:m1697_2, partial:m1697_7
|
||||
# 1697| m1697_3(unknown) = Chi : total:m1696_4, partial:m1697_2
|
||||
# 1697| r1697_4(glval<unknown>) = FunctionAddress[StructuredBindingTupleNoRefGet] :
|
||||
# 1697| v1697_5(void) = Call[StructuredBindingTupleNoRefGet] : func:r1697_4, this:r1697_1
|
||||
# 1697| m1697_6(unknown) = ^CallSideEffect : ~m1697_3
|
||||
# 1697| m1697_7(unknown) = Chi : total:m1697_3, partial:m1697_6
|
||||
# 1697| m1697_8(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1697_1
|
||||
# 1697| m1697_9(unknown) = Chi : total:m1697_7, partial:m1697_8
|
||||
# 1700| r1700_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1700| r1700_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] :
|
||||
# 1700| r1700_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1700_2
|
||||
@@ -13293,11 +13331,11 @@ ir.cpp:
|
||||
# 1700| r1700_9(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1700_8
|
||||
# 1700| r1700_10(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1700| r1700_11(int) = Call[get] : func:r1700_10, this:r1700_9
|
||||
# 1700| m1700_12(unknown) = ^CallSideEffect : ~m1697_6
|
||||
# 1700| m1700_13(unknown) = Chi : total:m1697_6, partial:m1700_12
|
||||
# 1700| v1700_14(void) = ^IndirectReadSideEffect[-1] : &:r1700_9, m1697_8
|
||||
# 1700| m1700_12(unknown) = ^CallSideEffect : ~m1697_9
|
||||
# 1700| m1700_13(unknown) = Chi : total:m1697_9, partial:m1700_12
|
||||
# 1700| v1700_14(void) = ^IndirectReadSideEffect[-1] : &:r1700_9, ~m1700_13
|
||||
# 1700| m1700_15(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_9
|
||||
# 1700| m1700_16(StructuredBindingTupleNoRefGet) = Chi : total:m1697_8, partial:m1700_15
|
||||
# 1700| m1700_16(unknown) = Chi : total:m1700_13, partial:m1700_15
|
||||
# 1700| m1700_17(int) = Store[#temp1700:16] : &:r1700_6, r1700_11
|
||||
# 1700| r1700_18(int &) = CopyValue : r1700_6
|
||||
# 1700| m1700_19(int &&) = Store[i] : &:r1700_5, r1700_18
|
||||
@@ -13307,11 +13345,11 @@ ir.cpp:
|
||||
# 1700| r1700_23(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1700_22
|
||||
# 1700| r1700_24(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1700| r1700_25(int &) = Call[get] : func:r1700_24, this:r1700_23
|
||||
# 1700| m1700_26(unknown) = ^CallSideEffect : ~m1700_13
|
||||
# 1700| m1700_27(unknown) = Chi : total:m1700_13, partial:m1700_26
|
||||
# 1700| v1700_28(void) = ^IndirectReadSideEffect[-1] : &:r1700_23, m1700_16
|
||||
# 1700| m1700_26(unknown) = ^CallSideEffect : ~m1700_16
|
||||
# 1700| m1700_27(unknown) = Chi : total:m1700_16, partial:m1700_26
|
||||
# 1700| v1700_28(void) = ^IndirectReadSideEffect[-1] : &:r1700_23, ~m1700_27
|
||||
# 1700| m1700_29(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_23
|
||||
# 1700| m1700_30(StructuredBindingTupleNoRefGet) = Chi : total:m1700_16, partial:m1700_29
|
||||
# 1700| m1700_30(unknown) = Chi : total:m1700_27, partial:m1700_29
|
||||
# 1700| r1700_31(glval<int>) = CopyValue : r1700_25
|
||||
# 1700| r1700_32(int &) = CopyValue : r1700_31
|
||||
# 1700| m1700_33(int &) = Store[r] : &:r1700_20, r1700_32
|
||||
@@ -13321,11 +13359,11 @@ ir.cpp:
|
||||
# 1700| r1700_37(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1700_36
|
||||
# 1700| r1700_38(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1700| r1700_39(int &&) = Call[get] : func:r1700_38, this:r1700_37
|
||||
# 1700| m1700_40(unknown) = ^CallSideEffect : ~m1700_27
|
||||
# 1700| m1700_41(unknown) = Chi : total:m1700_27, partial:m1700_40
|
||||
# 1700| v1700_42(void) = ^IndirectReadSideEffect[-1] : &:r1700_37, m1700_30
|
||||
# 1700| m1700_40(unknown) = ^CallSideEffect : ~m1700_30
|
||||
# 1700| m1700_41(unknown) = Chi : total:m1700_30, partial:m1700_40
|
||||
# 1700| v1700_42(void) = ^IndirectReadSideEffect[-1] : &:r1700_37, ~m1700_41
|
||||
# 1700| m1700_43(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_37
|
||||
# 1700| m1700_44(StructuredBindingTupleNoRefGet) = Chi : total:m1700_30, partial:m1700_43
|
||||
# 1700| m1700_44(unknown) = Chi : total:m1700_41, partial:m1700_43
|
||||
# 1700| r1700_45(glval<int>) = CopyValue : r1700_39
|
||||
# 1700| r1700_46(int &) = CopyValue : r1700_45
|
||||
# 1700| m1700_47(int &&) = Store[rv] : &:r1700_34, r1700_46
|
||||
@@ -13350,7 +13388,7 @@ ir.cpp:
|
||||
# 1704| r1704_3(int &) = Load[r] : &:r1704_2, m1700_33
|
||||
# 1704| r1704_4(glval<int>) = CopyValue : r1704_3
|
||||
# 1704| m1704_5(int) = Store[?] : &:r1704_4, r1704_1
|
||||
# 1704| m1704_6(unknown) = Chi : total:m1700_41, partial:m1704_5
|
||||
# 1704| m1704_6(unknown) = Chi : total:m1700_44, partial:m1704_5
|
||||
# 1705| r1705_1(glval<int &>) = VariableAddress[rr] :
|
||||
# 1705| r1705_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1705| r1705_3(int &) = Load[r] : &:r1705_2, m1700_33
|
||||
@@ -13375,9 +13413,9 @@ ir.cpp:
|
||||
# 1711| r1711_7(int) = Call[get] : func:r1711_6, this:r1711_5
|
||||
# 1711| m1711_8(unknown) = ^CallSideEffect : ~m1704_6
|
||||
# 1711| m1711_9(unknown) = Chi : total:m1704_6, partial:m1711_8
|
||||
# 1711| v1711_10(void) = ^IndirectReadSideEffect[-1] : &:r1711_5, m1700_44
|
||||
# 1711| v1711_10(void) = ^IndirectReadSideEffect[-1] : &:r1711_5, ~m1711_9
|
||||
# 1711| m1711_11(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1711_5
|
||||
# 1711| m1711_12(StructuredBindingTupleNoRefGet) = Chi : total:m1700_44, partial:m1711_11
|
||||
# 1711| m1711_12(unknown) = Chi : total:m1711_9, partial:m1711_11
|
||||
# 1711| m1711_13(int) = Store[#temp1711:20] : &:r1711_2, r1711_7
|
||||
# 1711| r1711_14(int &) = CopyValue : r1711_2
|
||||
# 1711| m1711_15(int &&) = Store[i] : &:r1711_1, r1711_14
|
||||
@@ -13387,11 +13425,11 @@ ir.cpp:
|
||||
# 1712| r1712_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1712_3
|
||||
# 1712| r1712_5(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1712| r1712_6(int &) = Call[get] : func:r1712_5, this:r1712_4
|
||||
# 1712| m1712_7(unknown) = ^CallSideEffect : ~m1711_9
|
||||
# 1712| m1712_8(unknown) = Chi : total:m1711_9, partial:m1712_7
|
||||
# 1712| v1712_9(void) = ^IndirectReadSideEffect[-1] : &:r1712_4, m1711_12
|
||||
# 1712| m1712_7(unknown) = ^CallSideEffect : ~m1711_12
|
||||
# 1712| m1712_8(unknown) = Chi : total:m1711_12, partial:m1712_7
|
||||
# 1712| v1712_9(void) = ^IndirectReadSideEffect[-1] : &:r1712_4, ~m1712_8
|
||||
# 1712| m1712_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1712_4
|
||||
# 1712| m1712_11(StructuredBindingTupleNoRefGet) = Chi : total:m1711_12, partial:m1712_10
|
||||
# 1712| m1712_11(unknown) = Chi : total:m1712_8, partial:m1712_10
|
||||
# 1712| r1712_12(glval<int>) = CopyValue : r1712_6
|
||||
# 1712| r1712_13(int &) = CopyValue : r1712_12
|
||||
# 1712| m1712_14(int &) = Store[r] : &:r1712_1, r1712_13
|
||||
@@ -13401,11 +13439,11 @@ ir.cpp:
|
||||
# 1713| r1713_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1713_3
|
||||
# 1713| r1713_5(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1713| r1713_6(int &&) = Call[get] : func:r1713_5, this:r1713_4
|
||||
# 1713| m1713_7(unknown) = ^CallSideEffect : ~m1712_8
|
||||
# 1713| m1713_8(unknown) = Chi : total:m1712_8, partial:m1713_7
|
||||
# 1713| v1713_9(void) = ^IndirectReadSideEffect[-1] : &:r1713_4, m1712_11
|
||||
# 1713| m1713_7(unknown) = ^CallSideEffect : ~m1712_11
|
||||
# 1713| m1713_8(unknown) = Chi : total:m1712_11, partial:m1713_7
|
||||
# 1713| v1713_9(void) = ^IndirectReadSideEffect[-1] : &:r1713_4, ~m1713_8
|
||||
# 1713| m1713_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1713_4
|
||||
# 1713| m1713_11(StructuredBindingTupleNoRefGet) = Chi : total:m1712_11, partial:m1713_10
|
||||
# 1713| m1713_11(unknown) = Chi : total:m1713_8, partial:m1713_10
|
||||
# 1713| r1713_12(glval<int>) = CopyValue : r1713_6
|
||||
# 1713| r1713_13(int &) = CopyValue : r1713_12
|
||||
# 1713| m1713_14(int &&) = Store[rv] : &:r1713_1, r1713_13
|
||||
@@ -13430,7 +13468,7 @@ ir.cpp:
|
||||
# 1717| r1717_3(int &) = Load[r] : &:r1717_2, m1712_14
|
||||
# 1717| r1717_4(glval<int>) = CopyValue : r1717_3
|
||||
# 1717| m1717_5(int) = Store[?] : &:r1717_4, r1717_1
|
||||
# 1717| m1717_6(unknown) = Chi : total:m1713_8, partial:m1717_5
|
||||
# 1717| m1717_6(unknown) = Chi : total:m1713_11, partial:m1717_5
|
||||
# 1718| r1718_1(glval<int &>) = VariableAddress[rr] :
|
||||
# 1718| r1718_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1718| r1718_3(int &) = Load[r] : &:r1718_2, m1712_14
|
||||
@@ -21423,21 +21461,47 @@ ir.cpp:
|
||||
|
||||
# 2897| void StructInit::StructInit(int)
|
||||
# 2897| Block 0
|
||||
# 2897| v2897_1(void) = EnterFunction :
|
||||
# 2897| m2897_2(unknown) = AliasedDefinition :
|
||||
# 2897| m2897_3(unknown) = InitializeNonLocal :
|
||||
# 2897| m2897_4(unknown) = Chi : total:m2897_2, partial:m2897_3
|
||||
# 2897| r2897_5(glval<unknown>) = VariableAddress[#this] :
|
||||
# 2897| m2897_6(glval<StructInit>) = InitializeParameter[#this] : &:r2897_5
|
||||
# 2897| r2897_7(glval<StructInit>) = Load[#this] : &:r2897_5, m2897_6
|
||||
# 2897| m2897_8(StructInit) = InitializeIndirection[#this] : &:r2897_7
|
||||
# 2897| r2897_9(glval<int>) = VariableAddress[j] :
|
||||
# 2897| m2897_10(int) = InitializeParameter[j] : &:r2897_9
|
||||
# 2897| v2897_11(void) = NoOp :
|
||||
# 2897| v2897_12(void) = ReturnIndirection[#this] : &:r2897_7, m2897_8
|
||||
# 2897| v2897_13(void) = ReturnVoid :
|
||||
# 2897| v2897_14(void) = AliasedUse : m2897_3
|
||||
# 2897| v2897_15(void) = ExitFunction :
|
||||
# 2897| v2897_1(void) = EnterFunction :
|
||||
# 2897| m2897_2(unknown) = AliasedDefinition :
|
||||
# 2897| m2897_3(unknown) = InitializeNonLocal :
|
||||
# 2897| m2897_4(unknown) = Chi : total:m2897_2, partial:m2897_3
|
||||
# 2897| r2897_5(glval<unknown>) = VariableAddress[#this] :
|
||||
# 2897| m2897_6(glval<StructInit>) = InitializeParameter[#this] : &:r2897_5
|
||||
# 2897| r2897_7(glval<StructInit>) = Load[#this] : &:r2897_5, m2897_6
|
||||
# 2897| m2897_8(StructInit) = InitializeIndirection[#this] : &:r2897_7
|
||||
# 2897| m2897_9(unknown) = Chi : total:m2897_4, partial:m2897_8
|
||||
# 2897| r2897_10(glval<int>) = VariableAddress[j] :
|
||||
# 2897| m2897_11(int) = InitializeParameter[j] : &:r2897_10
|
||||
# 2897| r2897_12(glval<unknown>) = FunctionAddress[i] :
|
||||
# 2897| v2897_13(void) = Call[i] : func:r2897_12, this:r2897_7
|
||||
# 2897| r2897_14(glval<int>) = FieldAddress[j] : r2897_7
|
||||
# 2897| r2897_15(glval<int>) = VariableAddress[j] :
|
||||
# 2897| r2897_16(int) = Load[j] : &:r2897_15, m2897_11
|
||||
# 2897| m2897_17(int) = Store[?] : &:r2897_14, r2897_16
|
||||
# 2897| m2897_18(unknown) = Chi : total:m2897_9, partial:m2897_17
|
||||
# 2897| r2897_19(glval<unknown>) = FunctionAddress[k] :
|
||||
# 2897| v2897_20(void) = Call[k] : func:r2897_19, this:r2897_7
|
||||
# 2897| r2897_21(glval<unknown>) = FunctionAddress[l] :
|
||||
# 2897| v2897_22(void) = Call[l] : func:r2897_21, this:r2897_7
|
||||
# 2897| r2897_23(glval<unknown>) = FunctionAddress[m] :
|
||||
# 2897| v2897_24(void) = Call[m] : func:r2897_23, this:r2897_7
|
||||
# 2897| r2897_25(glval<int>) = FieldAddress[n] : r2897_7
|
||||
# 2897| r2897_26(glval<unknown>) = VariableAddress[#this] :
|
||||
# 2897| r2897_27(StructInit *) = Load[#this] : &:r2897_26, m2897_6
|
||||
# 2897| r2897_28(glval<unknown>) = FunctionAddress[get_val] :
|
||||
# 2897| r2897_29(int) = Call[get_val] : func:r2897_28, this:r2897_27
|
||||
# 2897| m2897_30(unknown) = ^CallSideEffect : ~m2897_18
|
||||
# 2897| m2897_31(unknown) = Chi : total:m2897_18, partial:m2897_30
|
||||
# 2897| v2897_32(void) = ^IndirectReadSideEffect[-1] : &:r2897_27, ~m2897_31
|
||||
# 2897| m2897_33(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_27
|
||||
# 2897| m2897_34(unknown) = Chi : total:m2897_31, partial:m2897_33
|
||||
# 2897| m2897_35(int) = Store[?] : &:r2897_25, r2897_29
|
||||
# 2897| m2897_36(unknown) = Chi : total:m2897_34, partial:m2897_35
|
||||
# 2897| v2897_37(void) = NoOp :
|
||||
# 2897| v2897_38(void) = ReturnIndirection[#this] : &:r2897_7, ~m2897_36
|
||||
# 2897| v2897_39(void) = ReturnVoid :
|
||||
# 2897| v2897_40(void) = AliasedUse : ~m2897_36
|
||||
# 2897| v2897_41(void) = ExitFunction :
|
||||
|
||||
# 2899| void StructInit::StructInit()
|
||||
# 2899| Block 0
|
||||
@@ -21449,15 +21513,28 @@ ir.cpp:
|
||||
# 2899| m2899_6(glval<StructInit>) = InitializeParameter[#this] : &:r2899_5
|
||||
# 2899| r2899_7(glval<StructInit>) = Load[#this] : &:r2899_5, m2899_6
|
||||
# 2899| m2899_8(StructInit) = InitializeIndirection[#this] : &:r2899_7
|
||||
# 2899| r2899_9(glval<int>) = FieldAddress[i] : r2899_7
|
||||
# 2899| r2899_10(int) = Constant[41] :
|
||||
# 2899| m2899_11(int) = Store[?] : &:r2899_9, r2899_10
|
||||
# 2899| m2899_12(unknown) = Chi : total:m2899_8, partial:m2899_11
|
||||
# 2899| v2899_13(void) = NoOp :
|
||||
# 2899| v2899_14(void) = ReturnIndirection[#this] : &:r2899_7, m2899_12
|
||||
# 2899| v2899_15(void) = ReturnVoid :
|
||||
# 2899| v2899_16(void) = AliasedUse : m2899_3
|
||||
# 2899| v2899_17(void) = ExitFunction :
|
||||
# 2899| m2899_9(unknown) = Chi : total:m2899_4, partial:m2899_8
|
||||
# 2899| r2899_10(glval<int>) = FieldAddress[i] : r2899_7
|
||||
# 2899| r2899_11(int) = Constant[41] :
|
||||
# 2899| m2899_12(int) = Store[?] : &:r2899_10, r2899_11
|
||||
# 2899| m2899_13(unknown) = Chi : total:m2899_9, partial:m2899_12
|
||||
# 2899| r2899_14(glval<unknown>) = FunctionAddress[j] :
|
||||
# 2899| v2899_15(void) = Call[j] : func:r2899_14, this:r2899_7
|
||||
# 2899| r2899_16(glval<int>) = FieldAddress[k] : r2899_7
|
||||
# 2899| r2899_17(int) = Constant[41] :
|
||||
# 2899| m2899_18(int) = Store[?] : &:r2899_16, r2899_17
|
||||
# 2899| m2899_19(unknown) = Chi : total:m2899_13, partial:m2899_18
|
||||
# 2899| r2899_20(glval<unknown>) = FunctionAddress[l] :
|
||||
# 2899| v2899_21(void) = Call[l] : func:r2899_20, this:r2899_7
|
||||
# 2899| r2899_22(glval<unknown>) = FunctionAddress[m] :
|
||||
# 2899| v2899_23(void) = Call[m] : func:r2899_22, this:r2899_7
|
||||
# 2899| r2899_24(glval<unknown>) = FunctionAddress[n] :
|
||||
# 2899| v2899_25(void) = Call[n] : func:r2899_24, this:r2899_7
|
||||
# 2899| v2899_26(void) = NoOp :
|
||||
# 2899| v2899_27(void) = ReturnIndirection[#this] : &:r2899_7, ~m2899_19
|
||||
# 2899| v2899_28(void) = ReturnVoid :
|
||||
# 2899| v2899_29(void) = AliasedUse : ~m2899_19
|
||||
# 2899| v2899_30(void) = ExitFunction :
|
||||
|
||||
# 2901| int StructInit::get_val()
|
||||
# 2901| Block 0
|
||||
|
||||
@@ -20,10 +20,6 @@ multipleIRTypes
|
||||
lostReachability
|
||||
backEdgeCountMismatch
|
||||
useNotDominatedByDefinition
|
||||
| ir.cpp:1537:8:1537:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1537:8:1537:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() |
|
||||
| ir.cpp:2897:5:2897:14 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:2897:5:2897:14 | void StructInit::StructInit(int) | void StructInit::StructInit(int) |
|
||||
| ir.cpp:2897:5:2897:14 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:2897:5:2897:14 | void StructInit::StructInit(int) | void StructInit::StructInit(int) |
|
||||
| ir.cpp:2899:5:2899:14 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:2899:5:2899:14 | void StructInit::StructInit() | void StructInit::StructInit() |
|
||||
switchInstructionWithoutDefaultEdge
|
||||
notMarkedAsConflated
|
||||
wronglyMarkedAsConflated
|
||||
|
||||
@@ -11346,11 +11346,13 @@ ir.cpp:
|
||||
# 1533| mu1533_5(glval<StructuredBindingDataMemberMemberStruct>) = InitializeParameter[#this] : &:r1533_4
|
||||
# 1533| r1533_6(glval<StructuredBindingDataMemberMemberStruct>) = Load[#this] : &:r1533_4, ~m?
|
||||
# 1533| mu1533_7(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1533_6
|
||||
# 1533| v1533_8(void) = NoOp :
|
||||
# 1533| v1533_9(void) = ReturnIndirection[#this] : &:r1533_6, ~m?
|
||||
# 1533| v1533_10(void) = ReturnVoid :
|
||||
# 1533| v1533_11(void) = AliasedUse : ~m?
|
||||
# 1533| v1533_12(void) = ExitFunction :
|
||||
# 1533| r1533_8(glval<unknown>) = FunctionAddress[x] :
|
||||
# 1533| v1533_9(void) = Call[x] : func:r1533_8, this:r1533_6
|
||||
# 1533| v1533_10(void) = NoOp :
|
||||
# 1533| v1533_11(void) = ReturnIndirection[#this] : &:r1533_6, ~m?
|
||||
# 1533| v1533_12(void) = ReturnVoid :
|
||||
# 1533| v1533_13(void) = AliasedUse : ~m?
|
||||
# 1533| v1533_14(void) = ExitFunction :
|
||||
|
||||
# 1534| int StructuredBindingDataMemberMemberStruct::x
|
||||
# 1534| Block 0
|
||||
@@ -11370,29 +11372,35 @@ ir.cpp:
|
||||
|
||||
# 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct()
|
||||
# 1537| Block 0
|
||||
# 1537| v1537_1(void) = EnterFunction :
|
||||
# 1537| mu1537_2(unknown) = AliasedDefinition :
|
||||
# 1537| mu1537_3(unknown) = InitializeNonLocal :
|
||||
# 1537| r1537_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1537| mu1537_5(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1537_4
|
||||
# 1537| r1537_6(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1537_4, ~m?
|
||||
# 1537| mu1537_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_6
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 1537| Block 1
|
||||
# 1537| r1537_8(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1537_6
|
||||
# 1537| r1537_9(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberMemberStruct] :
|
||||
# 1537| v1537_10(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1537_9, this:r1537_8
|
||||
# 1537| mu1537_11(unknown) = ^CallSideEffect : ~m?
|
||||
# 1537| mu1537_12(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_8
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 1537| Block 2
|
||||
# 1537| v1537_13(void) = NoOp :
|
||||
# 1537| v1537_14(void) = ReturnIndirection[#this] : &:r1537_6, ~m?
|
||||
# 1537| v1537_15(void) = ReturnVoid :
|
||||
# 1537| v1537_16(void) = AliasedUse : ~m?
|
||||
# 1537| v1537_17(void) = ExitFunction :
|
||||
# 1537| v1537_1(void) = EnterFunction :
|
||||
# 1537| mu1537_2(unknown) = AliasedDefinition :
|
||||
# 1537| mu1537_3(unknown) = InitializeNonLocal :
|
||||
# 1537| r1537_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1537| mu1537_5(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1537_4
|
||||
# 1537| r1537_6(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1537_4, ~m?
|
||||
# 1537| mu1537_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_6
|
||||
# 1537| r1537_8(glval<unknown>) = FunctionAddress[i] :
|
||||
# 1537| v1537_9(void) = Call[i] : func:r1537_8, this:r1537_6
|
||||
# 1537| r1537_10(glval<unknown>) = FunctionAddress[d] :
|
||||
# 1537| v1537_11(void) = Call[d] : func:r1537_10, this:r1537_6
|
||||
# 1537| r1537_12(glval<unknown>) = FunctionAddress[r] :
|
||||
# 1537| v1537_13(void) = Call[r] : func:r1537_12, this:r1537_6
|
||||
# 1537| r1537_14(glval<unknown>) = FunctionAddress[p] :
|
||||
# 1537| v1537_15(void) = Call[p] : func:r1537_14, this:r1537_6
|
||||
# 1537| r1537_16(glval<unknown>) = FunctionAddress[xs] :
|
||||
# 1537| v1537_17(void) = Call[xs] : func:r1537_16, this:r1537_6
|
||||
# 1537| r1537_18(glval<unknown>) = FunctionAddress[r_alt] :
|
||||
# 1537| v1537_19(void) = Call[r_alt] : func:r1537_18, this:r1537_6
|
||||
# 1537| r1537_20(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1537_6
|
||||
# 1537| r1537_21(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberMemberStruct] :
|
||||
# 1537| v1537_22(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1537_21, this:r1537_20
|
||||
# 1537| mu1537_23(unknown) = ^CallSideEffect : ~m?
|
||||
# 1537| mu1537_24(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_20
|
||||
# 1537| v1537_25(void) = NoOp :
|
||||
# 1537| v1537_26(void) = ReturnIndirection[#this] : &:r1537_6, ~m?
|
||||
# 1537| v1537_27(void) = ReturnVoid :
|
||||
# 1537| v1537_28(void) = AliasedUse : ~m?
|
||||
# 1537| v1537_29(void) = ExitFunction :
|
||||
|
||||
# 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&)
|
||||
# 1537| Block 0
|
||||
@@ -11752,11 +11760,17 @@ ir.cpp:
|
||||
# 1590| mu1590_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1590_4
|
||||
# 1590| r1590_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1590_4, ~m?
|
||||
# 1590| mu1590_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1590_6
|
||||
# 1590| v1590_8(void) = NoOp :
|
||||
# 1590| v1590_9(void) = ReturnIndirection[#this] : &:r1590_6, ~m?
|
||||
# 1590| v1590_10(void) = ReturnVoid :
|
||||
# 1590| v1590_11(void) = AliasedUse : ~m?
|
||||
# 1590| v1590_12(void) = ExitFunction :
|
||||
# 1590| r1590_8(glval<unknown>) = FunctionAddress[i] :
|
||||
# 1590| v1590_9(void) = Call[i] : func:r1590_8, this:r1590_6
|
||||
# 1590| r1590_10(glval<unknown>) = FunctionAddress[d] :
|
||||
# 1590| v1590_11(void) = Call[d] : func:r1590_10, this:r1590_6
|
||||
# 1590| r1590_12(glval<unknown>) = FunctionAddress[r] :
|
||||
# 1590| v1590_13(void) = Call[r] : func:r1590_12, this:r1590_6
|
||||
# 1590| v1590_14(void) = NoOp :
|
||||
# 1590| v1590_15(void) = ReturnIndirection[#this] : &:r1590_6, ~m?
|
||||
# 1590| v1590_16(void) = ReturnVoid :
|
||||
# 1590| v1590_17(void) = AliasedUse : ~m?
|
||||
# 1590| v1590_18(void) = ExitFunction :
|
||||
|
||||
# 1590| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&)
|
||||
# 1590| Block 0
|
||||
@@ -12071,11 +12085,15 @@ ir.cpp:
|
||||
# 1657| mu1657_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1657_4
|
||||
# 1657| r1657_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1657_4, ~m?
|
||||
# 1657| mu1657_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1657_6
|
||||
# 1657| v1657_8(void) = NoOp :
|
||||
# 1657| v1657_9(void) = ReturnIndirection[#this] : &:r1657_6, ~m?
|
||||
# 1657| v1657_10(void) = ReturnVoid :
|
||||
# 1657| v1657_11(void) = AliasedUse : ~m?
|
||||
# 1657| v1657_12(void) = ExitFunction :
|
||||
# 1657| r1657_8(glval<unknown>) = FunctionAddress[i] :
|
||||
# 1657| v1657_9(void) = Call[i] : func:r1657_8, this:r1657_6
|
||||
# 1657| r1657_10(glval<unknown>) = FunctionAddress[r] :
|
||||
# 1657| v1657_11(void) = Call[r] : func:r1657_10, this:r1657_6
|
||||
# 1657| v1657_12(void) = NoOp :
|
||||
# 1657| v1657_13(void) = ReturnIndirection[#this] : &:r1657_6, ~m?
|
||||
# 1657| v1657_14(void) = ReturnVoid :
|
||||
# 1657| v1657_15(void) = AliasedUse : ~m?
|
||||
# 1657| v1657_16(void) = ExitFunction :
|
||||
|
||||
# 1658| int StructuredBindingTupleNoRefGet::i
|
||||
# 1658| Block 0
|
||||
@@ -19513,42 +19531,41 @@ ir.cpp:
|
||||
|
||||
# 2897| void StructInit::StructInit(int)
|
||||
# 2897| Block 0
|
||||
# 2897| v2897_1(void) = EnterFunction :
|
||||
# 2897| mu2897_2(unknown) = AliasedDefinition :
|
||||
# 2897| mu2897_3(unknown) = InitializeNonLocal :
|
||||
# 2897| r2897_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 2897| mu2897_5(glval<StructInit>) = InitializeParameter[#this] : &:r2897_4
|
||||
# 2897| r2897_6(glval<StructInit>) = Load[#this] : &:r2897_4, ~m?
|
||||
# 2897| mu2897_7(StructInit) = InitializeIndirection[#this] : &:r2897_6
|
||||
# 2897| r2897_8(glval<int>) = VariableAddress[j] :
|
||||
# 2897| mu2897_9(int) = InitializeParameter[j] : &:r2897_8
|
||||
#-----| Goto -> Block 3
|
||||
|
||||
# 2897| Block 1
|
||||
# 2897| r2897_10(glval<int>) = FieldAddress[j] : r2897_6
|
||||
# 2897| r2897_11(glval<int>) = VariableAddress[j] :
|
||||
# 2897| r2897_12(int) = Load[j] : &:r2897_11, ~m?
|
||||
# 2897| mu2897_13(int) = Store[?] : &:r2897_10, r2897_12
|
||||
#-----| Goto -> Block 3
|
||||
|
||||
# 2897| Block 2
|
||||
# 2897| r2897_14(glval<int>) = FieldAddress[n] : r2897_6
|
||||
# 2897| r2897_15(glval<unknown>) = VariableAddress[#this] :
|
||||
# 2897| r2897_16(StructInit *) = Load[#this] : &:r2897_15, ~m?
|
||||
# 2897| r2897_17(glval<unknown>) = FunctionAddress[get_val] :
|
||||
# 2897| r2897_18(int) = Call[get_val] : func:r2897_17, this:r2897_16
|
||||
# 2897| mu2897_19(unknown) = ^CallSideEffect : ~m?
|
||||
# 2897| v2897_20(void) = ^IndirectReadSideEffect[-1] : &:r2897_16, ~m?
|
||||
# 2897| mu2897_21(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_16
|
||||
# 2897| mu2897_22(int) = Store[?] : &:r2897_14, r2897_18
|
||||
#-----| Goto -> Block 3
|
||||
|
||||
# 2897| Block 3
|
||||
# 2897| v2897_23(void) = NoOp :
|
||||
# 2897| v2897_24(void) = ReturnIndirection[#this] : &:r2897_6, ~m?
|
||||
# 2897| v2897_25(void) = ReturnVoid :
|
||||
# 2897| v2897_26(void) = AliasedUse : ~m?
|
||||
# 2897| v2897_27(void) = ExitFunction :
|
||||
# 2897| v2897_1(void) = EnterFunction :
|
||||
# 2897| mu2897_2(unknown) = AliasedDefinition :
|
||||
# 2897| mu2897_3(unknown) = InitializeNonLocal :
|
||||
# 2897| r2897_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 2897| mu2897_5(glval<StructInit>) = InitializeParameter[#this] : &:r2897_4
|
||||
# 2897| r2897_6(glval<StructInit>) = Load[#this] : &:r2897_4, ~m?
|
||||
# 2897| mu2897_7(StructInit) = InitializeIndirection[#this] : &:r2897_6
|
||||
# 2897| r2897_8(glval<int>) = VariableAddress[j] :
|
||||
# 2897| mu2897_9(int) = InitializeParameter[j] : &:r2897_8
|
||||
# 2897| r2897_10(glval<unknown>) = FunctionAddress[i] :
|
||||
# 2897| v2897_11(void) = Call[i] : func:r2897_10, this:r2897_6
|
||||
# 2897| r2897_12(glval<int>) = FieldAddress[j] : r2897_6
|
||||
# 2897| r2897_13(glval<int>) = VariableAddress[j] :
|
||||
# 2897| r2897_14(int) = Load[j] : &:r2897_13, ~m?
|
||||
# 2897| mu2897_15(int) = Store[?] : &:r2897_12, r2897_14
|
||||
# 2897| r2897_16(glval<unknown>) = FunctionAddress[k] :
|
||||
# 2897| v2897_17(void) = Call[k] : func:r2897_16, this:r2897_6
|
||||
# 2897| r2897_18(glval<unknown>) = FunctionAddress[l] :
|
||||
# 2897| v2897_19(void) = Call[l] : func:r2897_18, this:r2897_6
|
||||
# 2897| r2897_20(glval<unknown>) = FunctionAddress[m] :
|
||||
# 2897| v2897_21(void) = Call[m] : func:r2897_20, this:r2897_6
|
||||
# 2897| r2897_22(glval<int>) = FieldAddress[n] : r2897_6
|
||||
# 2897| r2897_23(glval<unknown>) = VariableAddress[#this] :
|
||||
# 2897| r2897_24(StructInit *) = Load[#this] : &:r2897_23, ~m?
|
||||
# 2897| r2897_25(glval<unknown>) = FunctionAddress[get_val] :
|
||||
# 2897| r2897_26(int) = Call[get_val] : func:r2897_25, this:r2897_24
|
||||
# 2897| mu2897_27(unknown) = ^CallSideEffect : ~m?
|
||||
# 2897| v2897_28(void) = ^IndirectReadSideEffect[-1] : &:r2897_24, ~m?
|
||||
# 2897| mu2897_29(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_24
|
||||
# 2897| mu2897_30(int) = Store[?] : &:r2897_22, r2897_26
|
||||
# 2897| v2897_31(void) = NoOp :
|
||||
# 2897| v2897_32(void) = ReturnIndirection[#this] : &:r2897_6, ~m?
|
||||
# 2897| v2897_33(void) = ReturnVoid :
|
||||
# 2897| v2897_34(void) = AliasedUse : ~m?
|
||||
# 2897| v2897_35(void) = ExitFunction :
|
||||
|
||||
# 2899| void StructInit::StructInit()
|
||||
# 2899| Block 0
|
||||
@@ -19562,20 +19579,22 @@ ir.cpp:
|
||||
# 2899| r2899_8(glval<int>) = FieldAddress[i] : r2899_6
|
||||
# 2899| r2899_9(int) = Constant[41] :
|
||||
# 2899| mu2899_10(int) = Store[?] : &:r2899_8, r2899_9
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 2899| Block 1
|
||||
# 2899| r2899_11(glval<int>) = FieldAddress[k] : r2899_6
|
||||
# 2899| r2899_12(int) = Constant[41] :
|
||||
# 2899| mu2899_13(int) = Store[?] : &:r2899_11, r2899_12
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 2899| Block 2
|
||||
# 2899| v2899_14(void) = NoOp :
|
||||
# 2899| v2899_15(void) = ReturnIndirection[#this] : &:r2899_6, ~m?
|
||||
# 2899| v2899_16(void) = ReturnVoid :
|
||||
# 2899| v2899_17(void) = AliasedUse : ~m?
|
||||
# 2899| v2899_18(void) = ExitFunction :
|
||||
# 2899| r2899_11(glval<unknown>) = FunctionAddress[j] :
|
||||
# 2899| v2899_12(void) = Call[j] : func:r2899_11, this:r2899_6
|
||||
# 2899| r2899_13(glval<int>) = FieldAddress[k] : r2899_6
|
||||
# 2899| r2899_14(int) = Constant[41] :
|
||||
# 2899| mu2899_15(int) = Store[?] : &:r2899_13, r2899_14
|
||||
# 2899| r2899_16(glval<unknown>) = FunctionAddress[l] :
|
||||
# 2899| v2899_17(void) = Call[l] : func:r2899_16, this:r2899_6
|
||||
# 2899| r2899_18(glval<unknown>) = FunctionAddress[m] :
|
||||
# 2899| v2899_19(void) = Call[m] : func:r2899_18, this:r2899_6
|
||||
# 2899| r2899_20(glval<unknown>) = FunctionAddress[n] :
|
||||
# 2899| v2899_21(void) = Call[n] : func:r2899_20, this:r2899_6
|
||||
# 2899| v2899_22(void) = NoOp :
|
||||
# 2899| v2899_23(void) = ReturnIndirection[#this] : &:r2899_6, ~m?
|
||||
# 2899| v2899_24(void) = ReturnVoid :
|
||||
# 2899| v2899_25(void) = AliasedUse : ~m?
|
||||
# 2899| v2899_26(void) = ExitFunction :
|
||||
|
||||
# 2901| int StructInit::get_val()
|
||||
# 2901| Block 0
|
||||
|
||||
Reference in New Issue
Block a user