mirror of
https://github.com/github/codeql.git
synced 2026-04-29 10:45:15 +02:00
C++: Ensure we use lvalue reference types for structured bindings
This also adds a test for rvalue reference uses in the tuple structured binding case.
This commit is contained in:
@@ -903,7 +903,7 @@ class TranslatedStructuredBindingVariableAccess extends TranslatedNonConstantExp
|
||||
}
|
||||
|
||||
private Type getReferenceType() {
|
||||
result.(ReferenceType).getBaseType() = expr.getUnderlyingType()
|
||||
result.(LValueReferenceType).getBaseType() = expr.getUnderlyingType()
|
||||
}
|
||||
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
|
||||
@@ -41,7 +41,7 @@ Type getVariableType(Variable v) {
|
||||
not exists(v.getInitializer()) and result = v.getType()
|
||||
else
|
||||
if isNonReferenceStructuredBinding(v)
|
||||
then exists(ReferenceType r | r.getBaseType() = v.getUnderlyingType() | result = r)
|
||||
then exists(LValueReferenceType r | r.getBaseType() = v.getUnderlyingType() | result = r)
|
||||
else result = v.getType()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -12431,6 +12431,395 @@ ir.cpp:
|
||||
# 1602| Type = [IntType] int
|
||||
# 1602| ValueCategory = prvalue(load)
|
||||
# 1604| getStmt(3): [ReturnStmt] return ...
|
||||
# 1606| [CopyAssignmentOperator] StructuredBindingTupleNoRefGet& StructuredBindingTupleNoRefGet::operator=(StructuredBindingTupleNoRefGet const&)
|
||||
# 1606| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const StructuredBindingTupleNoRefGet &
|
||||
# 1606| [Constructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet()
|
||||
# 1606| <params>:
|
||||
# 1606| <initializations>:
|
||||
# 1606| getInitializer(0): [ConstructorFieldInit] constructor init of field i
|
||||
# 1606| Type = [IntType] int
|
||||
# 1606| ValueCategory = prvalue
|
||||
# 1606| getInitializer(1): [ConstructorFieldInit] constructor init of field r
|
||||
# 1606| Type = [LValueReferenceType] int &
|
||||
# 1606| ValueCategory = prvalue
|
||||
# 1606| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 1606| getStmt(0): [ReturnStmt] return ...
|
||||
# 1606| [CopyConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet const&)
|
||||
# 1606| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const StructuredBindingTupleNoRefGet &
|
||||
# 1606| [MoveConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet&&)
|
||||
# 1606| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] StructuredBindingTupleNoRefGet &&
|
||||
# 1611| [MemberFunction,TemplateFunction] type StructuredBindingTupleNoRefGet::get<int i>()
|
||||
# 1611| <params>:
|
||||
# 1615| [CopyAssignmentOperator] std::tuple_size<StructuredBindingTupleNoRefGet>& std::tuple_size<StructuredBindingTupleNoRefGet>::operator=(std::tuple_size<StructuredBindingTupleNoRefGet> const&)
|
||||
# 1615| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const tuple_size<StructuredBindingTupleNoRefGet> &
|
||||
# 1615| [MoveAssignmentOperator] std::tuple_size<StructuredBindingTupleNoRefGet>& std::tuple_size<StructuredBindingTupleNoRefGet>::operator=(std::tuple_size<StructuredBindingTupleNoRefGet>&&)
|
||||
# 1615| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] tuple_size<StructuredBindingTupleNoRefGet> &&
|
||||
# 1620| [CopyAssignmentOperator] std::tuple_element<int 0, StructuredBindingTupleNoRefGet>& std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 0, StructuredBindingTupleNoRefGet> const&)
|
||||
# 1620| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const tuple_element<0, StructuredBindingTupleNoRefGet> &
|
||||
# 1620| [MoveAssignmentOperator] std::tuple_element<int 0, StructuredBindingTupleNoRefGet>& std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 0, StructuredBindingTupleNoRefGet>&&)
|
||||
# 1620| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] tuple_element<0, StructuredBindingTupleNoRefGet> &&
|
||||
# 1624| [CopyAssignmentOperator] std::tuple_element<int 1, StructuredBindingTupleNoRefGet>& std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 1, StructuredBindingTupleNoRefGet> const&)
|
||||
# 1624| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const tuple_element<1, StructuredBindingTupleNoRefGet> &
|
||||
# 1624| [MoveAssignmentOperator] std::tuple_element<int 1, StructuredBindingTupleNoRefGet>& std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 1, StructuredBindingTupleNoRefGet>&&)
|
||||
# 1624| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] tuple_element<1, StructuredBindingTupleNoRefGet> &&
|
||||
# 1628| [CopyAssignmentOperator] std::tuple_element<int 2, StructuredBindingTupleNoRefGet>& std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 2, StructuredBindingTupleNoRefGet> const&)
|
||||
# 1628| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const tuple_element<2, StructuredBindingTupleNoRefGet> &
|
||||
# 1628| [MoveAssignmentOperator] std::tuple_element<int 2, StructuredBindingTupleNoRefGet>& std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 2, StructuredBindingTupleNoRefGet>&&)
|
||||
# 1628| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] tuple_element<2, StructuredBindingTupleNoRefGet> &&
|
||||
# 1633| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 0>()
|
||||
# 1633| <params>:
|
||||
# 1633| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 1634| getStmt(0): [ReturnStmt] return ...
|
||||
# 1634| getExpr(): [PointerFieldAccess] i
|
||||
# 1634| Type = [IntType] int
|
||||
# 1634| ValueCategory = prvalue(load)
|
||||
# 1634| getQualifier(): [ThisExpr] this
|
||||
# 1634| Type = [PointerType] StructuredBindingTupleNoRefGet *
|
||||
# 1634| ValueCategory = prvalue(load)
|
||||
# 1637| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 1>()
|
||||
# 1637| <params>:
|
||||
# 1637| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 1638| getStmt(0): [ReturnStmt] return ...
|
||||
# 1638| getExpr(): [PointerFieldAccess] r
|
||||
# 1638| Type = [LValueReferenceType] int &
|
||||
# 1638| ValueCategory = prvalue(load)
|
||||
# 1638| getQualifier(): [ThisExpr] this
|
||||
# 1638| Type = [PointerType] StructuredBindingTupleNoRefGet *
|
||||
# 1638| ValueCategory = prvalue(load)
|
||||
# 1638| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1638| Type = [LValueReferenceType] int &
|
||||
# 1638| ValueCategory = prvalue
|
||||
# 1638| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1638| Type = [IntType] int
|
||||
# 1638| ValueCategory = lvalue
|
||||
# 1641| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 2>()
|
||||
# 1641| <params>:
|
||||
# 1641| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 1642| getStmt(0): [ReturnStmt] return ...
|
||||
# 1642| getExpr(): [Literal] 5
|
||||
# 1642| Type = [IntType] int
|
||||
# 1642| Value = [Literal] 5
|
||||
# 1642| ValueCategory = prvalue
|
||||
# 1642| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1642| Type = [LValueReferenceType] int &
|
||||
# 1642| ValueCategory = prvalue
|
||||
# 1642| getExpr(): [TemporaryObjectExpr] temporary object
|
||||
# 1642| Type = [IntType] int
|
||||
# 1642| ValueCategory = lvalue
|
||||
# 1645| [TopLevelFunction] void tuple_structured_binding_no_ref_get()
|
||||
# 1645| <params>:
|
||||
# 1645| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 1646| getStmt(0): [DeclStmt] declaration
|
||||
# 1646| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t
|
||||
# 1646| Type = [Struct] StructuredBindingTupleNoRefGet
|
||||
# 1646| getVariable().getInitializer(): [Initializer] initializer for t
|
||||
# 1646| getExpr(): [ConstructorCall] call to StructuredBindingTupleNoRefGet
|
||||
# 1646| Type = [VoidType] void
|
||||
# 1646| ValueCategory = prvalue
|
||||
# 1648| getStmt(1): [BlockStmt] { ... }
|
||||
# 1649| getStmt(0): [DeclStmt] declaration
|
||||
# 1649| getDeclarationEntry(0): (no string representation)
|
||||
# 1649| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet &
|
||||
# 1649| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable)
|
||||
# 1649| getExpr(): [VariableAccess] t
|
||||
# 1649| Type = [Struct] StructuredBindingTupleNoRefGet
|
||||
# 1649| ValueCategory = lvalue
|
||||
# 1649| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1649| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet &
|
||||
# 1649| ValueCategory = prvalue
|
||||
# 1649| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i
|
||||
# 1649| Type = [RValueReferenceType] type &&
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for i
|
||||
# 1649| getExpr(): [FunctionCall] call to get
|
||||
# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1649| ValueCategory = prvalue
|
||||
# 1649| getQualifier(): [VariableAccess] (unnamed local variable)
|
||||
# 1649| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet &
|
||||
# 1649| ValueCategory = prvalue(load)
|
||||
# 1649| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1649| Type = [Struct] StructuredBindingTupleNoRefGet
|
||||
# 1649| ValueCategory = lvalue
|
||||
# 1649| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1649| Type = [LValueReferenceType] type &
|
||||
# 1649| ValueCategory = prvalue
|
||||
# 1649| getExpr(): [TemporaryObjectExpr] temporary object
|
||||
# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1649| ValueCategory = lvalue
|
||||
# 1649| getDeclarationEntry(2): [VariableDeclarationEntry] definition of r
|
||||
# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for r
|
||||
# 1649| getExpr(): [FunctionCall] call to get
|
||||
# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1649| ValueCategory = prvalue
|
||||
# 1649| getQualifier(): [VariableAccess] (unnamed local variable)
|
||||
# 1649| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet &
|
||||
# 1649| ValueCategory = prvalue(load)
|
||||
# 1649| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1649| Type = [Struct] StructuredBindingTupleNoRefGet
|
||||
# 1649| ValueCategory = lvalue
|
||||
# 1649| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1649| Type = [LValueReferenceType] int &
|
||||
# 1649| ValueCategory = prvalue
|
||||
# 1649| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1649| Type = [IntType] int
|
||||
# 1649| ValueCategory = lvalue
|
||||
# 1649| getDeclarationEntry(3): [VariableDeclarationEntry] definition of rv
|
||||
# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for rv
|
||||
# 1649| getExpr(): [FunctionCall] call to get
|
||||
# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1649| ValueCategory = prvalue
|
||||
# 1649| getQualifier(): [VariableAccess] (unnamed local variable)
|
||||
# 1649| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet &
|
||||
# 1649| ValueCategory = prvalue(load)
|
||||
# 1649| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1649| Type = [Struct] StructuredBindingTupleNoRefGet
|
||||
# 1649| ValueCategory = lvalue
|
||||
# 1649| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1649| Type = [LValueReferenceType] int &
|
||||
# 1649| ValueCategory = prvalue
|
||||
# 1649| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1649| Type = [IntType] int
|
||||
# 1649| ValueCategory = xvalue
|
||||
# 1650| getStmt(1): [ExprStmt] ExprStmt
|
||||
# 1650| getExpr(): [AssignExpr] ... = ...
|
||||
# 1650| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1650| ValueCategory = lvalue
|
||||
# 1650| getLValue(): [VariableAccess] i
|
||||
# 1650| Type = [RValueReferenceType] type &&
|
||||
# 1650| ValueCategory = prvalue(load)
|
||||
# 1650| getRValue(): [Literal] 4
|
||||
# 1650| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1650| Value = [Literal] 4
|
||||
# 1650| ValueCategory = prvalue
|
||||
# 1650| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1650| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1650| ValueCategory = lvalue
|
||||
# 1651| getStmt(2): [DeclStmt] declaration
|
||||
# 1651| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri
|
||||
# 1651| Type = [LValueReferenceType] int &
|
||||
# 1651| getVariable().getInitializer(): [Initializer] initializer for ri
|
||||
# 1651| getExpr(): [VariableAccess] i
|
||||
# 1651| Type = [RValueReferenceType] type &&
|
||||
# 1651| ValueCategory = prvalue(load)
|
||||
# 1651| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1651| Type = [LValueReferenceType] type &
|
||||
# 1651| ValueCategory = prvalue
|
||||
# 1651| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1651| ValueCategory = lvalue
|
||||
# 1652| getStmt(3): [DeclStmt] declaration
|
||||
# 1652| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v
|
||||
# 1652| Type = [IntType] int
|
||||
# 1652| getVariable().getInitializer(): [Initializer] initializer for v
|
||||
# 1652| getExpr(): [VariableAccess] i
|
||||
# 1652| Type = [RValueReferenceType] type &&
|
||||
# 1652| ValueCategory = prvalue(load)
|
||||
# 1652| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1652| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1652| ValueCategory = prvalue(load)
|
||||
# 1653| getStmt(4): [ExprStmt] ExprStmt
|
||||
# 1653| getExpr(): [AssignExpr] ... = ...
|
||||
# 1653| Type = [IntType] int
|
||||
# 1653| ValueCategory = lvalue
|
||||
# 1653| getLValue(): [VariableAccess] r
|
||||
# 1653| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1653| ValueCategory = prvalue(load)
|
||||
# 1653| getRValue(): [Literal] 5
|
||||
# 1653| Type = [IntType] int
|
||||
# 1653| Value = [Literal] 5
|
||||
# 1653| ValueCategory = prvalue
|
||||
# 1653| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1653| Type = [IntType] int
|
||||
# 1653| ValueCategory = lvalue
|
||||
# 1654| getStmt(5): [DeclStmt] declaration
|
||||
# 1654| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr
|
||||
# 1654| Type = [LValueReferenceType] int &
|
||||
# 1654| getVariable().getInitializer(): [Initializer] initializer for rr
|
||||
# 1654| getExpr(): [VariableAccess] r
|
||||
# 1654| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1654| ValueCategory = prvalue(load)
|
||||
# 1654| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1654| Type = [LValueReferenceType] int &
|
||||
# 1654| ValueCategory = prvalue
|
||||
# 1654| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1654| Type = [IntType] int
|
||||
# 1654| ValueCategory = lvalue
|
||||
# 1655| getStmt(6): [DeclStmt] declaration
|
||||
# 1655| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w
|
||||
# 1655| Type = [IntType] int
|
||||
# 1655| getVariable().getInitializer(): [Initializer] initializer for w
|
||||
# 1655| getExpr(): [VariableAccess] r
|
||||
# 1655| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1655| ValueCategory = prvalue(load)
|
||||
# 1655| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1655| Type = [IntType] int
|
||||
# 1655| ValueCategory = prvalue(load)
|
||||
# 1658| getStmt(2): [BlockStmt] { ... }
|
||||
# 1659| getStmt(0): [DeclStmt] declaration
|
||||
# 1659| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable
|
||||
# 1659| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet &
|
||||
# 1659| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable
|
||||
# 1659| getExpr(): [VariableAccess] t
|
||||
# 1659| Type = [Struct] StructuredBindingTupleNoRefGet
|
||||
# 1659| ValueCategory = lvalue
|
||||
# 1659| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1659| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet &
|
||||
# 1659| ValueCategory = prvalue
|
||||
# 1660| getStmt(1): [DeclStmt] declaration
|
||||
# 1660| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i
|
||||
# 1660| Type = [RValueReferenceType] type &&
|
||||
# 1660| getVariable().getInitializer(): [Initializer] initializer for i
|
||||
# 1660| getExpr(): [FunctionCall] call to get
|
||||
# 1660| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1660| ValueCategory = prvalue
|
||||
# 1660| getQualifier(): [VariableAccess] unnamed_local_variable
|
||||
# 1660| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet &
|
||||
# 1660| ValueCategory = prvalue(load)
|
||||
# 1660| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1660| Type = [Struct] StructuredBindingTupleNoRefGet
|
||||
# 1660| ValueCategory = lvalue
|
||||
# 1660| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1660| Type = [LValueReferenceType] type &
|
||||
# 1660| ValueCategory = prvalue
|
||||
# 1660| getExpr(): [TemporaryObjectExpr] temporary object
|
||||
# 1660| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1660| ValueCategory = lvalue
|
||||
# 1661| getStmt(2): [DeclStmt] declaration
|
||||
# 1661| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r
|
||||
# 1661| Type = [LValueReferenceType] int &
|
||||
# 1661| getVariable().getInitializer(): [Initializer] initializer for r
|
||||
# 1661| getExpr(): [FunctionCall] call to get
|
||||
# 1661| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1661| ValueCategory = prvalue
|
||||
# 1661| getQualifier(): [VariableAccess] unnamed_local_variable
|
||||
# 1661| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet &
|
||||
# 1661| ValueCategory = prvalue(load)
|
||||
# 1661| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1661| Type = [Struct] StructuredBindingTupleNoRefGet
|
||||
# 1661| ValueCategory = lvalue
|
||||
# 1661| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1661| Type = [LValueReferenceType] int &
|
||||
# 1661| ValueCategory = prvalue
|
||||
# 1661| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1661| Type = [IntType] int
|
||||
# 1661| ValueCategory = lvalue
|
||||
# 1662| getStmt(3): [DeclStmt] declaration
|
||||
# 1662| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rv
|
||||
# 1662| Type = [RValueReferenceType] int &&
|
||||
# 1662| getVariable().getInitializer(): [Initializer] initializer for rv
|
||||
# 1662| getExpr(): [FunctionCall] call to get
|
||||
# 1662| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1662| ValueCategory = prvalue
|
||||
# 1662| getQualifier(): [VariableAccess] unnamed_local_variable
|
||||
# 1662| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet &
|
||||
# 1662| ValueCategory = prvalue(load)
|
||||
# 1662| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1662| Type = [Struct] StructuredBindingTupleNoRefGet
|
||||
# 1662| ValueCategory = lvalue
|
||||
# 1662| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1662| Type = [LValueReferenceType] int &
|
||||
# 1662| ValueCategory = prvalue
|
||||
# 1662| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1662| Type = [IntType] int
|
||||
# 1662| ValueCategory = xvalue
|
||||
# 1663| getStmt(4): [ExprStmt] ExprStmt
|
||||
# 1663| getExpr(): [AssignExpr] ... = ...
|
||||
# 1663| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1663| ValueCategory = lvalue
|
||||
# 1663| getLValue(): [VariableAccess] i
|
||||
# 1663| Type = [RValueReferenceType] type &&
|
||||
# 1663| ValueCategory = prvalue(load)
|
||||
# 1663| getRValue(): [Literal] 4
|
||||
# 1663| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1663| Value = [Literal] 4
|
||||
# 1663| ValueCategory = prvalue
|
||||
# 1663| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1663| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1663| ValueCategory = lvalue
|
||||
# 1664| getStmt(5): [DeclStmt] declaration
|
||||
# 1664| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri
|
||||
# 1664| Type = [LValueReferenceType] int &
|
||||
# 1664| getVariable().getInitializer(): [Initializer] initializer for ri
|
||||
# 1664| getExpr(): [VariableAccess] i
|
||||
# 1664| Type = [RValueReferenceType] type &&
|
||||
# 1664| ValueCategory = prvalue(load)
|
||||
# 1664| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1664| Type = [LValueReferenceType] type &
|
||||
# 1664| ValueCategory = prvalue
|
||||
# 1664| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1664| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1664| ValueCategory = lvalue
|
||||
# 1665| getStmt(6): [DeclStmt] declaration
|
||||
# 1665| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v
|
||||
# 1665| Type = [IntType] int
|
||||
# 1665| getVariable().getInitializer(): [Initializer] initializer for v
|
||||
# 1665| getExpr(): [VariableAccess] i
|
||||
# 1665| Type = [RValueReferenceType] type &&
|
||||
# 1665| ValueCategory = prvalue(load)
|
||||
# 1665| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1665| Type = [NestedTypedefType,UsingAliasTypedefType] type
|
||||
# 1665| ValueCategory = prvalue(load)
|
||||
# 1666| getStmt(7): [ExprStmt] ExprStmt
|
||||
# 1666| getExpr(): [AssignExpr] ... = ...
|
||||
# 1666| Type = [IntType] int
|
||||
# 1666| ValueCategory = lvalue
|
||||
# 1666| getLValue(): [VariableAccess] r
|
||||
# 1666| Type = [LValueReferenceType] int &
|
||||
# 1666| ValueCategory = prvalue(load)
|
||||
# 1666| getRValue(): [Literal] 5
|
||||
# 1666| Type = [IntType] int
|
||||
# 1666| Value = [Literal] 5
|
||||
# 1666| ValueCategory = prvalue
|
||||
# 1666| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1666| Type = [IntType] int
|
||||
# 1666| ValueCategory = lvalue
|
||||
# 1667| getStmt(8): [DeclStmt] declaration
|
||||
# 1667| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr
|
||||
# 1667| Type = [LValueReferenceType] int &
|
||||
# 1667| getVariable().getInitializer(): [Initializer] initializer for rr
|
||||
# 1667| getExpr(): [VariableAccess] r
|
||||
# 1667| Type = [LValueReferenceType] int &
|
||||
# 1667| ValueCategory = prvalue(load)
|
||||
# 1667| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1667| Type = [LValueReferenceType] int &
|
||||
# 1667| ValueCategory = prvalue
|
||||
# 1667| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1667| Type = [IntType] int
|
||||
# 1667| ValueCategory = lvalue
|
||||
# 1668| getStmt(9): [DeclStmt] declaration
|
||||
# 1668| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w
|
||||
# 1668| Type = [IntType] int
|
||||
# 1668| getVariable().getInitializer(): [Initializer] initializer for w
|
||||
# 1668| getExpr(): [VariableAccess] r
|
||||
# 1668| Type = [LValueReferenceType] int &
|
||||
# 1668| ValueCategory = prvalue(load)
|
||||
# 1668| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1668| Type = [IntType] int
|
||||
# 1668| ValueCategory = prvalue(load)
|
||||
# 1670| getStmt(3): [ReturnStmt] return ...
|
||||
perf-regression.cpp:
|
||||
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
|
||||
# 4| <params>:
|
||||
|
||||
@@ -1603,4 +1603,70 @@ void tuple_structured_binding_ref_get() {
|
||||
}
|
||||
}
|
||||
|
||||
struct StructuredBindingTupleNoRefGet {
|
||||
int i = 1;
|
||||
int& r = i;
|
||||
|
||||
template<int i>
|
||||
typename std::tuple_element<i, StructuredBindingTupleNoRefGet>::type get();
|
||||
};
|
||||
|
||||
template<>
|
||||
struct std::tuple_size<StructuredBindingTupleNoRefGet> {
|
||||
static const unsigned int value = 3;
|
||||
};
|
||||
|
||||
template<>
|
||||
struct std::tuple_element<0, StructuredBindingTupleNoRefGet> {
|
||||
using type = int;
|
||||
};
|
||||
template<>
|
||||
struct std::tuple_element<1, StructuredBindingTupleNoRefGet> {
|
||||
using type = int&;
|
||||
};
|
||||
template<>
|
||||
struct std::tuple_element<2, StructuredBindingTupleNoRefGet> {
|
||||
using type = int&&;
|
||||
};
|
||||
|
||||
template<>
|
||||
std::tuple_element<0, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<0>() {
|
||||
return i;
|
||||
}
|
||||
template<>
|
||||
std::tuple_element<1, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<1>() {
|
||||
return r;
|
||||
}
|
||||
template<>
|
||||
std::tuple_element<2, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<2>() {
|
||||
return 5;
|
||||
}
|
||||
|
||||
void tuple_structured_binding_no_ref_get() {
|
||||
StructuredBindingTupleNoRefGet t;
|
||||
//structured binding use
|
||||
{
|
||||
auto&& [i, r, rv] = t;
|
||||
i = 4;
|
||||
int& ri = i;
|
||||
int v = i;
|
||||
r = 5;
|
||||
int& rr = r;
|
||||
int w = r;
|
||||
}
|
||||
// explicit reference version
|
||||
{
|
||||
auto&& unnamed_local_variable = t;
|
||||
auto&& i = unnamed_local_variable.get<0>();
|
||||
auto& r = unnamed_local_variable.get<1>();
|
||||
auto&& rv = unnamed_local_variable.get<2>();
|
||||
i = 4;
|
||||
int& ri = i;
|
||||
int v = i;
|
||||
r = 5;
|
||||
int& rr = r;
|
||||
int w = r;
|
||||
}
|
||||
}
|
||||
|
||||
// semmle-extractor-options: -std=c++17 --clang
|
||||
|
||||
@@ -7179,6 +7179,263 @@
|
||||
| ir.cpp:1602:17:1602:17 | Load | m1596_12 |
|
||||
| ir.cpp:1602:17:1602:17 | Load | ~m1600_6 |
|
||||
| ir.cpp:1602:17:1602:17 | StoreValue | r1602_4 |
|
||||
| ir.cpp:1606:8:1606:8 | Address | &:r1606_5 |
|
||||
| ir.cpp:1606:8:1606:8 | Address | &:r1606_5 |
|
||||
| ir.cpp:1606:8:1606:8 | Address | &:r1606_7 |
|
||||
| ir.cpp:1606:8:1606:8 | Address | &:r1606_7 |
|
||||
| ir.cpp:1606:8:1606:8 | ChiPartial | partial:m1606_3 |
|
||||
| ir.cpp:1606:8:1606:8 | ChiTotal | total:m1606_2 |
|
||||
| ir.cpp:1606:8:1606:8 | Load | m1606_6 |
|
||||
| ir.cpp:1606:8:1606:8 | SideEffect | m1606_3 |
|
||||
| ir.cpp:1606:8:1606:8 | SideEffect | m1606_8 |
|
||||
| ir.cpp:1633:61:1633:98 | Address | &:r1633_5 |
|
||||
| ir.cpp:1633:61:1633:98 | Address | &:r1633_5 |
|
||||
| ir.cpp:1633:61:1633:98 | Address | &:r1633_7 |
|
||||
| ir.cpp:1633:61:1633:98 | Address | &:r1633_7 |
|
||||
| ir.cpp:1633:61:1633:98 | Address | &:r1633_10 |
|
||||
| ir.cpp:1633:61:1633:98 | ChiPartial | partial:m1633_3 |
|
||||
| ir.cpp:1633:61:1633:98 | ChiTotal | total:m1633_2 |
|
||||
| ir.cpp:1633:61:1633:98 | Load | m1633_6 |
|
||||
| ir.cpp:1633:61:1633:98 | Load | m1634_6 |
|
||||
| ir.cpp:1633:61:1633:98 | SideEffect | m1633_3 |
|
||||
| ir.cpp:1633:61:1633:98 | SideEffect | m1633_8 |
|
||||
| ir.cpp:1634:5:1634:13 | Address | &:r1634_1 |
|
||||
| ir.cpp:1634:12:1634:12 | Address | &:r1634_2 |
|
||||
| ir.cpp:1634:12:1634:12 | Address | &:r1634_4 |
|
||||
| ir.cpp:1634:12:1634:12 | Load | m1633_6 |
|
||||
| ir.cpp:1634:12:1634:12 | Load | ~m1633_8 |
|
||||
| ir.cpp:1634:12:1634:12 | StoreValue | r1634_5 |
|
||||
| ir.cpp:1634:12:1634:12 | Unary | r1634_3 |
|
||||
| ir.cpp:1637:61:1637:98 | Address | &:r1637_5 |
|
||||
| ir.cpp:1637:61:1637:98 | Address | &:r1637_5 |
|
||||
| ir.cpp:1637:61:1637:98 | Address | &:r1637_7 |
|
||||
| ir.cpp:1637:61:1637:98 | Address | &:r1637_7 |
|
||||
| ir.cpp:1637:61:1637:98 | Address | &:r1637_10 |
|
||||
| ir.cpp:1637:61:1637:98 | ChiPartial | partial:m1637_3 |
|
||||
| ir.cpp:1637:61:1637:98 | ChiTotal | total:m1637_2 |
|
||||
| ir.cpp:1637:61:1637:98 | Load | m1637_6 |
|
||||
| ir.cpp:1637:61:1637:98 | Load | m1638_8 |
|
||||
| ir.cpp:1637:61:1637:98 | SideEffect | m1637_3 |
|
||||
| ir.cpp:1637:61:1637:98 | SideEffect | m1637_8 |
|
||||
| ir.cpp:1638:5:1638:13 | Address | &:r1638_1 |
|
||||
| ir.cpp:1638:12:1638:12 | Address | &:r1638_2 |
|
||||
| ir.cpp:1638:12:1638:12 | Address | &:r1638_4 |
|
||||
| ir.cpp:1638:12:1638:12 | Load | m1637_6 |
|
||||
| ir.cpp:1638:12:1638:12 | Load | ~m1637_8 |
|
||||
| ir.cpp:1638:12:1638:12 | StoreValue | r1638_7 |
|
||||
| ir.cpp:1638:12:1638:12 | Unary | r1638_3 |
|
||||
| ir.cpp:1638:12:1638:12 | Unary | r1638_5 |
|
||||
| ir.cpp:1638:12:1638:12 | Unary | r1638_6 |
|
||||
| ir.cpp:1641:61:1641:98 | Address | &:r1641_5 |
|
||||
| ir.cpp:1641:61:1641:98 | Address | &:r1641_5 |
|
||||
| ir.cpp:1641:61:1641:98 | Address | &:r1641_7 |
|
||||
| ir.cpp:1641:61:1641:98 | Address | &:r1641_7 |
|
||||
| ir.cpp:1641:61:1641:98 | Address | &:r1641_10 |
|
||||
| ir.cpp:1641:61:1641:98 | ChiPartial | partial:m1641_3 |
|
||||
| ir.cpp:1641:61:1641:98 | ChiTotal | total:m1641_2 |
|
||||
| ir.cpp:1641:61:1641:98 | Load | m1641_6 |
|
||||
| ir.cpp:1641:61:1641:98 | Load | m1642_6 |
|
||||
| ir.cpp:1641:61:1641:98 | SideEffect | m1641_3 |
|
||||
| ir.cpp:1641:61:1641:98 | SideEffect | m1641_8 |
|
||||
| ir.cpp:1642:5:1642:13 | Address | &:r1642_1 |
|
||||
| ir.cpp:1642:12:1642:12 | Address | &:r1642_2 |
|
||||
| ir.cpp:1642:12:1642:12 | StoreValue | r1642_3 |
|
||||
| ir.cpp:1642:12:1642:12 | StoreValue | r1642_5 |
|
||||
| ir.cpp:1642:12:1642:12 | Unary | r1642_2 |
|
||||
| ir.cpp:1645:6:1645:40 | ChiPartial | partial:m1645_3 |
|
||||
| ir.cpp:1645:6:1645:40 | ChiTotal | total:m1645_2 |
|
||||
| ir.cpp:1645:6:1645:40 | SideEffect | ~m1666_6 |
|
||||
| ir.cpp:1646:36:1646:36 | Address | &:r1646_1 |
|
||||
| ir.cpp:1646:36:1646:36 | Address | &:r1646_1 |
|
||||
| ir.cpp:1646:36:1646:36 | Arg(this) | this:r1646_1 |
|
||||
| ir.cpp:1646:36:1646:36 | CallTarget | func:r1646_3 |
|
||||
| ir.cpp:1646:36:1646:36 | ChiPartial | partial:m1646_5 |
|
||||
| ir.cpp:1646:36:1646:36 | ChiPartial | partial:m1646_7 |
|
||||
| ir.cpp:1646:36:1646:36 | ChiTotal | total:m1645_4 |
|
||||
| ir.cpp:1646:36:1646:36 | ChiTotal | total:m1646_2 |
|
||||
| ir.cpp:1646:36:1646:36 | SideEffect | ~m1645_4 |
|
||||
| ir.cpp:1649:16:1649:16 | Address | &:r1649_1 |
|
||||
| ir.cpp:1649:16:1649:16 | Address | &:r1649_7 |
|
||||
| ir.cpp:1649:16:1649:16 | Address | &:r1649_21 |
|
||||
| ir.cpp:1649:16:1649:16 | Address | &:r1649_35 |
|
||||
| ir.cpp:1649:16:1649:16 | CallTarget | func:r1649_10 |
|
||||
| ir.cpp:1649:16:1649:16 | CallTarget | func:r1649_24 |
|
||||
| ir.cpp:1649:16:1649:16 | CallTarget | func:r1649_38 |
|
||||
| ir.cpp:1649:16:1649:16 | ChiPartial | partial:m1649_12 |
|
||||
| ir.cpp:1649:16:1649:16 | ChiPartial | partial:m1649_26 |
|
||||
| ir.cpp:1649:16:1649:16 | ChiPartial | partial:m1649_40 |
|
||||
| ir.cpp:1649:16:1649:16 | ChiTotal | total:m1646_6 |
|
||||
| ir.cpp:1649:16:1649:16 | ChiTotal | total:m1649_13 |
|
||||
| ir.cpp:1649:16:1649:16 | ChiTotal | total:m1649_27 |
|
||||
| ir.cpp:1649:16:1649:16 | Load | m1649_4 |
|
||||
| ir.cpp:1649:16:1649:16 | Load | m1649_4 |
|
||||
| ir.cpp:1649:16:1649:16 | Load | m1649_4 |
|
||||
| ir.cpp:1649:16:1649:16 | SideEffect | ~m1646_6 |
|
||||
| ir.cpp:1649:16:1649:16 | SideEffect | ~m1649_13 |
|
||||
| ir.cpp:1649:16:1649:16 | SideEffect | ~m1649_27 |
|
||||
| ir.cpp:1649:16:1649:16 | StoreValue | r1649_11 |
|
||||
| ir.cpp:1649:16:1649:16 | Unary | r1649_8 |
|
||||
| ir.cpp:1649:16:1649:16 | Unary | r1649_22 |
|
||||
| ir.cpp:1649:16:1649:16 | Unary | r1649_25 |
|
||||
| ir.cpp:1649:16:1649:16 | Unary | r1649_36 |
|
||||
| ir.cpp:1649:16:1649:16 | Unary | r1649_39 |
|
||||
| ir.cpp:1649:16:1649:30 | Address | &:r1649_6 |
|
||||
| ir.cpp:1649:16:1649:30 | StoreValue | r1649_18 |
|
||||
| ir.cpp:1649:16:1649:30 | StoreValue | r1649_32 |
|
||||
| ir.cpp:1649:16:1649:30 | StoreValue | r1649_46 |
|
||||
| ir.cpp:1649:16:1649:30 | Unary | r1649_6 |
|
||||
| ir.cpp:1649:16:1649:30 | Unary | r1649_31 |
|
||||
| ir.cpp:1649:16:1649:30 | Unary | r1649_45 |
|
||||
| ir.cpp:1649:17:1649:17 | Address | &:r1649_5 |
|
||||
| ir.cpp:1649:20:1649:20 | Address | &:r1649_20 |
|
||||
| ir.cpp:1649:23:1649:23 | Address | &:r1649_34 |
|
||||
| ir.cpp:1649:29:1649:29 | StoreValue | r1649_3 |
|
||||
| ir.cpp:1649:29:1649:29 | Unary | r1649_2 |
|
||||
| ir.cpp:1649:30:1649:30 | Address | &:r1649_9 |
|
||||
| ir.cpp:1649:30:1649:30 | Address | &:r1649_9 |
|
||||
| ir.cpp:1649:30:1649:30 | Address | &:r1649_23 |
|
||||
| ir.cpp:1649:30:1649:30 | Address | &:r1649_23 |
|
||||
| ir.cpp:1649:30:1649:30 | Address | &:r1649_37 |
|
||||
| ir.cpp:1649:30:1649:30 | Address | &:r1649_37 |
|
||||
| ir.cpp:1649:30:1649:30 | Arg(this) | this:r1649_9 |
|
||||
| ir.cpp:1649:30:1649:30 | Arg(this) | this:r1649_23 |
|
||||
| ir.cpp:1649:30:1649:30 | Arg(this) | this:r1649_37 |
|
||||
| ir.cpp:1649:30:1649:30 | ChiPartial | partial:m1649_15 |
|
||||
| ir.cpp:1649:30:1649:30 | ChiPartial | partial:m1649_29 |
|
||||
| ir.cpp:1649:30:1649:30 | ChiPartial | partial:m1649_43 |
|
||||
| ir.cpp:1649:30:1649:30 | ChiTotal | total:m1646_8 |
|
||||
| ir.cpp:1649:30:1649:30 | ChiTotal | total:m1649_16 |
|
||||
| ir.cpp:1649:30:1649:30 | ChiTotal | total:m1649_30 |
|
||||
| ir.cpp:1649:30:1649:30 | SideEffect | m1646_8 |
|
||||
| ir.cpp:1649:30:1649:30 | SideEffect | m1649_16 |
|
||||
| ir.cpp:1649:30:1649:30 | SideEffect | m1649_30 |
|
||||
| ir.cpp:1650:9:1650:9 | Address | &:r1650_2 |
|
||||
| ir.cpp:1650:9:1650:9 | Address | &:r1650_4 |
|
||||
| ir.cpp:1650:9:1650:9 | Load | m1649_19 |
|
||||
| ir.cpp:1650:9:1650:9 | Unary | r1650_3 |
|
||||
| ir.cpp:1650:13:1650:13 | StoreValue | r1650_1 |
|
||||
| ir.cpp:1651:14:1651:15 | Address | &:r1651_1 |
|
||||
| ir.cpp:1651:19:1651:19 | Address | &:r1651_2 |
|
||||
| ir.cpp:1651:19:1651:19 | Load | m1649_19 |
|
||||
| ir.cpp:1651:19:1651:19 | StoreValue | r1651_5 |
|
||||
| ir.cpp:1651:19:1651:19 | Unary | r1651_3 |
|
||||
| ir.cpp:1651:19:1651:19 | Unary | r1651_4 |
|
||||
| ir.cpp:1652:13:1652:13 | Address | &:r1652_1 |
|
||||
| ir.cpp:1652:17:1652:17 | Address | &:r1652_2 |
|
||||
| ir.cpp:1652:17:1652:17 | Address | &:r1652_3 |
|
||||
| ir.cpp:1652:17:1652:17 | Load | m1649_19 |
|
||||
| ir.cpp:1652:17:1652:17 | Load | m1650_5 |
|
||||
| ir.cpp:1652:17:1652:17 | StoreValue | r1652_4 |
|
||||
| ir.cpp:1653:9:1653:9 | Address | &:r1653_2 |
|
||||
| ir.cpp:1653:9:1653:9 | Address | &:r1653_4 |
|
||||
| ir.cpp:1653:9:1653:9 | Load | m1649_33 |
|
||||
| ir.cpp:1653:9:1653:9 | Unary | r1653_3 |
|
||||
| ir.cpp:1653:9:1653:13 | ChiPartial | partial:m1653_5 |
|
||||
| ir.cpp:1653:9:1653:13 | ChiTotal | total:m1649_41 |
|
||||
| ir.cpp:1653:13:1653:13 | StoreValue | r1653_1 |
|
||||
| ir.cpp:1654:14:1654:15 | Address | &:r1654_1 |
|
||||
| ir.cpp:1654:19:1654:19 | Address | &:r1654_2 |
|
||||
| ir.cpp:1654:19:1654:19 | Load | m1649_33 |
|
||||
| ir.cpp:1654:19:1654:19 | StoreValue | r1654_5 |
|
||||
| ir.cpp:1654:19:1654:19 | Unary | r1654_3 |
|
||||
| ir.cpp:1654:19:1654:19 | Unary | r1654_4 |
|
||||
| ir.cpp:1655:13:1655:13 | Address | &:r1655_1 |
|
||||
| ir.cpp:1655:17:1655:17 | Address | &:r1655_2 |
|
||||
| ir.cpp:1655:17:1655:17 | Address | &:r1655_3 |
|
||||
| ir.cpp:1655:17:1655:17 | Load | m1649_33 |
|
||||
| ir.cpp:1655:17:1655:17 | Load | ~m1653_6 |
|
||||
| ir.cpp:1655:17:1655:17 | StoreValue | r1655_4 |
|
||||
| ir.cpp:1659:16:1659:37 | Address | &:r1659_1 |
|
||||
| ir.cpp:1659:41:1659:41 | StoreValue | r1659_3 |
|
||||
| ir.cpp:1659:41:1659:41 | Unary | r1659_2 |
|
||||
| ir.cpp:1660:16:1660:16 | Address | &:r1660_1 |
|
||||
| ir.cpp:1660:20:1660:41 | Address | &:r1660_3 |
|
||||
| ir.cpp:1660:20:1660:41 | Address | &:r1660_5 |
|
||||
| ir.cpp:1660:20:1660:41 | Address | &:r1660_5 |
|
||||
| ir.cpp:1660:20:1660:41 | Arg(this) | this:r1660_5 |
|
||||
| ir.cpp:1660:20:1660:41 | ChiPartial | partial:m1660_11 |
|
||||
| ir.cpp:1660:20:1660:41 | ChiTotal | total:m1649_44 |
|
||||
| ir.cpp:1660:20:1660:41 | Load | m1659_4 |
|
||||
| ir.cpp:1660:20:1660:41 | SideEffect | m1649_44 |
|
||||
| ir.cpp:1660:20:1660:41 | Unary | r1660_4 |
|
||||
| ir.cpp:1660:20:1660:50 | Address | &:r1660_2 |
|
||||
| ir.cpp:1660:20:1660:50 | StoreValue | r1660_14 |
|
||||
| ir.cpp:1660:20:1660:50 | Unary | r1660_2 |
|
||||
| ir.cpp:1660:43:1660:48 | CallTarget | func:r1660_6 |
|
||||
| ir.cpp:1660:43:1660:48 | ChiPartial | partial:m1660_8 |
|
||||
| ir.cpp:1660:43:1660:48 | ChiTotal | total:m1653_6 |
|
||||
| ir.cpp:1660:43:1660:48 | SideEffect | ~m1653_6 |
|
||||
| ir.cpp:1660:43:1660:48 | StoreValue | r1660_7 |
|
||||
| ir.cpp:1661:15:1661:15 | Address | &:r1661_1 |
|
||||
| ir.cpp:1661:19:1661:40 | Address | &:r1661_2 |
|
||||
| ir.cpp:1661:19:1661:40 | Address | &:r1661_4 |
|
||||
| ir.cpp:1661:19:1661:40 | Address | &:r1661_4 |
|
||||
| ir.cpp:1661:19:1661:40 | Arg(this) | this:r1661_4 |
|
||||
| ir.cpp:1661:19:1661:40 | ChiPartial | partial:m1661_10 |
|
||||
| ir.cpp:1661:19:1661:40 | ChiTotal | total:m1660_12 |
|
||||
| ir.cpp:1661:19:1661:40 | Load | m1659_4 |
|
||||
| ir.cpp:1661:19:1661:40 | SideEffect | m1660_12 |
|
||||
| ir.cpp:1661:19:1661:40 | Unary | r1661_3 |
|
||||
| ir.cpp:1661:42:1661:47 | CallTarget | func:r1661_5 |
|
||||
| ir.cpp:1661:42:1661:47 | ChiPartial | partial:m1661_7 |
|
||||
| ir.cpp:1661:42:1661:47 | ChiTotal | total:m1660_9 |
|
||||
| ir.cpp:1661:42:1661:47 | SideEffect | ~m1660_9 |
|
||||
| ir.cpp:1661:42:1661:47 | Unary | r1661_6 |
|
||||
| ir.cpp:1661:42:1661:50 | StoreValue | r1661_13 |
|
||||
| ir.cpp:1661:42:1661:50 | Unary | r1661_12 |
|
||||
| ir.cpp:1662:16:1662:17 | Address | &:r1662_1 |
|
||||
| ir.cpp:1662:21:1662:42 | Address | &:r1662_2 |
|
||||
| ir.cpp:1662:21:1662:42 | Address | &:r1662_4 |
|
||||
| ir.cpp:1662:21:1662:42 | Address | &:r1662_4 |
|
||||
| ir.cpp:1662:21:1662:42 | Arg(this) | this:r1662_4 |
|
||||
| ir.cpp:1662:21:1662:42 | ChiPartial | partial:m1662_10 |
|
||||
| ir.cpp:1662:21:1662:42 | ChiTotal | total:m1661_11 |
|
||||
| ir.cpp:1662:21:1662:42 | Load | m1659_4 |
|
||||
| ir.cpp:1662:21:1662:42 | SideEffect | m1661_11 |
|
||||
| ir.cpp:1662:21:1662:42 | Unary | r1662_3 |
|
||||
| ir.cpp:1662:44:1662:49 | CallTarget | func:r1662_5 |
|
||||
| ir.cpp:1662:44:1662:49 | ChiPartial | partial:m1662_7 |
|
||||
| ir.cpp:1662:44:1662:49 | ChiTotal | total:m1661_8 |
|
||||
| ir.cpp:1662:44:1662:49 | SideEffect | ~m1661_8 |
|
||||
| ir.cpp:1662:44:1662:49 | Unary | r1662_6 |
|
||||
| ir.cpp:1662:44:1662:52 | StoreValue | r1662_13 |
|
||||
| ir.cpp:1662:44:1662:52 | Unary | r1662_12 |
|
||||
| ir.cpp:1663:9:1663:9 | Address | &:r1663_2 |
|
||||
| ir.cpp:1663:9:1663:9 | Address | &:r1663_4 |
|
||||
| ir.cpp:1663:9:1663:9 | Load | m1660_15 |
|
||||
| ir.cpp:1663:9:1663:9 | Unary | r1663_3 |
|
||||
| ir.cpp:1663:13:1663:13 | StoreValue | r1663_1 |
|
||||
| ir.cpp:1664:14:1664:15 | Address | &:r1664_1 |
|
||||
| ir.cpp:1664:19:1664:19 | Address | &:r1664_2 |
|
||||
| ir.cpp:1664:19:1664:19 | Load | m1660_15 |
|
||||
| ir.cpp:1664:19:1664:19 | StoreValue | r1664_5 |
|
||||
| ir.cpp:1664:19:1664:19 | Unary | r1664_3 |
|
||||
| ir.cpp:1664:19:1664:19 | Unary | r1664_4 |
|
||||
| ir.cpp:1665:13:1665:13 | Address | &:r1665_1 |
|
||||
| ir.cpp:1665:17:1665:17 | Address | &:r1665_2 |
|
||||
| ir.cpp:1665:17:1665:17 | Address | &:r1665_3 |
|
||||
| ir.cpp:1665:17:1665:17 | Load | m1660_15 |
|
||||
| ir.cpp:1665:17:1665:17 | Load | m1663_5 |
|
||||
| ir.cpp:1665:17:1665:17 | StoreValue | r1665_4 |
|
||||
| ir.cpp:1666:9:1666:9 | Address | &:r1666_2 |
|
||||
| ir.cpp:1666:9:1666:9 | Address | &:r1666_4 |
|
||||
| ir.cpp:1666:9:1666:9 | Load | m1661_14 |
|
||||
| ir.cpp:1666:9:1666:9 | Unary | r1666_3 |
|
||||
| ir.cpp:1666:9:1666:13 | ChiPartial | partial:m1666_5 |
|
||||
| ir.cpp:1666:9:1666:13 | ChiTotal | total:m1662_8 |
|
||||
| ir.cpp:1666:13:1666:13 | StoreValue | r1666_1 |
|
||||
| ir.cpp:1667:14:1667:15 | Address | &:r1667_1 |
|
||||
| ir.cpp:1667:19:1667:19 | Address | &:r1667_2 |
|
||||
| ir.cpp:1667:19:1667:19 | Load | m1661_14 |
|
||||
| ir.cpp:1667:19:1667:19 | StoreValue | r1667_5 |
|
||||
| ir.cpp:1667:19:1667:19 | Unary | r1667_3 |
|
||||
| ir.cpp:1667:19:1667:19 | Unary | r1667_4 |
|
||||
| ir.cpp:1668:13:1668:13 | Address | &:r1668_1 |
|
||||
| ir.cpp:1668:17:1668:17 | Address | &:r1668_2 |
|
||||
| ir.cpp:1668:17:1668:17 | Address | &:r1668_3 |
|
||||
| ir.cpp:1668:17:1668:17 | Load | m1661_14 |
|
||||
| ir.cpp:1668:17:1668:17 | Load | ~m1666_6 |
|
||||
| ir.cpp:1668:17:1668:17 | StoreValue | r1668_4 |
|
||||
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
|
||||
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
|
||||
| perf-regression.cpp:6:3:6:5 | Address | &:r6_7 |
|
||||
|
||||
@@ -8031,168 +8031,168 @@ ir.cpp:
|
||||
|
||||
# 1499| void data_member_structured_binding()
|
||||
# 1499| Block 0
|
||||
# 1499| v1499_1(void) = EnterFunction :
|
||||
# 1499| mu1499_2(unknown) = AliasedDefinition :
|
||||
# 1499| mu1499_3(unknown) = InitializeNonLocal :
|
||||
# 1500| r1500_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] :
|
||||
# 1500| mu1500_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1500_1
|
||||
# 1500| r1500_3(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberStruct] :
|
||||
# 1500| v1500_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1500_3, this:r1500_1
|
||||
# 1500| mu1500_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 1500| mu1500_6(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1500_1
|
||||
# 1503| r1503_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] :
|
||||
# 1503| r1503_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1503_2, ~m?
|
||||
# 1503| mu1503_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1503_1, r1503_3
|
||||
# 1503| r1503_5(glval<int &>) = VariableAddress[i] :
|
||||
# 1503| r1503_6(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_7(glval<int>) = FieldAddress[i] : r1503_6
|
||||
# 1503| mu1503_8(int &) = Store[i] : &:r1503_5, r1503_7
|
||||
# 1503| r1503_9(glval<double &>) = VariableAddress[d] :
|
||||
# 1503| r1503_10(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_11(glval<double>) = FieldAddress[d] : r1503_10
|
||||
# 1503| mu1503_12(double &) = Store[d] : &:r1503_9, r1503_11
|
||||
# 1503| r1503_13(glval<unsigned int &>) = VariableAddress[b] :
|
||||
# 1503| r1503_14(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_15(glval<unsigned int>) = FieldAddress[b] : r1503_14
|
||||
# 1503| mu1503_16(unsigned int &) = Store[b] : &:r1503_13, r1503_15
|
||||
# 1503| r1503_17(glval<int &>) = VariableAddress[r] :
|
||||
# 1503| r1503_18(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_19(glval<int &>) = FieldAddress[r] : r1503_18
|
||||
# 1503| r1503_20(int &) = Load[?] : &:r1503_19, ~m?
|
||||
# 1503| r1503_21(glval<int>) = CopyValue : r1503_20
|
||||
# 1503| mu1503_22(int &) = Store[r] : &:r1503_17, r1503_21
|
||||
# 1503| r1503_23(glval<int *&>) = VariableAddress[p] :
|
||||
# 1503| r1503_24(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_25(glval<int *>) = FieldAddress[p] : r1503_24
|
||||
# 1503| mu1503_26(int *&) = Store[p] : &:r1503_23, r1503_25
|
||||
# 1503| r1503_27(glval<int(&)[2]>) = VariableAddress[xs] :
|
||||
# 1503| r1503_28(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_29(glval<int[2]>) = FieldAddress[xs] : r1503_28
|
||||
# 1503| mu1503_30(int(&)[2]) = Store[xs] : &:r1503_27, r1503_29
|
||||
# 1503| r1503_31(glval<int &>) = VariableAddress[r_alt] :
|
||||
# 1503| r1503_32(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_33(glval<int &>) = FieldAddress[r_alt] : r1503_32
|
||||
# 1503| r1503_34(int &) = Load[?] : &:r1503_33, ~m?
|
||||
# 1503| r1503_35(glval<int>) = CopyValue : r1503_34
|
||||
# 1503| mu1503_36(int &) = Store[r_alt] : &:r1503_31, r1503_35
|
||||
# 1503| r1503_37(glval<StructuredBindingDataMemberMemberStruct &>) = VariableAddress[m] :
|
||||
# 1503| r1503_38(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_39(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1503_38
|
||||
# 1503| mu1503_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1503_37, r1503_39
|
||||
# 1504| r1504_1(double) = Constant[4.0] :
|
||||
# 1504| r1504_2(glval<double &>) = VariableAddress[d] :
|
||||
# 1504| r1504_3(double &) = Load[d] : &:r1504_2, ~m?
|
||||
# 1504| mu1504_4(double) = Store[?] : &:r1504_3, r1504_1
|
||||
# 1505| r1505_1(glval<double &>) = VariableAddress[rd] :
|
||||
# 1505| r1505_2(glval<double &>) = VariableAddress[d] :
|
||||
# 1505| r1505_3(double &) = Load[d] : &:r1505_2, ~m?
|
||||
# 1505| r1505_4(double &) = CopyValue : r1505_3
|
||||
# 1505| mu1505_5(double &) = Store[rd] : &:r1505_1, r1505_4
|
||||
# 1506| r1506_1(glval<int>) = VariableAddress[v] :
|
||||
# 1506| r1506_2(glval<int &>) = VariableAddress[i] :
|
||||
# 1506| r1506_3(int &) = Load[i] : &:r1506_2, ~m?
|
||||
# 1506| r1506_4(int) = Load[?] : &:r1506_3, ~m?
|
||||
# 1506| mu1506_5(int) = Store[v] : &:r1506_1, r1506_4
|
||||
# 1507| r1507_1(int) = Constant[5] :
|
||||
# 1507| r1507_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1507| r1507_3(int &) = Load[r] : &:r1507_2, ~m?
|
||||
# 1507| mu1507_4(int) = Store[?] : &:r1507_3, r1507_1
|
||||
# 1508| r1508_1(int) = Constant[6] :
|
||||
# 1508| r1508_2(glval<int *&>) = VariableAddress[p] :
|
||||
# 1508| r1508_3(int *&) = Load[p] : &:r1508_2, ~m?
|
||||
# 1508| r1508_4(int *) = Load[?] : &:r1508_3, ~m?
|
||||
# 1508| r1508_5(glval<int>) = CopyValue : r1508_4
|
||||
# 1508| mu1508_6(int) = Store[?] : &:r1508_5, r1508_1
|
||||
# 1509| r1509_1(glval<int &>) = VariableAddress[rr] :
|
||||
# 1509| r1509_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1509| r1509_3(int &) = Load[r] : &:r1509_2, ~m?
|
||||
# 1509| r1509_4(int &) = CopyValue : r1509_3
|
||||
# 1509| mu1509_5(int &) = Store[rr] : &:r1509_1, r1509_4
|
||||
# 1510| r1510_1(glval<int *>) = VariableAddress[pr] :
|
||||
# 1510| r1510_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1510| r1510_3(int &) = Load[r] : &:r1510_2, ~m?
|
||||
# 1510| r1510_4(int *) = CopyValue : r1510_3
|
||||
# 1510| mu1510_5(int *) = Store[pr] : &:r1510_1, r1510_4
|
||||
# 1511| r1511_1(glval<int>) = VariableAddress[w] :
|
||||
# 1511| r1511_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1511| r1511_3(int &) = Load[r] : &:r1511_2, ~m?
|
||||
# 1511| r1511_4(int) = Load[?] : &:r1511_3, ~m?
|
||||
# 1511| mu1511_5(int) = Store[w] : &:r1511_1, r1511_4
|
||||
# 1515| r1515_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1515| r1515_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] :
|
||||
# 1515| r1515_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1515_2, ~m?
|
||||
# 1515| mu1515_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1515_1, r1515_3
|
||||
# 1516| r1516_1(glval<int &>) = VariableAddress[i] :
|
||||
# 1516| r1516_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1516| r1516_3(glval<int>) = FieldAddress[i] : r1516_2
|
||||
# 1516| r1516_4(int &) = CopyValue : r1516_3
|
||||
# 1516| mu1516_5(int &) = Store[i] : &:r1516_1, r1516_4
|
||||
# 1517| r1517_1(glval<double &>) = VariableAddress[d] :
|
||||
# 1517| r1517_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1517| r1517_3(glval<double>) = FieldAddress[d] : r1517_2
|
||||
# 1517| r1517_4(double &) = CopyValue : r1517_3
|
||||
# 1517| mu1517_5(double &) = Store[d] : &:r1517_1, r1517_4
|
||||
# 1519| r1519_1(glval<int &>) = VariableAddress[r] :
|
||||
# 1519| r1519_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1519| r1519_3(glval<int &>) = FieldAddress[r] : r1519_2
|
||||
# 1519| r1519_4(int &) = Load[?] : &:r1519_3, ~m?
|
||||
# 1519| r1519_5(glval<int>) = CopyValue : r1519_4
|
||||
# 1519| r1519_6(int &) = CopyValue : r1519_5
|
||||
# 1519| mu1519_7(int &) = Store[r] : &:r1519_1, r1519_6
|
||||
# 1520| r1520_1(glval<int *&>) = VariableAddress[p] :
|
||||
# 1520| r1520_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1520| r1520_3(glval<int *>) = FieldAddress[p] : r1520_2
|
||||
# 1520| r1520_4(int *&) = CopyValue : r1520_3
|
||||
# 1520| mu1520_5(int *&) = Store[p] : &:r1520_1, r1520_4
|
||||
# 1521| r1521_1(double) = Constant[4.0] :
|
||||
# 1521| r1521_2(glval<double &>) = VariableAddress[d] :
|
||||
# 1521| r1521_3(double &) = Load[d] : &:r1521_2, ~m?
|
||||
# 1521| r1521_4(glval<double>) = CopyValue : r1521_3
|
||||
# 1521| mu1521_5(double) = Store[?] : &:r1521_4, r1521_1
|
||||
# 1522| r1522_1(glval<double &>) = VariableAddress[rd] :
|
||||
# 1522| r1522_2(glval<double &>) = VariableAddress[d] :
|
||||
# 1522| r1522_3(double &) = Load[d] : &:r1522_2, ~m?
|
||||
# 1522| r1522_4(glval<double>) = CopyValue : r1522_3
|
||||
# 1522| r1522_5(double &) = CopyValue : r1522_4
|
||||
# 1522| mu1522_6(double &) = Store[rd] : &:r1522_1, r1522_5
|
||||
# 1523| r1523_1(glval<int>) = VariableAddress[v] :
|
||||
# 1523| r1523_2(glval<int &>) = VariableAddress[i] :
|
||||
# 1523| r1523_3(int &) = Load[i] : &:r1523_2, ~m?
|
||||
# 1523| r1523_4(int) = Load[?] : &:r1523_3, ~m?
|
||||
# 1523| mu1523_5(int) = Store[v] : &:r1523_1, r1523_4
|
||||
# 1524| r1524_1(int) = Constant[5] :
|
||||
# 1524| r1524_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1524| r1524_3(int &) = Load[r] : &:r1524_2, ~m?
|
||||
# 1524| r1524_4(glval<int>) = CopyValue : r1524_3
|
||||
# 1524| mu1524_5(int) = Store[?] : &:r1524_4, r1524_1
|
||||
# 1525| r1525_1(int) = Constant[6] :
|
||||
# 1525| r1525_2(glval<int *&>) = VariableAddress[p] :
|
||||
# 1525| r1525_3(int *&) = Load[p] : &:r1525_2, ~m?
|
||||
# 1525| r1525_4(int *) = Load[?] : &:r1525_3, ~m?
|
||||
# 1525| r1525_5(glval<int>) = CopyValue : r1525_4
|
||||
# 1525| mu1525_6(int) = Store[?] : &:r1525_5, r1525_1
|
||||
# 1526| r1526_1(glval<int &>) = VariableAddress[rr] :
|
||||
# 1526| r1526_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1526| r1526_3(int &) = Load[r] : &:r1526_2, ~m?
|
||||
# 1526| r1526_4(glval<int>) = CopyValue : r1526_3
|
||||
# 1526| r1526_5(int &) = CopyValue : r1526_4
|
||||
# 1526| mu1526_6(int &) = Store[rr] : &:r1526_1, r1526_5
|
||||
# 1527| r1527_1(glval<int *>) = VariableAddress[pr] :
|
||||
# 1527| r1527_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1527| r1527_3(int &) = Load[r] : &:r1527_2, ~m?
|
||||
# 1527| r1527_4(glval<int>) = CopyValue : r1527_3
|
||||
# 1527| r1527_5(int *) = CopyValue : r1527_4
|
||||
# 1527| mu1527_6(int *) = Store[pr] : &:r1527_1, r1527_5
|
||||
# 1528| r1528_1(glval<int>) = VariableAddress[w] :
|
||||
# 1528| r1528_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1528| r1528_3(int &) = Load[r] : &:r1528_2, ~m?
|
||||
# 1528| r1528_4(int) = Load[?] : &:r1528_3, ~m?
|
||||
# 1528| mu1528_5(int) = Store[w] : &:r1528_1, r1528_4
|
||||
# 1530| v1530_1(void) = NoOp :
|
||||
# 1499| v1499_4(void) = ReturnVoid :
|
||||
# 1499| v1499_5(void) = AliasedUse : ~m?
|
||||
# 1499| v1499_6(void) = ExitFunction :
|
||||
# 1499| v1499_1(void) = EnterFunction :
|
||||
# 1499| mu1499_2(unknown) = AliasedDefinition :
|
||||
# 1499| mu1499_3(unknown) = InitializeNonLocal :
|
||||
# 1500| r1500_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] :
|
||||
# 1500| mu1500_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1500_1
|
||||
# 1500| r1500_3(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberStruct] :
|
||||
# 1500| v1500_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1500_3, this:r1500_1
|
||||
# 1500| mu1500_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 1500| mu1500_6(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1500_1
|
||||
# 1503| r1503_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] :
|
||||
# 1503| r1503_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1503_2, ~m?
|
||||
# 1503| mu1503_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1503_1, r1503_3
|
||||
# 1503| r1503_5(glval<int &>) = VariableAddress[i] :
|
||||
# 1503| r1503_6(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_7(glval<int>) = FieldAddress[i] : r1503_6
|
||||
# 1503| mu1503_8(int &) = Store[i] : &:r1503_5, r1503_7
|
||||
# 1503| r1503_9(glval<double &>) = VariableAddress[d] :
|
||||
# 1503| r1503_10(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_11(glval<double>) = FieldAddress[d] : r1503_10
|
||||
# 1503| mu1503_12(double &) = Store[d] : &:r1503_9, r1503_11
|
||||
# 1503| r1503_13(glval<unsigned int &>) = VariableAddress[b] :
|
||||
# 1503| r1503_14(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_15(glval<unsigned int>) = FieldAddress[b] : r1503_14
|
||||
# 1503| mu1503_16(unsigned int &) = Store[b] : &:r1503_13, r1503_15
|
||||
# 1503| r1503_17(glval<int &>) = VariableAddress[r] :
|
||||
# 1503| r1503_18(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_19(glval<int &>) = FieldAddress[r] : r1503_18
|
||||
# 1503| r1503_20(int &) = Load[?] : &:r1503_19, ~m?
|
||||
# 1503| r1503_21(glval<int>) = CopyValue : r1503_20
|
||||
# 1503| mu1503_22(int &) = Store[r] : &:r1503_17, r1503_21
|
||||
# 1503| r1503_23(glval<int *&>) = VariableAddress[p] :
|
||||
# 1503| r1503_24(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_25(glval<int *>) = FieldAddress[p] : r1503_24
|
||||
# 1503| mu1503_26(int *&) = Store[p] : &:r1503_23, r1503_25
|
||||
# 1503| r1503_27(glval<int(&)[2]>) = VariableAddress[xs] :
|
||||
# 1503| r1503_28(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_29(glval<int[2]>) = FieldAddress[xs] : r1503_28
|
||||
# 1503| mu1503_30(int(&)[2]) = Store[xs] : &:r1503_27, r1503_29
|
||||
# 1503| r1503_31(glval<int &>) = VariableAddress[r_alt] :
|
||||
# 1503| r1503_32(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_33(glval<int &>) = FieldAddress[r_alt] : r1503_32
|
||||
# 1503| r1503_34(int &) = Load[?] : &:r1503_33, ~m?
|
||||
# 1503| r1503_35(glval<int>) = CopyValue : r1503_34
|
||||
# 1503| mu1503_36(int &) = Store[r_alt] : &:r1503_31, r1503_35
|
||||
# 1503| r1503_37(glval<StructuredBindingDataMemberMemberStruct &>) = VariableAddress[m] :
|
||||
# 1503| r1503_38(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1503| r1503_39(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1503_38
|
||||
# 1503| mu1503_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1503_37, r1503_39
|
||||
# 1504| r1504_1(double) = Constant[4.0] :
|
||||
# 1504| r1504_2(glval<double &>) = VariableAddress[d] :
|
||||
# 1504| r1504_3(double &) = Load[d] : &:r1504_2, ~m?
|
||||
# 1504| mu1504_4(double) = Store[?] : &:r1504_3, r1504_1
|
||||
# 1505| r1505_1(glval<double &>) = VariableAddress[rd] :
|
||||
# 1505| r1505_2(glval<double &>) = VariableAddress[d] :
|
||||
# 1505| r1505_3(double &) = Load[d] : &:r1505_2, ~m?
|
||||
# 1505| r1505_4(double &) = CopyValue : r1505_3
|
||||
# 1505| mu1505_5(double &) = Store[rd] : &:r1505_1, r1505_4
|
||||
# 1506| r1506_1(glval<int>) = VariableAddress[v] :
|
||||
# 1506| r1506_2(glval<int &>) = VariableAddress[i] :
|
||||
# 1506| r1506_3(int &) = Load[i] : &:r1506_2, ~m?
|
||||
# 1506| r1506_4(int) = Load[?] : &:r1506_3, ~m?
|
||||
# 1506| mu1506_5(int) = Store[v] : &:r1506_1, r1506_4
|
||||
# 1507| r1507_1(int) = Constant[5] :
|
||||
# 1507| r1507_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1507| r1507_3(int &) = Load[r] : &:r1507_2, ~m?
|
||||
# 1507| mu1507_4(int) = Store[?] : &:r1507_3, r1507_1
|
||||
# 1508| r1508_1(int) = Constant[6] :
|
||||
# 1508| r1508_2(glval<int *&>) = VariableAddress[p] :
|
||||
# 1508| r1508_3(int *&) = Load[p] : &:r1508_2, ~m?
|
||||
# 1508| r1508_4(int *) = Load[?] : &:r1508_3, ~m?
|
||||
# 1508| r1508_5(glval<int>) = CopyValue : r1508_4
|
||||
# 1508| mu1508_6(int) = Store[?] : &:r1508_5, r1508_1
|
||||
# 1509| r1509_1(glval<int &>) = VariableAddress[rr] :
|
||||
# 1509| r1509_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1509| r1509_3(int &) = Load[r] : &:r1509_2, ~m?
|
||||
# 1509| r1509_4(int &) = CopyValue : r1509_3
|
||||
# 1509| mu1509_5(int &) = Store[rr] : &:r1509_1, r1509_4
|
||||
# 1510| r1510_1(glval<int *>) = VariableAddress[pr] :
|
||||
# 1510| r1510_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1510| r1510_3(int &) = Load[r] : &:r1510_2, ~m?
|
||||
# 1510| r1510_4(int *) = CopyValue : r1510_3
|
||||
# 1510| mu1510_5(int *) = Store[pr] : &:r1510_1, r1510_4
|
||||
# 1511| r1511_1(glval<int>) = VariableAddress[w] :
|
||||
# 1511| r1511_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1511| r1511_3(int &) = Load[r] : &:r1511_2, ~m?
|
||||
# 1511| r1511_4(int) = Load[?] : &:r1511_3, ~m?
|
||||
# 1511| mu1511_5(int) = Store[w] : &:r1511_1, r1511_4
|
||||
# 1515| r1515_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1515| r1515_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] :
|
||||
# 1515| r1515_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1515_2, ~m?
|
||||
# 1515| mu1515_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1515_1, r1515_3
|
||||
# 1516| r1516_1(glval<int &>) = VariableAddress[i] :
|
||||
# 1516| r1516_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1516| r1516_3(glval<int>) = FieldAddress[i] : r1516_2
|
||||
# 1516| r1516_4(int &) = CopyValue : r1516_3
|
||||
# 1516| mu1516_5(int &) = Store[i] : &:r1516_1, r1516_4
|
||||
# 1517| r1517_1(glval<double &>) = VariableAddress[d] :
|
||||
# 1517| r1517_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1517| r1517_3(glval<double>) = FieldAddress[d] : r1517_2
|
||||
# 1517| r1517_4(double &) = CopyValue : r1517_3
|
||||
# 1517| mu1517_5(double &) = Store[d] : &:r1517_1, r1517_4
|
||||
# 1519| r1519_1(glval<int &>) = VariableAddress[r] :
|
||||
# 1519| r1519_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1519| r1519_3(glval<int &>) = FieldAddress[r] : r1519_2
|
||||
# 1519| r1519_4(int &) = Load[?] : &:r1519_3, ~m?
|
||||
# 1519| r1519_5(glval<int>) = CopyValue : r1519_4
|
||||
# 1519| r1519_6(int &) = CopyValue : r1519_5
|
||||
# 1519| mu1519_7(int &) = Store[r] : &:r1519_1, r1519_6
|
||||
# 1520| r1520_1(glval<int *&>) = VariableAddress[p] :
|
||||
# 1520| r1520_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1520| r1520_3(glval<int *>) = FieldAddress[p] : r1520_2
|
||||
# 1520| r1520_4(int *&) = CopyValue : r1520_3
|
||||
# 1520| mu1520_5(int *&) = Store[p] : &:r1520_1, r1520_4
|
||||
# 1521| r1521_1(double) = Constant[4.0] :
|
||||
# 1521| r1521_2(glval<double &>) = VariableAddress[d] :
|
||||
# 1521| r1521_3(double &) = Load[d] : &:r1521_2, ~m?
|
||||
# 1521| r1521_4(glval<double>) = CopyValue : r1521_3
|
||||
# 1521| mu1521_5(double) = Store[?] : &:r1521_4, r1521_1
|
||||
# 1522| r1522_1(glval<double &>) = VariableAddress[rd] :
|
||||
# 1522| r1522_2(glval<double &>) = VariableAddress[d] :
|
||||
# 1522| r1522_3(double &) = Load[d] : &:r1522_2, ~m?
|
||||
# 1522| r1522_4(glval<double>) = CopyValue : r1522_3
|
||||
# 1522| r1522_5(double &) = CopyValue : r1522_4
|
||||
# 1522| mu1522_6(double &) = Store[rd] : &:r1522_1, r1522_5
|
||||
# 1523| r1523_1(glval<int>) = VariableAddress[v] :
|
||||
# 1523| r1523_2(glval<int &>) = VariableAddress[i] :
|
||||
# 1523| r1523_3(int &) = Load[i] : &:r1523_2, ~m?
|
||||
# 1523| r1523_4(int) = Load[?] : &:r1523_3, ~m?
|
||||
# 1523| mu1523_5(int) = Store[v] : &:r1523_1, r1523_4
|
||||
# 1524| r1524_1(int) = Constant[5] :
|
||||
# 1524| r1524_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1524| r1524_3(int &) = Load[r] : &:r1524_2, ~m?
|
||||
# 1524| r1524_4(glval<int>) = CopyValue : r1524_3
|
||||
# 1524| mu1524_5(int) = Store[?] : &:r1524_4, r1524_1
|
||||
# 1525| r1525_1(int) = Constant[6] :
|
||||
# 1525| r1525_2(glval<int *&>) = VariableAddress[p] :
|
||||
# 1525| r1525_3(int *&) = Load[p] : &:r1525_2, ~m?
|
||||
# 1525| r1525_4(int *) = Load[?] : &:r1525_3, ~m?
|
||||
# 1525| r1525_5(glval<int>) = CopyValue : r1525_4
|
||||
# 1525| mu1525_6(int) = Store[?] : &:r1525_5, r1525_1
|
||||
# 1526| r1526_1(glval<int &>) = VariableAddress[rr] :
|
||||
# 1526| r1526_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1526| r1526_3(int &) = Load[r] : &:r1526_2, ~m?
|
||||
# 1526| r1526_4(glval<int>) = CopyValue : r1526_3
|
||||
# 1526| r1526_5(int &) = CopyValue : r1526_4
|
||||
# 1526| mu1526_6(int &) = Store[rr] : &:r1526_1, r1526_5
|
||||
# 1527| r1527_1(glval<int *>) = VariableAddress[pr] :
|
||||
# 1527| r1527_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1527| r1527_3(int &) = Load[r] : &:r1527_2, ~m?
|
||||
# 1527| r1527_4(glval<int>) = CopyValue : r1527_3
|
||||
# 1527| r1527_5(int *) = CopyValue : r1527_4
|
||||
# 1527| mu1527_6(int *) = Store[pr] : &:r1527_1, r1527_5
|
||||
# 1528| r1528_1(glval<int>) = VariableAddress[w] :
|
||||
# 1528| r1528_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1528| r1528_3(int &) = Load[r] : &:r1528_2, ~m?
|
||||
# 1528| r1528_4(int) = Load[?] : &:r1528_3, ~m?
|
||||
# 1528| mu1528_5(int) = Store[w] : &:r1528_1, r1528_4
|
||||
# 1530| v1530_1(void) = NoOp :
|
||||
# 1499| v1499_4(void) = ReturnVoid :
|
||||
# 1499| v1499_5(void) = AliasedUse : ~m?
|
||||
# 1499| v1499_6(void) = ExitFunction :
|
||||
|
||||
# 1539| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet()
|
||||
# 1539| Block 0
|
||||
@@ -8422,6 +8422,248 @@ ir.cpp:
|
||||
# 1579| v1579_5(void) = AliasedUse : ~m?
|
||||
# 1579| v1579_6(void) = ExitFunction :
|
||||
|
||||
# 1606| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet()
|
||||
# 1606| Block 0
|
||||
# 1606| v1606_1(void) = EnterFunction :
|
||||
# 1606| mu1606_2(unknown) = AliasedDefinition :
|
||||
# 1606| mu1606_3(unknown) = InitializeNonLocal :
|
||||
# 1606| r1606_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1606| mu1606_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1606_4
|
||||
# 1606| r1606_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1606_4, ~m?
|
||||
# 1606| mu1606_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1606_6
|
||||
# 1606| v1606_8(void) = NoOp :
|
||||
# 1606| v1606_9(void) = ReturnIndirection[#this] : &:r1606_6, ~m?
|
||||
# 1606| v1606_10(void) = ReturnVoid :
|
||||
# 1606| v1606_11(void) = AliasedUse : ~m?
|
||||
# 1606| v1606_12(void) = ExitFunction :
|
||||
|
||||
# 1633| std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 0>()
|
||||
# 1633| Block 0
|
||||
# 1633| v1633_1(void) = EnterFunction :
|
||||
# 1633| mu1633_2(unknown) = AliasedDefinition :
|
||||
# 1633| mu1633_3(unknown) = InitializeNonLocal :
|
||||
# 1633| r1633_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1633| mu1633_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1633_4
|
||||
# 1633| r1633_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1633_4, ~m?
|
||||
# 1633| mu1633_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1633_6
|
||||
# 1634| r1634_1(glval<int>) = VariableAddress[#return] :
|
||||
# 1634| r1634_2(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1634| r1634_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1634_2, ~m?
|
||||
# 1634| r1634_4(glval<int>) = FieldAddress[i] : r1634_3
|
||||
# 1634| r1634_5(int) = Load[?] : &:r1634_4, ~m?
|
||||
# 1634| mu1634_6(int) = Store[#return] : &:r1634_1, r1634_5
|
||||
# 1633| v1633_8(void) = ReturnIndirection[#this] : &:r1633_6, ~m?
|
||||
# 1633| r1633_9(glval<int>) = VariableAddress[#return] :
|
||||
# 1633| v1633_10(void) = ReturnValue : &:r1633_9, ~m?
|
||||
# 1633| v1633_11(void) = AliasedUse : ~m?
|
||||
# 1633| v1633_12(void) = ExitFunction :
|
||||
|
||||
# 1637| std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 1>()
|
||||
# 1637| Block 0
|
||||
# 1637| v1637_1(void) = EnterFunction :
|
||||
# 1637| mu1637_2(unknown) = AliasedDefinition :
|
||||
# 1637| mu1637_3(unknown) = InitializeNonLocal :
|
||||
# 1637| r1637_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1637| mu1637_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1637_4
|
||||
# 1637| r1637_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1637_4, ~m?
|
||||
# 1637| mu1637_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1637_6
|
||||
# 1638| r1638_1(glval<int &>) = VariableAddress[#return] :
|
||||
# 1638| r1638_2(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1638| r1638_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1638_2, ~m?
|
||||
# 1638| r1638_4(glval<int &>) = FieldAddress[r] : r1638_3
|
||||
# 1638| r1638_5(int &) = Load[?] : &:r1638_4, ~m?
|
||||
# 1638| r1638_6(glval<int>) = CopyValue : r1638_5
|
||||
# 1638| r1638_7(int &) = CopyValue : r1638_6
|
||||
# 1638| mu1638_8(int &) = Store[#return] : &:r1638_1, r1638_7
|
||||
# 1637| v1637_8(void) = ReturnIndirection[#this] : &:r1637_6, ~m?
|
||||
# 1637| r1637_9(glval<int &>) = VariableAddress[#return] :
|
||||
# 1637| v1637_10(void) = ReturnValue : &:r1637_9, ~m?
|
||||
# 1637| v1637_11(void) = AliasedUse : ~m?
|
||||
# 1637| v1637_12(void) = ExitFunction :
|
||||
|
||||
# 1641| std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 2>()
|
||||
# 1641| Block 0
|
||||
# 1641| v1641_1(void) = EnterFunction :
|
||||
# 1641| mu1641_2(unknown) = AliasedDefinition :
|
||||
# 1641| mu1641_3(unknown) = InitializeNonLocal :
|
||||
# 1641| r1641_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1641| mu1641_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1641_4
|
||||
# 1641| r1641_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1641_4, ~m?
|
||||
# 1641| mu1641_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1641_6
|
||||
# 1642| r1642_1(glval<int &&>) = VariableAddress[#return] :
|
||||
# 1642| r1642_2(glval<int>) = VariableAddress[#temp1642:12] :
|
||||
# 1642| r1642_3(int) = Constant[5] :
|
||||
# 1642| mu1642_4(int) = Store[#temp1642:12] : &:r1642_2, r1642_3
|
||||
# 1642| r1642_5(int &) = CopyValue : r1642_2
|
||||
# 1642| mu1642_6(int &&) = Store[#return] : &:r1642_1, r1642_5
|
||||
# 1641| v1641_8(void) = ReturnIndirection[#this] : &:r1641_6, ~m?
|
||||
# 1641| r1641_9(glval<int &&>) = VariableAddress[#return] :
|
||||
# 1641| v1641_10(void) = ReturnValue : &:r1641_9, ~m?
|
||||
# 1641| v1641_11(void) = AliasedUse : ~m?
|
||||
# 1641| v1641_12(void) = ExitFunction :
|
||||
|
||||
# 1645| void tuple_structured_binding_no_ref_get()
|
||||
# 1645| Block 0
|
||||
# 1645| v1645_1(void) = EnterFunction :
|
||||
# 1645| mu1645_2(unknown) = AliasedDefinition :
|
||||
# 1645| mu1645_3(unknown) = InitializeNonLocal :
|
||||
# 1646| r1646_1(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] :
|
||||
# 1646| mu1646_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1646_1
|
||||
# 1646| r1646_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleNoRefGet] :
|
||||
# 1646| v1646_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1646_3, this:r1646_1
|
||||
# 1646| mu1646_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 1646| mu1646_6(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1646_1
|
||||
# 1649| r1649_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1649| r1649_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] :
|
||||
# 1649| r1649_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1649_2
|
||||
# 1649| mu1649_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1649_1, r1649_3
|
||||
# 1649| r1649_5(glval<int &&>) = VariableAddress[i] :
|
||||
# 1649| r1649_6(glval<int>) = VariableAddress[#temp1649:16] :
|
||||
# 1649| r1649_7(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1649| r1649_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1649_7, ~m?
|
||||
# 1649| r1649_9(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1649_8
|
||||
# 1649| r1649_10(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1649| r1649_11(int) = Call[get] : func:r1649_10, this:r1649_9
|
||||
# 1649| mu1649_12(unknown) = ^CallSideEffect : ~m?
|
||||
# 1649| v1649_13(void) = ^IndirectReadSideEffect[-1] : &:r1649_9, ~m?
|
||||
# 1649| mu1649_14(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1649_9
|
||||
# 1649| mu1649_15(int) = Store[#temp1649:16] : &:r1649_6, r1649_11
|
||||
# 1649| r1649_16(int &) = CopyValue : r1649_6
|
||||
# 1649| mu1649_17(int &&) = Store[i] : &:r1649_5, r1649_16
|
||||
# 1649| r1649_18(glval<int &>) = VariableAddress[r] :
|
||||
# 1649| r1649_19(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1649| r1649_20(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1649_19, ~m?
|
||||
# 1649| r1649_21(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1649_20
|
||||
# 1649| r1649_22(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1649| r1649_23(int &) = Call[get] : func:r1649_22, this:r1649_21
|
||||
# 1649| mu1649_24(unknown) = ^CallSideEffect : ~m?
|
||||
# 1649| v1649_25(void) = ^IndirectReadSideEffect[-1] : &:r1649_21, ~m?
|
||||
# 1649| mu1649_26(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1649_21
|
||||
# 1649| r1649_27(glval<int>) = CopyValue : r1649_23
|
||||
# 1649| r1649_28(int &) = CopyValue : r1649_27
|
||||
# 1649| mu1649_29(int &) = Store[r] : &:r1649_18, r1649_28
|
||||
# 1649| r1649_30(glval<int &&>) = VariableAddress[rv] :
|
||||
# 1649| r1649_31(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1649| r1649_32(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1649_31, ~m?
|
||||
# 1649| r1649_33(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1649_32
|
||||
# 1649| r1649_34(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1649| r1649_35(int &&) = Call[get] : func:r1649_34, this:r1649_33
|
||||
# 1649| mu1649_36(unknown) = ^CallSideEffect : ~m?
|
||||
# 1649| v1649_37(void) = ^IndirectReadSideEffect[-1] : &:r1649_33, ~m?
|
||||
# 1649| mu1649_38(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1649_33
|
||||
# 1649| r1649_39(glval<int>) = CopyValue : r1649_35
|
||||
# 1649| r1649_40(int &) = CopyValue : r1649_39
|
||||
# 1649| mu1649_41(int &&) = Store[rv] : &:r1649_30, r1649_40
|
||||
# 1650| r1650_1(int) = Constant[4] :
|
||||
# 1650| r1650_2(glval<int &&>) = VariableAddress[i] :
|
||||
# 1650| r1650_3(int &&) = Load[i] : &:r1650_2, ~m?
|
||||
# 1650| r1650_4(glval<int>) = CopyValue : r1650_3
|
||||
# 1650| mu1650_5(int) = Store[?] : &:r1650_4, r1650_1
|
||||
# 1651| r1651_1(glval<int &>) = VariableAddress[ri] :
|
||||
# 1651| r1651_2(glval<int &&>) = VariableAddress[i] :
|
||||
# 1651| r1651_3(int &&) = Load[i] : &:r1651_2, ~m?
|
||||
# 1651| r1651_4(glval<int>) = CopyValue : r1651_3
|
||||
# 1651| r1651_5(int &) = CopyValue : r1651_4
|
||||
# 1651| mu1651_6(int &) = Store[ri] : &:r1651_1, r1651_5
|
||||
# 1652| r1652_1(glval<int>) = VariableAddress[v] :
|
||||
# 1652| r1652_2(glval<int &&>) = VariableAddress[i] :
|
||||
# 1652| r1652_3(int &&) = Load[i] : &:r1652_2, ~m?
|
||||
# 1652| r1652_4(int) = Load[?] : &:r1652_3, ~m?
|
||||
# 1652| mu1652_5(int) = Store[v] : &:r1652_1, r1652_4
|
||||
# 1653| r1653_1(int) = Constant[5] :
|
||||
# 1653| r1653_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1653| r1653_3(int &) = Load[r] : &:r1653_2, ~m?
|
||||
# 1653| r1653_4(glval<int>) = CopyValue : r1653_3
|
||||
# 1653| mu1653_5(int) = Store[?] : &:r1653_4, r1653_1
|
||||
# 1654| r1654_1(glval<int &>) = VariableAddress[rr] :
|
||||
# 1654| r1654_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1654| r1654_3(int &) = Load[r] : &:r1654_2, ~m?
|
||||
# 1654| r1654_4(glval<int>) = CopyValue : r1654_3
|
||||
# 1654| r1654_5(int &) = CopyValue : r1654_4
|
||||
# 1654| mu1654_6(int &) = Store[rr] : &:r1654_1, r1654_5
|
||||
# 1655| r1655_1(glval<int>) = VariableAddress[w] :
|
||||
# 1655| r1655_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1655| r1655_3(int &) = Load[r] : &:r1655_2, ~m?
|
||||
# 1655| r1655_4(int) = Load[?] : &:r1655_3, ~m?
|
||||
# 1655| mu1655_5(int) = Store[w] : &:r1655_1, r1655_4
|
||||
# 1659| r1659_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1659| r1659_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] :
|
||||
# 1659| r1659_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1659_2
|
||||
# 1659| mu1659_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1659_1, r1659_3
|
||||
# 1660| r1660_1(glval<int &&>) = VariableAddress[i] :
|
||||
# 1660| r1660_2(glval<int>) = VariableAddress[#temp1660:20] :
|
||||
# 1660| r1660_3(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1660| r1660_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1660_3, ~m?
|
||||
# 1660| r1660_5(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1660_4
|
||||
# 1660| r1660_6(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1660| r1660_7(int) = Call[get] : func:r1660_6, this:r1660_5
|
||||
# 1660| mu1660_8(unknown) = ^CallSideEffect : ~m?
|
||||
# 1660| v1660_9(void) = ^IndirectReadSideEffect[-1] : &:r1660_5, ~m?
|
||||
# 1660| mu1660_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1660_5
|
||||
# 1660| mu1660_11(int) = Store[#temp1660:20] : &:r1660_2, r1660_7
|
||||
# 1660| r1660_12(int &) = CopyValue : r1660_2
|
||||
# 1660| mu1660_13(int &&) = Store[i] : &:r1660_1, r1660_12
|
||||
# 1661| r1661_1(glval<int &>) = VariableAddress[r] :
|
||||
# 1661| r1661_2(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1661| r1661_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1661_2, ~m?
|
||||
# 1661| r1661_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1661_3
|
||||
# 1661| r1661_5(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1661| r1661_6(int &) = Call[get] : func:r1661_5, this:r1661_4
|
||||
# 1661| mu1661_7(unknown) = ^CallSideEffect : ~m?
|
||||
# 1661| v1661_8(void) = ^IndirectReadSideEffect[-1] : &:r1661_4, ~m?
|
||||
# 1661| mu1661_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1661_4
|
||||
# 1661| r1661_10(glval<int>) = CopyValue : r1661_6
|
||||
# 1661| r1661_11(int &) = CopyValue : r1661_10
|
||||
# 1661| mu1661_12(int &) = Store[r] : &:r1661_1, r1661_11
|
||||
# 1662| r1662_1(glval<int &&>) = VariableAddress[rv] :
|
||||
# 1662| r1662_2(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1662| r1662_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1662_2, ~m?
|
||||
# 1662| r1662_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1662_3
|
||||
# 1662| r1662_5(glval<unknown>) = FunctionAddress[get] :
|
||||
# 1662| r1662_6(int &&) = Call[get] : func:r1662_5, this:r1662_4
|
||||
# 1662| mu1662_7(unknown) = ^CallSideEffect : ~m?
|
||||
# 1662| v1662_8(void) = ^IndirectReadSideEffect[-1] : &:r1662_4, ~m?
|
||||
# 1662| mu1662_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1662_4
|
||||
# 1662| r1662_10(glval<int>) = CopyValue : r1662_6
|
||||
# 1662| r1662_11(int &) = CopyValue : r1662_10
|
||||
# 1662| mu1662_12(int &&) = Store[rv] : &:r1662_1, r1662_11
|
||||
# 1663| r1663_1(int) = Constant[4] :
|
||||
# 1663| r1663_2(glval<int &&>) = VariableAddress[i] :
|
||||
# 1663| r1663_3(int &&) = Load[i] : &:r1663_2, ~m?
|
||||
# 1663| r1663_4(glval<int>) = CopyValue : r1663_3
|
||||
# 1663| mu1663_5(int) = Store[?] : &:r1663_4, r1663_1
|
||||
# 1664| r1664_1(glval<int &>) = VariableAddress[ri] :
|
||||
# 1664| r1664_2(glval<int &&>) = VariableAddress[i] :
|
||||
# 1664| r1664_3(int &&) = Load[i] : &:r1664_2, ~m?
|
||||
# 1664| r1664_4(glval<int>) = CopyValue : r1664_3
|
||||
# 1664| r1664_5(int &) = CopyValue : r1664_4
|
||||
# 1664| mu1664_6(int &) = Store[ri] : &:r1664_1, r1664_5
|
||||
# 1665| r1665_1(glval<int>) = VariableAddress[v] :
|
||||
# 1665| r1665_2(glval<int &&>) = VariableAddress[i] :
|
||||
# 1665| r1665_3(int &&) = Load[i] : &:r1665_2, ~m?
|
||||
# 1665| r1665_4(int) = Load[?] : &:r1665_3, ~m?
|
||||
# 1665| mu1665_5(int) = Store[v] : &:r1665_1, r1665_4
|
||||
# 1666| r1666_1(int) = Constant[5] :
|
||||
# 1666| r1666_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1666| r1666_3(int &) = Load[r] : &:r1666_2, ~m?
|
||||
# 1666| r1666_4(glval<int>) = CopyValue : r1666_3
|
||||
# 1666| mu1666_5(int) = Store[?] : &:r1666_4, r1666_1
|
||||
# 1667| r1667_1(glval<int &>) = VariableAddress[rr] :
|
||||
# 1667| r1667_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1667| r1667_3(int &) = Load[r] : &:r1667_2, ~m?
|
||||
# 1667| r1667_4(glval<int>) = CopyValue : r1667_3
|
||||
# 1667| r1667_5(int &) = CopyValue : r1667_4
|
||||
# 1667| mu1667_6(int &) = Store[rr] : &:r1667_1, r1667_5
|
||||
# 1668| r1668_1(glval<int>) = VariableAddress[w] :
|
||||
# 1668| r1668_2(glval<int &>) = VariableAddress[r] :
|
||||
# 1668| r1668_3(int &) = Load[r] : &:r1668_2, ~m?
|
||||
# 1668| r1668_4(int) = Load[?] : &:r1668_3, ~m?
|
||||
# 1668| mu1668_5(int) = Store[w] : &:r1668_1, r1668_4
|
||||
# 1670| v1670_1(void) = NoOp :
|
||||
# 1645| v1645_4(void) = ReturnVoid :
|
||||
# 1645| v1645_5(void) = AliasedUse : ~m?
|
||||
# 1645| v1645_6(void) = ExitFunction :
|
||||
|
||||
perf-regression.cpp:
|
||||
# 6| void Big::Big()
|
||||
# 6| Block 0
|
||||
|
||||
Reference in New Issue
Block a user