Merge branch 'main' into destructors-for-unconditional-unnamed

This commit is contained in:
Mathias Vorreiter Pedersen
2024-04-10 17:34:08 +01:00
205 changed files with 3083 additions and 3389 deletions

View File

@@ -9,6 +9,7 @@ dependencies:
codeql/dataflow: ${workspace}
codeql/rangeanalysis: ${workspace}
codeql/ssa: ${workspace}
codeql/typeflow: ${workspace}
codeql/tutorial: ${workspace}
codeql/util: ${workspace}
codeql/xml: ${workspace}

View File

@@ -6,6 +6,7 @@ private import DataFlowImplCommon as DataFlowImplCommon
private import DataFlowUtil
private import semmle.code.cpp.models.interfaces.PointerWrapper
private import DataFlowPrivate
private import TypeFlow
private import semmle.code.cpp.ir.ValueNumbering
/**
@@ -955,11 +956,7 @@ private module Cached {
* Holds if the address computed by `operand` is guaranteed to write
* to a specific address.
*/
private predicate isCertainAddress(Operand operand) {
valueNumberOfOperand(operand).getAnInstruction() instanceof VariableAddressInstruction
or
operand.getType() instanceof Cpp::ReferenceType
}
private predicate isCertainAddress(Operand operand) { isPointerToSingleObject(operand.getDef()) }
/**
* Holds if `address` is a use of an SSA variable rooted at `base`, and the

View File

@@ -0,0 +1,278 @@
private import cpp
private import semmle.code.cpp.ir.IR
private import codeql.typeflow.TypeFlow
private module Input implements TypeFlowInput<Location> {
/** Holds if `alloc` dynamically allocates a single object. */
private predicate isSingleObjectAllocation(AllocationExpr alloc) {
// i.e., `new int`;
alloc instanceof NewExpr
or
// i.e., `malloc(sizeof(int))`
exists(SizeofTypeOperator sizeOf | sizeOf = alloc.getSizeExpr() |
not sizeOf.getTypeOperand().getUnspecifiedType() instanceof ArrayType
)
}
/**
* Holds if `i` is the result of a dynamic allocation.
*
* `isObject` is `true` if the allocation allocated a single object,
* and `false` otherwise.
*/
private predicate isAllocation(Instruction i, boolean isObject) {
exists(AllocationExpr alloc | alloc = i.getUnconvertedResultExpression() |
if isSingleObjectAllocation(alloc) then isObject = true else isObject = false
)
}
private predicate hasExactSingleType(Instruction i) {
// The address of a variable is always a single object
i instanceof VariableAddressInstruction
or
// A reference always points to a single object
i.getResultLanguageType().hasUnspecifiedType(any(ReferenceType rt), false)
or
// `this` is never an array
i instanceof InitializeThisInstruction
or
// An allocation of a non-array object
isAllocation(i, true)
}
private predicate hasExactBufferType(Instruction i) {
// Anything with an array type is a buffer
i.getResultLanguageType().hasUnspecifiedType(any(ArrayType at), false)
or
// An allocation expression that we couldn't conclude allocated a single
// expression is assigned a buffer type.
isAllocation(i, false)
}
private newtype TTypeFlowNode =
TInstructionNode(Instruction i) or
TFunctionNode(IRFunction func)
abstract class TypeFlowNode extends TTypeFlowNode {
/** Gets a textual representation of this node. */
abstract string toString();
/**
* Gets the type of this node. This type may not be the most precise
* possible type, but will be used as a starting point of the analysis.
*/
abstract Type getType();
/** Gets the location of this node. */
abstract Location getLocation();
/** Gets the underlying `Instruction` of this node, if any. */
Instruction asInstruction() { none() }
/** Gets the underlying `IRFunction` of this node, if any. */
IRFunction asFunction() { none() }
/** Holds if the value of this node is always null. */
abstract predicate isNullValue();
}
private class InstructionNode extends TypeFlowNode, TInstructionNode {
Instruction instr;
InstructionNode() { this = TInstructionNode(instr) }
override string toString() { result = instr.toString() }
override Type getType() {
if hasExactSingleType(instr) then result.isSingle() else result.isBuffer()
}
override Location getLocation() { result = instr.getLocation() }
override Instruction asInstruction() { result = instr }
override predicate isNullValue() {
instr.(ConstantInstruction).getValue() = "0" and
instr.getResultIRType() instanceof IRAddressType
}
}
/** Gets the `TypeFlowNode` corresponding to `i`. */
additional InstructionNode instructionNode(Instruction i) { result.asInstruction() = i }
private class FunctionNode extends TypeFlowNode, TFunctionNode {
IRFunction func;
FunctionNode() { this = TFunctionNode(func) }
override string toString() { result = func.toString() }
Instruction getReturnValueInstruction() {
result = func.getReturnInstruction().(ReturnValueInstruction).getReturnValue()
}
override Type getType() { result = instructionNode(this.getReturnValueInstruction()).getType() }
override Location getLocation() { result = func.getLocation() }
override IRFunction asFunction() { result = func }
override predicate isNullValue() {
instructionNode(this.getReturnValueInstruction()).isNullValue()
}
}
/**
* Gets an ultimiate definition of `phi`. That is, an input to `phi` that is
* not itself a `PhiInstruction`.
*/
private Instruction getAnUltimateLocalDefinition(PhiInstruction phi) {
result = phi.getAnInput*() and not result instanceof PhiInstruction
}
/**
* Holds if this function is private (i.e., cannot be accessed outside its
* compilation unit). This means we can use a closed-world assumption about
* calls to this function.
*/
private predicate isPrivate(Function func) {
// static functions have internal linkage
func.isStatic()
or
// anonymous namespaces have internal linkage
func.getNamespace().getParentNamespace*().isAnonymous()
or
// private member functions are only called internally from inside the class
func.(MemberFunction).isPrivate()
}
/**
* Holds if `arg` is an argument for the parameter `p` in a private callable.
*/
pragma[nomagic]
private predicate privateParamArg(InitializeParameterInstruction p, Instruction arg) {
exists(CallInstruction call, int i, Function func |
call.getArgument(pragma[only_bind_into](i)) = arg and
func = call.getStaticCallTarget() and
func.getParameter(pragma[only_bind_into](i)) = p.getParameter() and
isPrivate(func)
)
}
predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) {
// instruction -> phi
getAnUltimateLocalDefinition(n2.asInstruction()) = n1.asInstruction()
or
// return value -> function
n2.(FunctionNode).getReturnValueInstruction() = n1.asInstruction()
or
// function -> call
exists(Function func | func = n1.asFunction().getFunction() |
not func.isVirtual() and
n2.asInstruction().(CallInstruction).getStaticCallTarget() = func
)
or
// Argument -> parameter where the parameter's enclosing function
// is "private".
exists(Instruction arg, Instruction p |
privateParamArg(p, arg) and
n1.asInstruction() = arg and
n2.asInstruction() = p
)
}
/**
* Holds if knowing whether `i1` points to a single object or buffer implies
* knowing whether `i2` points to a single object or buffer.
*/
private predicate instructionStep(Instruction i1, Instruction i2) {
i2.(CopyInstruction).getSourceValue() = i1
or
i2.(CopyValueInstruction).getSourceValue() = i1
or
i2.(ConvertInstruction).getUnary() = i1
or
i2.(CheckedConvertOrNullInstruction).getUnary() = i1
or
i2.(InheritanceConversionInstruction).getUnary() = i1
or
i2.(PointerArithmeticInstruction).getLeft() = i1
}
predicate step(TypeFlowNode n1, TypeFlowNode n2) {
instructionStep(n1.asInstruction(), n2.asInstruction())
}
predicate isNullValue(TypeFlowNode n) { n.isNullValue() }
private newtype TType =
TSingle() or
TBuffer()
class Type extends TType {
string toString() {
this.isSingle() and
result = "Single"
or
this.isBuffer() and
result = "Buffer"
}
/** Holds if this type is the type that represents a single object. */
predicate isSingle() { this = TSingle() }
/** Holds if this type is the type that represents a buffer. */
predicate isBuffer() { this = TBuffer() }
/**
* Gets a super type of this type, if any.
*
* The type relation is `Single <: Buffer`.
*/
Type getASupertype() {
this.isSingle() and
result.isBuffer()
}
}
predicate exactTypeBase(TypeFlowNode n, Type t) {
exists(Instruction instr | instr = n.asInstruction() |
hasExactSingleType(instr) and t.isSingle()
or
hasExactBufferType(instr) and t.isBuffer()
)
}
pragma[nomagic]
private predicate upcastCand(TypeFlowNode n, Type t1, Type t2) {
exists(TypeFlowNode next |
step(n, next)
or
joinStep(n, next)
|
n.getType() = t1 and
next.getType() = t2 and
t1 != t2
)
}
private predicate upcast(TypeFlowNode n, Type t1) {
exists(Type t2 | upcastCand(n, t1, t2) |
// No need for transitive closure since the subtyping relation is just `Single <: Buffer`
t1.getASupertype() = t2
)
}
predicate typeFlowBaseCand(TypeFlowNode n, Type t) { upcast(n, t) }
}
private module TypeFlow = Make<Location, Input>;
/**
* Holds if `i` is an instruction that computes an address that points to a
* single object (as opposed to pointing into a buffer).
*/
pragma[nomagic]
predicate isPointerToSingleObject(Instruction i) {
TypeFlow::bestTypeFlow(Input::instructionNode(i), any(Input::Type t | t.isSingle()), _)
}

View File

@@ -544,8 +544,7 @@ private module IRDeclarationEntries {
* An entity that represents a declaration entry in the database.
*
* This class exists to work around the fact that `DeclStmt`s in some cases
* do not have `DeclarationEntry`s. Currently, this is the case for:
* - `DeclStmt`s in template instantiations.
* do not have `DeclarationEntry`s in older databases.
*
* So instead, the IR works with `IRDeclarationEntry`s that synthesize missing
* `DeclarationEntry`s when there is no result for `DeclStmt::getDeclarationEntry`.

View File

@@ -123,7 +123,7 @@ class IteratorCrementNonMemberOperator extends Operator {
}
private class IteratorCrementNonMemberOperatorModel extends IteratorCrementNonMemberOperator,
DataFlowFunction
DataFlowFunction, SideEffectFunction, AliasFunction
{
override predicate hasDataFlow(FunctionInput input, FunctionOutput output) {
input = getIteratorArgumentInput(this, 0) and
@@ -131,6 +131,24 @@ private class IteratorCrementNonMemberOperatorModel extends IteratorCrementNonMe
or
input.isParameterDeref(0) and output.isReturnValueDeref()
}
override predicate hasOnlySpecificReadSideEffects() { any() }
override predicate hasOnlySpecificWriteSideEffects() { any() }
override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
i = 0 and buffer = false
}
override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
// See the comment on `IteratorCrementMemberOperatorModel::hasSpecificWriteSideEffect`
// for an explanation of these values.
i = 0 and buffer = false and mustWrite = false
}
override predicate parameterNeverEscapes(int index) { none() }
override predicate parameterEscapesOnlyViaReturn(int index) { index = 0 }
}
/**
@@ -146,7 +164,7 @@ class IteratorCrementMemberOperator extends MemberFunction {
}
private class IteratorCrementMemberOperatorModel extends IteratorCrementMemberOperator,
DataFlowFunction, TaintFunction
DataFlowFunction, TaintFunction, SideEffectFunction, AliasFunction
{
override predicate hasDataFlow(FunctionInput input, FunctionOutput output) {
input.isQualifierAddress() and
@@ -163,6 +181,28 @@ private class IteratorCrementMemberOperatorModel extends IteratorCrementMemberOp
input.isQualifierObject() and
output.isReturnValueDeref()
}
override predicate hasOnlySpecificReadSideEffects() { any() }
override predicate hasOnlySpecificWriteSideEffects() { any() }
override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
i = -1 and buffer = false
}
override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
// We have two choices here: either `buffer` must be `true` or `mustWrite`
// must be `false` to ensure that the IR alias analysis doesn't think that
// `it++` completely override the value of the iterator.
// We choose `mustWrite` must be `false`. In that case, the value of
// `buffer` isn't super important (it just decides which kind of read side
// effect will be emitted).
i = -1 and buffer = false and mustWrite = false
}
override predicate parameterNeverEscapes(int index) { index = -1 }
override predicate parameterEscapesOnlyViaReturn(int index) { none() }
}
/**
@@ -332,7 +372,7 @@ class IteratorAssignArithmeticOperator extends Function {
* non-member and member versions, use `IteratorPointerDereferenceOperator`.
*/
class IteratorPointerDereferenceMemberOperator extends MemberFunction, TaintFunction,
IteratorReferenceFunction
IteratorReferenceFunction, AliasFunction, SideEffectFunction
{
IteratorPointerDereferenceMemberOperator() {
this.getClassAndName("operator*") instanceof Iterator
@@ -345,6 +385,18 @@ class IteratorPointerDereferenceMemberOperator extends MemberFunction, TaintFunc
input.isReturnValueDeref() and
output.isQualifierObject()
}
override predicate parameterNeverEscapes(int index) { index = -1 }
override predicate parameterEscapesOnlyViaReturn(int index) { none() }
override predicate hasOnlySpecificReadSideEffects() { any() }
override predicate hasOnlySpecificWriteSideEffects() { any() }
override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
i = -1 and buffer = false
}
}
/**
@@ -361,7 +413,7 @@ class IteratorPointerDereferenceNonMemberOperator extends Operator, IteratorRefe
}
private class IteratorPointerDereferenceNonMemberOperatorModel extends IteratorPointerDereferenceNonMemberOperator,
TaintFunction
TaintFunction, AliasFunction, SideEffectFunction
{
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
input = getIteratorArgumentInput(this, 0) and
@@ -370,6 +422,18 @@ private class IteratorPointerDereferenceNonMemberOperatorModel extends IteratorP
input.isReturnValueDeref() and
output.isParameterDeref(0)
}
override predicate parameterNeverEscapes(int index) { index = 0 }
override predicate parameterEscapesOnlyViaReturn(int index) { none() }
override predicate hasOnlySpecificReadSideEffects() { any() }
override predicate hasOnlySpecificWriteSideEffects() { any() }
override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
i = 0 and buffer = false
}
}
/**
@@ -420,6 +484,71 @@ class IteratorAssignmentMemberOperator extends MemberFunction {
}
}
/**
* A member `operator==` or `operator!=` function for an iterator type.
*
* Note that this class _only_ matches member functions. To find both
* non-member and member versions, use `IteratorLogicalOperator`.
*/
class IteratorLogicalMemberOperator extends MemberFunction {
IteratorLogicalMemberOperator() {
this.getClassAndName(["operator!=", "operator=="]) instanceof Iterator
}
}
private class IteratorLogicalMemberOperatorModel extends IteratorLogicalMemberOperator,
AliasFunction, SideEffectFunction
{
override predicate parameterNeverEscapes(int index) { index = [-1, 0] }
override predicate parameterEscapesOnlyViaReturn(int index) { none() }
override predicate hasOnlySpecificReadSideEffects() { any() }
override predicate hasOnlySpecificWriteSideEffects() { any() }
override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
i = -1 and buffer = false
}
}
/**
* A member `operator==` or `operator!=` function for an iterator type.
*
* Note that this class _only_ matches non-member functions. To find both
* non-member and member versions, use `IteratorLogicalOperator`.
*/
class IteratorLogicalNonMemberOperator extends Function {
IteratorLogicalNonMemberOperator() {
this.hasName(["operator!=", "operator=="]) and
exists(getIteratorArgumentInput(this, 0)) and
exists(getIteratorArgumentInput(this, 1))
}
}
private class IteratorLogicalNonMemberOperatorModel extends IteratorLogicalNonMemberOperator,
AliasFunction, SideEffectFunction
{
override predicate parameterNeverEscapes(int index) { index = [0, 1] }
override predicate parameterEscapesOnlyViaReturn(int index) { none() }
override predicate hasOnlySpecificReadSideEffects() { any() }
override predicate hasOnlySpecificWriteSideEffects() { any() }
}
/**
* A (member or non-member) `operator==` or `operator!=` function for an iterator type.
*/
class IteratorLogicalOperator extends Function {
IteratorLogicalOperator() {
this instanceof IteratorLogicalNonMemberOperator
or
this instanceof IteratorLogicalMemberOperator
}
}
/**
* An `operator=` member function of an iterator class that is not a copy or move assignment
* operator.
@@ -428,12 +557,26 @@ class IteratorAssignmentMemberOperator extends MemberFunction {
* `operator*` and use their own `operator=` to assign to the container.
*/
private class IteratorAssignmentMemberOperatorModel extends IteratorAssignmentMemberOperator,
TaintFunction
TaintFunction, SideEffectFunction, AliasFunction
{
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
input.isParameterDeref(0) and
output.isQualifierObject()
}
override predicate hasOnlySpecificReadSideEffects() { any() }
override predicate hasOnlySpecificWriteSideEffects() { any() }
override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
// See the comment on `IteratorCrementMemberOperatorModel::hasSpecificWriteSideEffect`
// for an explanation of these values.
i = -1 and buffer = false and mustWrite = false
}
override predicate parameterNeverEscapes(int index) { index = 0 }
override predicate parameterEscapesOnlyViaReturn(int index) { index = -1 }
}
/**

View File

@@ -10,7 +10,9 @@
| CPP-205.cpp:2:15:5:1 | { ... } | isFromUninstantiatedTemplate(fn) |
| CPP-205.cpp:3:3:3:33 | declaration | isFromTemplateInstantiation(fn) |
| CPP-205.cpp:3:3:3:33 | declaration | isFromUninstantiatedTemplate(fn) |
| CPP-205.cpp:3:15:3:15 | declaration of y | isFromTemplateInstantiation(fn) |
| CPP-205.cpp:3:15:3:15 | declaration of y | isFromUninstantiatedTemplate(fn) |
| CPP-205.cpp:3:15:3:15 | y | isFromTemplateInstantiation(fn) |
| CPP-205.cpp:3:15:3:15 | y | isFromUninstantiatedTemplate(fn) |
| CPP-205.cpp:3:17:3:31 | 5 | isFromTemplateInstantiation(fn) |
| CPP-205.cpp:4:3:4:11 | return ... | isFromTemplateInstantiation(fn) |

View File

@@ -33,6 +33,7 @@ argHasPostUpdate
| test.cpp:67:29:67:35 | source1 | ArgumentNode is missing PostUpdateNode. |
| test.cpp:813:19:813:35 | * ... | ArgumentNode is missing PostUpdateNode. |
| test.cpp:848:23:848:25 | rpx | ArgumentNode is missing PostUpdateNode. |
| test.cpp:1057:19:1057:21 | * ... | ArgumentNode is missing PostUpdateNode. |
postWithInFlow
| BarrierGuard.cpp:49:6:49:6 | x [post update] | PostUpdateNode should not be the target of local flow. |
| BarrierGuard.cpp:60:7:60:7 | x [post update] | PostUpdateNode should not be the target of local flow. |
@@ -168,6 +169,13 @@ postWithInFlow
| test.cpp:1045:9:1045:11 | ref arg buf | PostUpdateNode should not be the target of local flow. |
| test.cpp:1051:5:1051:11 | content [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1052:9:1052:9 | a [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1056:5:1056:7 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1056:6:1056:7 | pp [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1062:53:1062:53 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1072:3:1072:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1072:4:1072:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1073:3:1073:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1073:4:1073:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
viableImplInCallContextTooLarge
uniqueParameterNodeAtPosition
uniqueParameterNodePosition

View File

@@ -1050,4 +1050,26 @@ void flow_out_of_address_with_local_flow() {
MyStruct a;
a.content = nullptr;
sink(&a); // $ SPURIOUS: ast
}
}
static void static_func_that_reassigns_pointer_before_sink(char** pp) { // $ ast-def=pp ir-def=*pp ir-def=**pp
*pp = "";
indirect_sink(*pp); // clean
}
void test_static_func_that_reassigns_pointer_before_sink() {
char* p = (char*)indirect_source();
static_func_that_reassigns_pointer_before_sink(&p);
}
void single_object_in_both_cases(bool b, int x, int y) {
int* p;
if(b) {
p = &x;
} else {
p = &y;
}
*p = source();
*p = 0;
sink(*p); // clean
}

View File

@@ -15,4 +15,5 @@ incorrectBaseType
| test.cpp:848:23:848:25 | (reference dereference) | Expected 'Node.getType()' to be int, but it was int * |
| test.cpp:854:10:854:36 | * ... | Expected 'Node.getType()' to be const int, but it was int |
| test.cpp:867:10:867:30 | * ... | Expected 'Node.getType()' to be const int, but it was int |
| test.cpp:1062:52:1062:53 | *& ... | Expected 'Node.getType()' to be char, but it was char * |
failures

View File

@@ -15657,6 +15657,8 @@ ir.cpp:
# 1911| Type = [CTypedefType,NestedTypedefType] pointer
# 1911| getEntryPoint(): [BlockStmt] { ... }
# 1912| getStmt(0): [DeclStmt] declaration
# 1912| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of _Res
# 1912| Type = [CTypedefType,LocalTypedefType] _Res
# 1913| getStmt(1): [ReturnStmt] return ...
# 1913| getExpr(): [VariableAccess] p
# 1913| Type = [CTypedefType,NestedTypedefType] pointer
@@ -15764,6 +15766,10 @@ ir.cpp:
# 1924| <params>:
# 1924| getEntryPoint(): [BlockStmt] { ... }
# 1925| getStmt(0): [DeclStmt] declaration
# 1925| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
# 1925| Type = [ArrayType] int[10]
# 1925| getDeclarationEntry(1): [VariableDeclarationEntry] definition of y
# 1925| Type = [ArrayType] int[10]
# 1926| getStmt(1): [ExprStmt] ExprStmt
# 1926| getExpr(): [AssignExpr] ... = ...
# 1926| Type = [IntType] int
@@ -15859,7 +15865,11 @@ ir.cpp:
# 1939| <params>:
# 1939| getEntryPoint(): [BlockStmt] { ... }
# 1940| getStmt(0): [DeclStmt] declaration
# 1940| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g
# 1940| Type = [IntType] int
# 1941| getStmt(1): [DeclStmt] declaration
# 1941| getDeclarationEntry(0): [FunctionDeclarationEntry] declaration of z
# 1941| Type = [IntType] int
# 1942| getStmt(2): [ReturnStmt] return ...
# 1942| getExpr(): [VariableAccess] g
# 1942| Type = [IntType] int

View File

@@ -7721,8 +7721,8 @@ ir.cpp:
#-----| Goto -> Block 1
# 1127| Block 1
# 1127| m1127_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 0:m1127_12, from 4:m1127_50
# 1127| m1127_20(unknown) = Phi : from 0:~m1126_4, from 4:~m1127_47
# 1127| m1127_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 0:m1127_12, from 4:m1127_44
# 1127| m1127_20(unknown) = Phi : from 0:~m1126_4, from 4:~m1127_27
# 1127| r1127_21(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_5(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_21
# 1127| r1127_22(glval<unknown>) = FunctionAddress[operator!=] :
@@ -7740,26 +7740,22 @@ ir.cpp:
# 1127| m1127_29(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_7, partial:m1127_28
#-----| r0_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_6, m1127_29
# 1127| r1127_30(bool) = Call[operator!=] : func:r1127_22, this:r0_5, 0:r0_11
# 1127| m1127_31(unknown) = ^CallSideEffect : ~m1127_27
# 1127| m1127_32(unknown) = Chi : total:m1127_27, partial:m1127_31
#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m1127_19
# 1127| v1127_33(void) = ConditionalBranch : r1127_30
# 1127| v1127_31(void) = ConditionalBranch : r1127_30
#-----| False -> Block 5
#-----| True -> Block 2
# 1127| Block 2
# 1127| r1127_34(glval<int>) = VariableAddress[e] :
# 1127| r1127_35(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_35
# 1127| r1127_36(glval<unknown>) = FunctionAddress[operator*] :
# 1127| r1127_37(int &) = Call[operator*] : func:r1127_36, this:r0_13
# 1127| m1127_38(unknown) = ^CallSideEffect : ~m1127_32
# 1127| m1127_39(unknown) = Chi : total:m1127_32, partial:m1127_38
# 1127| r1127_32(glval<int>) = VariableAddress[e] :
# 1127| r1127_33(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_33
# 1127| r1127_34(glval<unknown>) = FunctionAddress[operator*] :
# 1127| r1127_35(int &) = Call[operator*] : func:r1127_34, this:r0_13
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, m1127_19
# 1127| r1127_40(int) = Load[?] : &:r1127_37, ~m1127_39
# 1127| m1127_41(int) = Store[e] : &:r1127_34, r1127_40
# 1127| r1127_36(int) = Load[?] : &:r1127_35, ~m1127_27
# 1127| m1127_37(int) = Store[e] : &:r1127_32, r1127_36
# 1128| r1128_1(glval<int>) = VariableAddress[e] :
# 1128| r1128_2(int) = Load[e] : &:r1128_1, m1127_41
# 1128| r1128_2(int) = Load[e] : &:r1128_1, m1127_37
# 1128| r1128_3(int) = Constant[0] :
# 1128| r1128_4(bool) = CompareGT : r1128_2, r1128_3
# 1128| v1128_5(void) = ConditionalBranch : r1128_4
@@ -7771,16 +7767,14 @@ ir.cpp:
#-----| Goto -> Block 4
# 1127| Block 4
# 1127| v1127_42(void) = NoOp :
# 1127| r1127_43(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 1127| r1127_44(glval<unknown>) = FunctionAddress[operator++] :
# 1127| r1127_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1127_44, this:r1127_43
# 1127| m1127_46(unknown) = ^CallSideEffect : ~m1127_39
# 1127| m1127_47(unknown) = Chi : total:m1127_39, partial:m1127_46
# 1127| v1127_48(void) = ^IndirectReadSideEffect[-1] : &:r1127_43, m1127_19
# 1127| m1127_49(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1127_43
# 1127| m1127_50(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m1127_19, partial:m1127_49
# 1127| r1127_51(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1127_45
# 1127| v1127_38(void) = NoOp :
# 1127| r1127_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 1127| r1127_40(glval<unknown>) = FunctionAddress[operator++] :
# 1127| r1127_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1127_40, this:r1127_39
# 1127| v1127_42(void) = ^IndirectReadSideEffect[-1] : &:r1127_39, m1127_19
# 1127| m1127_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1127_39
# 1127| m1127_44(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m1127_19, partial:m1127_43
# 1127| r1127_45(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1127_41
#-----| Goto (back edge) -> Block 1
# 1133| Block 5
@@ -7809,8 +7803,8 @@ ir.cpp:
#-----| Goto -> Block 6
# 1133| Block 6
# 1133| m1133_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 5:m1133_12, from 7:m1133_41
# 1133| m1133_20(unknown) = Phi : from 5:~m1127_32, from 7:~m1133_38
# 1133| m1133_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 5:m1133_12, from 7:m1133_37
# 1133| m1133_20(unknown) = Phi : from 5:~m1127_27, from 7:~m1133_27
# 1133| r1133_21(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_21
# 1133| r1133_22(glval<unknown>) = FunctionAddress[operator!=] :
@@ -7828,41 +7822,35 @@ ir.cpp:
# 1133| m1133_29(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_21, partial:m1133_28
#-----| r0_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_20, m1133_29
# 1133| r1133_30(bool) = Call[operator!=] : func:r1133_22, this:r0_19, 0:r0_25
# 1133| m1133_31(unknown) = ^CallSideEffect : ~m1133_27
# 1133| m1133_32(unknown) = Chi : total:m1133_27, partial:m1133_31
#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_19, m1133_19
# 1133| v1133_33(void) = ConditionalBranch : r1133_30
# 1133| v1133_31(void) = ConditionalBranch : r1133_30
#-----| False -> Block 10
#-----| True -> Block 8
# 1133| Block 7
# 1133| r1133_34(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 1133| r1133_35(glval<unknown>) = FunctionAddress[operator++] :
# 1133| r1133_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1133_35, this:r1133_34
# 1133| m1133_37(unknown) = ^CallSideEffect : ~m1133_48
# 1133| m1133_38(unknown) = Chi : total:m1133_48, partial:m1133_37
# 1133| v1133_39(void) = ^IndirectReadSideEffect[-1] : &:r1133_34, m1133_19
# 1133| m1133_40(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1133_34
# 1133| m1133_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m1133_19, partial:m1133_40
# 1133| r1133_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1133_36
# 1133| r1133_32(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 1133| r1133_33(glval<unknown>) = FunctionAddress[operator++] :
# 1133| r1133_34(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1133_33, this:r1133_32
# 1133| v1133_35(void) = ^IndirectReadSideEffect[-1] : &:r1133_32, m1133_19
# 1133| m1133_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1133_32
# 1133| m1133_37(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m1133_19, partial:m1133_36
# 1133| r1133_38(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1133_34
#-----| Goto (back edge) -> Block 6
# 1133| Block 8
# 1133| r1133_43(glval<int &>) = VariableAddress[e] :
# 1133| r1133_44(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_44
# 1133| r1133_45(glval<unknown>) = FunctionAddress[operator*] :
# 1133| r1133_46(int &) = Call[operator*] : func:r1133_45, this:r0_27
# 1133| m1133_47(unknown) = ^CallSideEffect : ~m1133_32
# 1133| m1133_48(unknown) = Chi : total:m1133_32, partial:m1133_47
# 1133| r1133_39(glval<int &>) = VariableAddress[e] :
# 1133| r1133_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_40
# 1133| r1133_41(glval<unknown>) = FunctionAddress[operator*] :
# 1133| r1133_42(int &) = Call[operator*] : func:r1133_41, this:r0_27
#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, m1133_19
# 1133| r1133_49(glval<int>) = CopyValue : r1133_46
# 1133| r1133_50(glval<int>) = Convert : r1133_49
# 1133| r1133_51(int &) = CopyValue : r1133_50
# 1133| m1133_52(int &) = Store[e] : &:r1133_43, r1133_51
# 1133| r1133_43(glval<int>) = CopyValue : r1133_42
# 1133| r1133_44(glval<int>) = Convert : r1133_43
# 1133| r1133_45(int &) = CopyValue : r1133_44
# 1133| m1133_46(int &) = Store[e] : &:r1133_39, r1133_45
# 1134| r1134_1(glval<int &>) = VariableAddress[e] :
# 1134| r1134_2(int &) = Load[e] : &:r1134_1, m1133_52
# 1134| r1134_3(int) = Load[?] : &:r1134_2, ~m1133_48
# 1134| r1134_2(int &) = Load[e] : &:r1134_1, m1133_46
# 1134| r1134_3(int) = Load[?] : &:r1134_2, ~m1133_27
# 1134| r1134_4(int) = Constant[5] :
# 1134| r1134_5(bool) = CompareLT : r1134_3, r1134_4
# 1134| v1134_6(void) = ConditionalBranch : r1134_5
@@ -7874,13 +7862,12 @@ ir.cpp:
#-----| Goto -> Block 10
# 1137| Block 10
# 1137| m1137_1(unknown) = Phi : from 6:~m1133_32, from 9:~m1133_48
# 1137| v1137_2(void) = NoOp :
# 1138| v1138_1(void) = NoOp :
# 1126| v1126_9(void) = ReturnIndirection[v] : &:r1126_7, m1126_8
# 1126| v1126_10(void) = ReturnVoid :
# 1126| v1126_11(void) = AliasedUse : ~m1137_1
# 1126| v1126_12(void) = ExitFunction :
# 1137| v1137_1(void) = NoOp :
# 1138| v1138_1(void) = NoOp :
# 1126| v1126_9(void) = ReturnIndirection[v] : &:r1126_7, m1126_8
# 1126| v1126_10(void) = ReturnVoid :
# 1126| v1126_11(void) = AliasedUse : ~m1133_27
# 1126| v1126_12(void) = ExitFunction :
# 1157| int AsmStmt(int)
# 1157| Block 0
@@ -14037,8 +14024,8 @@ ir.cpp:
#-----| Goto -> Block 8
# 2215| Block 8
# 2215| m2215_38(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 7:m2215_31, from 9:m2215_76
# 2215| m2215_39(unknown) = Phi : from 7:~m2215_18, from 9:~m2215_73
# 2215| m2215_38(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 7:m2215_31, from 9:m2215_70
# 2215| m2215_39(unknown) = Phi : from 7:~m2215_18, from 9:~m2215_61
# 2215| r2215_40(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_40
# 2215| r2215_41(glval<unknown>) = FunctionAddress[operator!=] :
@@ -14056,50 +14043,44 @@ ir.cpp:
# 2215| m2215_48(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_9, partial:m2215_47
#-----| r0_13(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_8, m2215_48
# 2215| r2215_49(bool) = Call[operator!=] : func:r2215_41, this:r0_7, 0:r0_13
# 2215| m2215_50(unknown) = ^CallSideEffect : ~m2215_46
# 2215| m2215_51(unknown) = Chi : total:m2215_46, partial:m2215_50
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2215_38
# 2215| v2215_52(void) = ConditionalBranch : r2215_49
# 2215| v2215_50(void) = ConditionalBranch : r2215_49
#-----| False -> Block 10
#-----| True -> Block 9
# 2215| Block 9
# 2215| r2215_53(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2215| r2215_54(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_54
# 2215| r2215_55(glval<unknown>) = FunctionAddress[operator*] :
# 2215| r2215_56(ClassWithDestructor &) = Call[operator*] : func:r2215_55, this:r0_15
# 2215| m2215_57(unknown) = ^CallSideEffect : ~m2215_51
# 2215| m2215_58(unknown) = Chi : total:m2215_51, partial:m2215_57
# 2215| r2215_51(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2215| r2215_52(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_52
# 2215| r2215_53(glval<unknown>) = FunctionAddress[operator*] :
# 2215| r2215_54(ClassWithDestructor &) = Call[operator*] : func:r2215_53, this:r0_15
#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2215_38
# 2215| r2215_59(ClassWithDestructor) = Load[?] : &:r2215_56, ~m2215_58
# 2215| m2215_60(ClassWithDestructor) = Store[y] : &:r2215_53, r2215_59
# 2215| r2215_55(ClassWithDestructor) = Load[?] : &:r2215_54, ~m2215_46
# 2215| m2215_56(ClassWithDestructor) = Store[y] : &:r2215_51, r2215_55
# 2216| r2216_1(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2216| r2216_2(glval<unknown>) = FunctionAddress[set_x] :
# 2216| r2216_3(char) = Constant[97] :
# 2216| v2216_4(void) = Call[set_x] : func:r2216_2, this:r2216_1, 0:r2216_3
# 2216| m2216_5(unknown) = ^CallSideEffect : ~m2215_58
# 2216| m2216_6(unknown) = Chi : total:m2215_58, partial:m2216_5
# 2216| v2216_7(void) = ^IndirectReadSideEffect[-1] : &:r2216_1, m2215_60
# 2216| m2216_5(unknown) = ^CallSideEffect : ~m2215_46
# 2216| m2216_6(unknown) = Chi : total:m2215_46, partial:m2216_5
# 2216| v2216_7(void) = ^IndirectReadSideEffect[-1] : &:r2216_1, m2215_56
# 2216| m2216_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1
# 2216| m2216_9(ClassWithDestructor) = Chi : total:m2215_60, partial:m2216_8
# 2215| r2215_61(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2215| r2215_62(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2215| v2215_63(void) = Call[~ClassWithDestructor] : func:r2215_62, this:r2215_61
# 2215| m2215_64(unknown) = ^CallSideEffect : ~m2216_6
# 2215| m2215_65(unknown) = Chi : total:m2216_6, partial:m2215_64
# 2215| v2215_66(void) = ^IndirectReadSideEffect[-1] : &:r2215_61, m2216_9
# 2215| m2215_67(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_61
# 2215| m2215_68(ClassWithDestructor) = Chi : total:m2216_9, partial:m2215_67
# 2215| r2215_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2215| r2215_70(glval<unknown>) = FunctionAddress[operator++] :
# 2215| r2215_71(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_70, this:r2215_69
# 2215| m2215_72(unknown) = ^CallSideEffect : ~m2215_65
# 2215| m2215_73(unknown) = Chi : total:m2215_65, partial:m2215_72
# 2215| v2215_74(void) = ^IndirectReadSideEffect[-1] : &:r2215_69, m2215_38
# 2215| m2215_75(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_69
# 2215| m2215_76(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2215_38, partial:m2215_75
# 2215| r2215_77(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_71
# 2216| m2216_9(ClassWithDestructor) = Chi : total:m2215_56, partial:m2216_8
# 2215| r2215_57(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2215| r2215_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2215| v2215_59(void) = Call[~ClassWithDestructor] : func:r2215_58, this:r2215_57
# 2215| m2215_60(unknown) = ^CallSideEffect : ~m2216_6
# 2215| m2215_61(unknown) = Chi : total:m2216_6, partial:m2215_60
# 2215| v2215_62(void) = ^IndirectReadSideEffect[-1] : &:r2215_57, m2216_9
# 2215| m2215_63(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_57
# 2215| m2215_64(ClassWithDestructor) = Chi : total:m2216_9, partial:m2215_63
# 2215| r2215_65(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2215| r2215_66(glval<unknown>) = FunctionAddress[operator++] :
# 2215| r2215_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_66, this:r2215_65
# 2215| v2215_68(void) = ^IndirectReadSideEffect[-1] : &:r2215_65, m2215_38
# 2215| m2215_69(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_65
# 2215| m2215_70(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2215_38, partial:m2215_69
# 2215| r2215_71(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_67
#-----| Goto (back edge) -> Block 8
# 2218| Block 10
@@ -14112,8 +14093,8 @@ ir.cpp:
# 2218| m2218_7(ClassWithDestructor) = Store[#temp2218:45] : &:r2218_4, r2218_6
# 2218| r2218_8(ClassWithDestructor) = Load[#temp2218:45] : &:r2218_4, m2218_7
# 2218| v2218_9(void) = Call[vector] : func:r2218_3, this:r2218_1, 0:r2218_8
# 2218| m2218_10(unknown) = ^CallSideEffect : ~m2215_51
# 2218| m2218_11(unknown) = Chi : total:m2215_51, partial:m2218_10
# 2218| m2218_10(unknown) = ^CallSideEffect : ~m2215_46
# 2218| m2218_11(unknown) = Chi : total:m2215_46, partial:m2218_10
# 2218| m2218_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1
# 2218| m2218_13(vector<ClassWithDestructor>) = Chi : total:m2218_2, partial:m2218_12
# 2218| r2218_14(glval<ClassWithDestructor>) = CopyValue : r2218_4
@@ -14149,8 +14130,8 @@ ir.cpp:
#-----| Goto -> Block 11
# 2218| Block 11
# 2218| m2218_38(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 10:m2218_31, from 14:m2218_92
# 2218| m2218_39(unknown) = Phi : from 10:~m2218_18, from 14:~m2218_89
# 2218| m2218_38(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 10:m2218_31, from 14:m2218_86
# 2218| m2218_39(unknown) = Phi : from 10:~m2218_18, from 14:~m2218_77
# 2218| r2218_40(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_40
# 2218| r2218_41(glval<unknown>) = FunctionAddress[operator!=] :
@@ -14168,33 +14149,29 @@ ir.cpp:
# 2218| m2218_48(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_25, partial:m2218_47
#-----| r0_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_24, m2218_48
# 2218| r2218_49(bool) = Call[operator!=] : func:r2218_41, this:r0_23, 0:r0_29
# 2218| m2218_50(unknown) = ^CallSideEffect : ~m2218_46
# 2218| m2218_51(unknown) = Chi : total:m2218_46, partial:m2218_50
#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, m2218_38
# 2218| v2218_52(void) = ConditionalBranch : r2218_49
# 2218| v2218_50(void) = ConditionalBranch : r2218_49
#-----| False -> Block 15
#-----| True -> Block 12
# 2218| Block 12
# 2218| r2218_53(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_54(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_54
# 2218| r2218_55(glval<unknown>) = FunctionAddress[operator*] :
# 2218| r2218_56(ClassWithDestructor &) = Call[operator*] : func:r2218_55, this:r0_31
# 2218| m2218_57(unknown) = ^CallSideEffect : ~m2218_51
# 2218| m2218_58(unknown) = Chi : total:m2218_51, partial:m2218_57
# 2218| r2218_51(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_52(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_52
# 2218| r2218_53(glval<unknown>) = FunctionAddress[operator*] :
# 2218| r2218_54(ClassWithDestructor &) = Call[operator*] : func:r2218_53, this:r0_31
#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, m2218_38
# 2218| r2218_59(ClassWithDestructor) = Load[?] : &:r2218_56, ~m2218_58
# 2218| m2218_60(ClassWithDestructor) = Store[y] : &:r2218_53, r2218_59
# 2218| r2218_55(ClassWithDestructor) = Load[?] : &:r2218_54, ~m2218_46
# 2218| m2218_56(ClassWithDestructor) = Store[y] : &:r2218_51, r2218_55
# 2219| r2219_1(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2219| r2219_2(glval<unknown>) = FunctionAddress[set_x] :
# 2219| r2219_3(char) = Constant[97] :
# 2219| v2219_4(void) = Call[set_x] : func:r2219_2, this:r2219_1, 0:r2219_3
# 2219| m2219_5(unknown) = ^CallSideEffect : ~m2218_58
# 2219| m2219_6(unknown) = Chi : total:m2218_58, partial:m2219_5
# 2219| v2219_7(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, m2218_60
# 2219| m2219_5(unknown) = ^CallSideEffect : ~m2218_46
# 2219| m2219_6(unknown) = Chi : total:m2218_46, partial:m2219_5
# 2219| v2219_7(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, m2218_56
# 2219| m2219_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1
# 2219| m2219_9(ClassWithDestructor) = Chi : total:m2218_60, partial:m2219_8
# 2219| m2219_9(ClassWithDestructor) = Chi : total:m2218_56, partial:m2219_8
# 2220| r2220_1(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2220| r2220_2(glval<unknown>) = FunctionAddress[get_x] :
# 2220| r2220_3(char) = Call[get_x] : func:r2220_2, this:r2220_1
@@ -14212,50 +14189,48 @@ ir.cpp:
# 2221| Block 13
# 2221| v2221_1(void) = NoOp :
# 2218| r2218_61(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_62(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2218| v2218_63(void) = Call[~ClassWithDestructor] : func:r2218_62, this:r2218_61
# 2218| m2218_64(unknown) = ^CallSideEffect : ~m2220_5
# 2218| m2218_65(unknown) = Chi : total:m2220_5, partial:m2218_64
# 2218| v2218_66(void) = ^IndirectReadSideEffect[-1] : &:r2218_61, m2220_8
# 2218| m2218_67(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_61
# 2218| m2218_68(ClassWithDestructor) = Chi : total:m2220_8, partial:m2218_67
# 2218| r2218_69(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
# 2218| r2218_70(glval<unknown>) = FunctionAddress[~vector] :
# 2218| v2218_71(void) = Call[~vector] : func:r2218_70, this:r2218_69
# 2218| m2218_72(unknown) = ^CallSideEffect : ~m2218_65
# 2218| m2218_73(unknown) = Chi : total:m2218_65, partial:m2218_72
# 2218| v2218_74(void) = ^IndirectReadSideEffect[-1] : &:r2218_69, m2218_13
# 2218| m2218_75(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_69
# 2218| m2218_76(vector<ClassWithDestructor>) = Chi : total:m2218_13, partial:m2218_75
# 2218| r2218_57(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2218| v2218_59(void) = Call[~ClassWithDestructor] : func:r2218_58, this:r2218_57
# 2218| m2218_60(unknown) = ^CallSideEffect : ~m2220_5
# 2218| m2218_61(unknown) = Chi : total:m2220_5, partial:m2218_60
# 2218| v2218_62(void) = ^IndirectReadSideEffect[-1] : &:r2218_57, m2220_8
# 2218| m2218_63(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_57
# 2218| m2218_64(ClassWithDestructor) = Chi : total:m2220_8, partial:m2218_63
# 2218| r2218_65(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
# 2218| r2218_66(glval<unknown>) = FunctionAddress[~vector] :
# 2218| v2218_67(void) = Call[~vector] : func:r2218_66, this:r2218_65
# 2218| m2218_68(unknown) = ^CallSideEffect : ~m2218_61
# 2218| m2218_69(unknown) = Chi : total:m2218_61, partial:m2218_68
# 2218| v2218_70(void) = ^IndirectReadSideEffect[-1] : &:r2218_65, m2218_13
# 2218| m2218_71(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_65
# 2218| m2218_72(vector<ClassWithDestructor>) = Chi : total:m2218_13, partial:m2218_71
# 2233| r2233_1(glval<ClassWithDestructor>) = VariableAddress[x] :
# 2233| r2233_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2233| v2233_3(void) = Call[~ClassWithDestructor] : func:r2233_2, this:r2233_1
# 2233| m2233_4(unknown) = ^CallSideEffect : ~m2218_73
# 2233| m2233_5(unknown) = Chi : total:m2218_73, partial:m2233_4
# 2233| m2233_4(unknown) = ^CallSideEffect : ~m2218_69
# 2233| m2233_5(unknown) = Chi : total:m2218_69, partial:m2233_4
# 2233| v2233_6(void) = ^IndirectReadSideEffect[-1] : &:r2233_1, m2214_8
# 2233| m2233_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1
# 2233| m2233_8(ClassWithDestructor) = Chi : total:m2214_8, partial:m2233_7
#-----| Goto -> Block 1
# 2218| Block 14
# 2218| r2218_77(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_78(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2218| v2218_79(void) = Call[~ClassWithDestructor] : func:r2218_78, this:r2218_77
# 2218| m2218_80(unknown) = ^CallSideEffect : ~m2220_5
# 2218| m2218_81(unknown) = Chi : total:m2220_5, partial:m2218_80
# 2218| v2218_82(void) = ^IndirectReadSideEffect[-1] : &:r2218_77, m2220_8
# 2218| m2218_83(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_77
# 2218| m2218_84(ClassWithDestructor) = Chi : total:m2220_8, partial:m2218_83
# 2218| r2218_85(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2218| r2218_86(glval<unknown>) = FunctionAddress[operator++] :
# 2218| r2218_87(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2218_86, this:r2218_85
# 2218| m2218_88(unknown) = ^CallSideEffect : ~m2218_81
# 2218| m2218_89(unknown) = Chi : total:m2218_81, partial:m2218_88
# 2218| v2218_90(void) = ^IndirectReadSideEffect[-1] : &:r2218_85, m2218_38
# 2218| m2218_91(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_85
# 2218| m2218_92(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2218_38, partial:m2218_91
# 2218| r2218_93(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2218_87
# 2218| r2218_73(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_74(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2218| v2218_75(void) = Call[~ClassWithDestructor] : func:r2218_74, this:r2218_73
# 2218| m2218_76(unknown) = ^CallSideEffect : ~m2220_5
# 2218| m2218_77(unknown) = Chi : total:m2220_5, partial:m2218_76
# 2218| v2218_78(void) = ^IndirectReadSideEffect[-1] : &:r2218_73, m2220_8
# 2218| m2218_79(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_73
# 2218| m2218_80(ClassWithDestructor) = Chi : total:m2220_8, partial:m2218_79
# 2218| r2218_81(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2218| r2218_82(glval<unknown>) = FunctionAddress[operator++] :
# 2218| r2218_83(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2218_82, this:r2218_81
# 2218| v2218_84(void) = ^IndirectReadSideEffect[-1] : &:r2218_81, m2218_38
# 2218| m2218_85(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_81
# 2218| m2218_86(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2218_38, partial:m2218_85
# 2218| r2218_87(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2218_83
#-----| Goto (back edge) -> Block 11
# 2224| Block 15
@@ -14264,8 +14239,8 @@ ir.cpp:
# 2224| r2224_3(glval<unknown>) = FunctionAddress[vector] :
# 2224| r2224_4(int) = Constant[1] :
# 2224| v2224_5(void) = Call[vector] : func:r2224_3, this:r2224_1, 0:r2224_4
# 2224| m2224_6(unknown) = ^CallSideEffect : ~m2218_51
# 2224| m2224_7(unknown) = Chi : total:m2218_51, partial:m2224_6
# 2224| m2224_6(unknown) = ^CallSideEffect : ~m2218_46
# 2224| m2224_7(unknown) = Chi : total:m2218_46, partial:m2224_6
# 2224| m2224_8(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_1
# 2224| m2224_9(vector<int>) = Chi : total:m2224_2, partial:m2224_8
# 2224| r2224_10(glval<vector<int> &>) = VariableAddress[(__range)] :
@@ -14293,8 +14268,8 @@ ir.cpp:
#-----| Goto -> Block 16
# 2224| Block 16
# 2224| m2224_26(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 15:m2224_19, from 17:m2224_48
# 2224| m2224_27(unknown) = Phi : from 15:~m2224_7, from 17:~m2224_45
# 2224| m2224_26(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 15:m2224_19, from 17:m2224_44
# 2224| m2224_27(unknown) = Phi : from 15:~m2224_7, from 17:~m2224_34
# 2224| r2224_28(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_28
# 2224| r2224_29(glval<unknown>) = FunctionAddress[operator!=] :
@@ -14312,38 +14287,32 @@ ir.cpp:
# 2224| m2224_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_41, partial:m2224_35
#-----| r0_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_40, m2224_36
# 2224| r2224_37(bool) = Call[operator!=] : func:r2224_29, this:r0_39, 0:r0_45
# 2224| m2224_38(unknown) = ^CallSideEffect : ~m2224_34
# 2224| m2224_39(unknown) = Chi : total:m2224_34, partial:m2224_38
#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, m2224_26
# 2224| v2224_40(void) = ConditionalBranch : r2224_37
# 2224| v2224_38(void) = ConditionalBranch : r2224_37
#-----| False -> Block 20
#-----| True -> Block 18
# 2224| Block 17
# 2224| r2224_41(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 2224| r2224_42(glval<unknown>) = FunctionAddress[operator++] :
# 2224| r2224_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2224_42, this:r2224_41
# 2224| m2224_44(unknown) = ^CallSideEffect : ~m2224_55
# 2224| m2224_45(unknown) = Chi : total:m2224_55, partial:m2224_44
# 2224| v2224_46(void) = ^IndirectReadSideEffect[-1] : &:r2224_41, m2224_26
# 2224| m2224_47(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_41
# 2224| m2224_48(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m2224_26, partial:m2224_47
# 2224| r2224_49(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2224_43
# 2224| r2224_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 2224| r2224_40(glval<unknown>) = FunctionAddress[operator++] :
# 2224| r2224_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2224_40, this:r2224_39
# 2224| v2224_42(void) = ^IndirectReadSideEffect[-1] : &:r2224_39, m2224_26
# 2224| m2224_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_39
# 2224| m2224_44(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m2224_26, partial:m2224_43
# 2224| r2224_45(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2224_41
#-----| Goto (back edge) -> Block 16
# 2224| Block 18
# 2224| r2224_50(glval<int>) = VariableAddress[y] :
# 2224| r2224_51(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_51
# 2224| r2224_52(glval<unknown>) = FunctionAddress[operator*] :
# 2224| r2224_53(int &) = Call[operator*] : func:r2224_52, this:r0_47
# 2224| m2224_54(unknown) = ^CallSideEffect : ~m2224_39
# 2224| m2224_55(unknown) = Chi : total:m2224_39, partial:m2224_54
# 2224| r2224_46(glval<int>) = VariableAddress[y] :
# 2224| r2224_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_47
# 2224| r2224_48(glval<unknown>) = FunctionAddress[operator*] :
# 2224| r2224_49(int &) = Call[operator*] : func:r2224_48, this:r0_47
#-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, m2224_26
# 2224| r2224_56(int) = Load[?] : &:r2224_53, ~m2224_55
# 2224| m2224_57(int) = Store[y] : &:r2224_50, r2224_56
# 2224| r2224_50(int) = Load[?] : &:r2224_49, ~m2224_34
# 2224| m2224_51(int) = Store[y] : &:r2224_46, r2224_50
# 2225| r2225_1(glval<int>) = VariableAddress[y] :
# 2225| r2225_2(int) = Load[y] : &:r2225_1, m2224_57
# 2225| r2225_2(int) = Load[y] : &:r2225_1, m2224_51
# 2225| r2225_3(int) = Constant[1] :
# 2225| r2225_4(bool) = CompareEQ : r2225_2, r2225_3
# 2225| v2225_5(void) = ConditionalBranch : r2225_4
@@ -14352,19 +14321,19 @@ ir.cpp:
# 2226| Block 19
# 2226| v2226_1(void) = NoOp :
# 2224| r2224_58(glval<vector<int>>) = VariableAddress[ys] :
# 2224| r2224_59(glval<unknown>) = FunctionAddress[~vector] :
# 2224| v2224_60(void) = Call[~vector] : func:r2224_59, this:r2224_58
# 2224| m2224_61(unknown) = ^CallSideEffect : ~m2224_55
# 2224| m2224_62(unknown) = Chi : total:m2224_55, partial:m2224_61
# 2224| v2224_63(void) = ^IndirectReadSideEffect[-1] : &:r2224_58, m2224_9
# 2224| m2224_64(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_58
# 2224| m2224_65(vector<int>) = Chi : total:m2224_9, partial:m2224_64
# 2224| r2224_52(glval<vector<int>>) = VariableAddress[ys] :
# 2224| r2224_53(glval<unknown>) = FunctionAddress[~vector] :
# 2224| v2224_54(void) = Call[~vector] : func:r2224_53, this:r2224_52
# 2224| m2224_55(unknown) = ^CallSideEffect : ~m2224_34
# 2224| m2224_56(unknown) = Chi : total:m2224_34, partial:m2224_55
# 2224| v2224_57(void) = ^IndirectReadSideEffect[-1] : &:r2224_52, m2224_9
# 2224| m2224_58(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_52
# 2224| m2224_59(vector<int>) = Chi : total:m2224_9, partial:m2224_58
# 2233| r2233_9(glval<ClassWithDestructor>) = VariableAddress[x] :
# 2233| r2233_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2233| v2233_11(void) = Call[~ClassWithDestructor] : func:r2233_10, this:r2233_9
# 2233| m2233_12(unknown) = ^CallSideEffect : ~m2224_62
# 2233| m2233_13(unknown) = Chi : total:m2224_62, partial:m2233_12
# 2233| m2233_12(unknown) = ^CallSideEffect : ~m2224_56
# 2233| m2233_13(unknown) = Chi : total:m2224_56, partial:m2233_12
# 2233| v2233_14(void) = ^IndirectReadSideEffect[-1] : &:r2233_9, m2214_8
# 2233| m2233_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_9
# 2233| m2233_16(ClassWithDestructor) = Chi : total:m2214_8, partial:m2233_15
@@ -14380,8 +14349,8 @@ ir.cpp:
# 2229| m2229_7(ClassWithDestructor) = Store[#temp2229:45] : &:r2229_4, r2229_6
# 2229| r2229_8(ClassWithDestructor) = Load[#temp2229:45] : &:r2229_4, m2229_7
# 2229| v2229_9(void) = Call[vector] : func:r2229_3, this:r2229_1, 0:r2229_8
# 2229| m2229_10(unknown) = ^CallSideEffect : ~m2224_39
# 2229| m2229_11(unknown) = Chi : total:m2224_39, partial:m2229_10
# 2229| m2229_10(unknown) = ^CallSideEffect : ~m2224_34
# 2229| m2229_11(unknown) = Chi : total:m2224_34, partial:m2229_10
# 2229| m2229_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_1
# 2229| m2229_13(vector<ClassWithDestructor>) = Chi : total:m2229_2, partial:m2229_12
# 2229| r2229_14(glval<ClassWithDestructor>) = CopyValue : r2229_4
@@ -14417,8 +14386,8 @@ ir.cpp:
#-----| Goto -> Block 21
# 2229| Block 21
# 2229| m2229_38(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 20:m2229_31, from 22:m2229_76
# 2229| m2229_39(unknown) = Phi : from 20:~m2229_18, from 22:~m2229_73
# 2229| m2229_38(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 20:m2229_31, from 22:m2229_70
# 2229| m2229_39(unknown) = Phi : from 20:~m2229_18, from 22:~m2229_61
# 2229| r2229_40(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_40
# 2229| r2229_41(glval<unknown>) = FunctionAddress[operator!=] :
@@ -14436,30 +14405,26 @@ ir.cpp:
# 2229| m2229_48(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_57, partial:m2229_47
#-----| r0_61(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_56, m2229_48
# 2229| r2229_49(bool) = Call[operator!=] : func:r2229_41, this:r0_55, 0:r0_61
# 2229| m2229_50(unknown) = ^CallSideEffect : ~m2229_46
# 2229| m2229_51(unknown) = Chi : total:m2229_46, partial:m2229_50
#-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, m2229_38
# 2229| v2229_52(void) = ConditionalBranch : r2229_49
# 2229| v2229_50(void) = ConditionalBranch : r2229_49
#-----| False -> Block 23
#-----| True -> Block 22
# 2229| Block 22
# 2229| r2229_53(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2229| r2229_54(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_54
# 2229| r2229_55(glval<unknown>) = FunctionAddress[operator*] :
# 2229| r2229_56(ClassWithDestructor &) = Call[operator*] : func:r2229_55, this:r0_63
# 2229| m2229_57(unknown) = ^CallSideEffect : ~m2229_51
# 2229| m2229_58(unknown) = Chi : total:m2229_51, partial:m2229_57
# 2229| r2229_51(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2229| r2229_52(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_52
# 2229| r2229_53(glval<unknown>) = FunctionAddress[operator*] :
# 2229| r2229_54(ClassWithDestructor &) = Call[operator*] : func:r2229_53, this:r0_63
#-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, m2229_38
# 2229| r2229_59(ClassWithDestructor) = Load[?] : &:r2229_56, ~m2229_58
# 2229| m2229_60(ClassWithDestructor) = Store[y] : &:r2229_53, r2229_59
# 2229| r2229_55(ClassWithDestructor) = Load[?] : &:r2229_54, ~m2229_46
# 2229| m2229_56(ClassWithDestructor) = Store[y] : &:r2229_51, r2229_55
# 2230| r2230_1(glval<ClassWithDestructor>) = VariableAddress[z1] :
# 2230| m2230_2(ClassWithDestructor) = Uninitialized[z1] : &:r2230_1
# 2230| r2230_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
# 2230| v2230_4(void) = Call[ClassWithDestructor] : func:r2230_3, this:r2230_1
# 2230| m2230_5(unknown) = ^CallSideEffect : ~m2229_58
# 2230| m2230_6(unknown) = Chi : total:m2229_58, partial:m2230_5
# 2230| m2230_5(unknown) = ^CallSideEffect : ~m2229_46
# 2230| m2230_6(unknown) = Chi : total:m2229_46, partial:m2230_5
# 2230| m2230_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2230_1
# 2230| m2230_8(ClassWithDestructor) = Chi : total:m2230_2, partial:m2230_7
# 2231| r2231_1(glval<ClassWithDestructor>) = VariableAddress[z2] :
@@ -14486,23 +14451,21 @@ ir.cpp:
# 2232| v2232_14(void) = ^IndirectReadSideEffect[-1] : &:r2232_9, m2230_8
# 2232| m2232_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_9
# 2232| m2232_16(ClassWithDestructor) = Chi : total:m2230_8, partial:m2232_15
# 2229| r2229_61(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2229| r2229_62(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2229| v2229_63(void) = Call[~ClassWithDestructor] : func:r2229_62, this:r2229_61
# 2229| m2229_64(unknown) = ^CallSideEffect : ~m2232_13
# 2229| m2229_65(unknown) = Chi : total:m2232_13, partial:m2229_64
# 2229| v2229_66(void) = ^IndirectReadSideEffect[-1] : &:r2229_61, m2229_60
# 2229| m2229_67(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2229_61
# 2229| m2229_68(ClassWithDestructor) = Chi : total:m2229_60, partial:m2229_67
# 2229| r2229_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2229| r2229_70(glval<unknown>) = FunctionAddress[operator++] :
# 2229| r2229_71(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2229_70, this:r2229_69
# 2229| m2229_72(unknown) = ^CallSideEffect : ~m2229_65
# 2229| m2229_73(unknown) = Chi : total:m2229_65, partial:m2229_72
# 2229| v2229_74(void) = ^IndirectReadSideEffect[-1] : &:r2229_69, m2229_38
# 2229| m2229_75(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_69
# 2229| m2229_76(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2229_38, partial:m2229_75
# 2229| r2229_77(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2229_71
# 2229| r2229_57(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2229| r2229_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2229| v2229_59(void) = Call[~ClassWithDestructor] : func:r2229_58, this:r2229_57
# 2229| m2229_60(unknown) = ^CallSideEffect : ~m2232_13
# 2229| m2229_61(unknown) = Chi : total:m2232_13, partial:m2229_60
# 2229| v2229_62(void) = ^IndirectReadSideEffect[-1] : &:r2229_57, m2229_56
# 2229| m2229_63(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2229_57
# 2229| m2229_64(ClassWithDestructor) = Chi : total:m2229_56, partial:m2229_63
# 2229| r2229_65(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2229| r2229_66(glval<unknown>) = FunctionAddress[operator++] :
# 2229| r2229_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2229_66, this:r2229_65
# 2229| v2229_68(void) = ^IndirectReadSideEffect[-1] : &:r2229_65, m2229_38
# 2229| m2229_69(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_65
# 2229| m2229_70(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2229_38, partial:m2229_69
# 2229| r2229_71(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2229_67
#-----| Goto (back edge) -> Block 21
# 2233| Block 23
@@ -14510,8 +14473,8 @@ ir.cpp:
# 2233| r2233_18(glval<ClassWithDestructor>) = VariableAddress[x] :
# 2233| r2233_19(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2233| v2233_20(void) = Call[~ClassWithDestructor] : func:r2233_19, this:r2233_18
# 2233| m2233_21(unknown) = ^CallSideEffect : ~m2229_51
# 2233| m2233_22(unknown) = Chi : total:m2229_51, partial:m2233_21
# 2233| m2233_21(unknown) = ^CallSideEffect : ~m2229_46
# 2233| m2233_22(unknown) = Chi : total:m2229_46, partial:m2233_21
# 2233| v2233_23(void) = ^IndirectReadSideEffect[-1] : &:r2233_18, m2214_8
# 2233| m2233_24(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_18
# 2233| m2233_25(ClassWithDestructor) = Chi : total:m2214_8, partial:m2233_24
@@ -15199,8 +15162,8 @@ ir.cpp:
#-----| Goto -> Block 4
# 2307| Block 4
# 2307| m2307_44(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Phi : from 3:m2307_37, from 5:m2307_91
# 2307| m2307_45(unknown) = Phi : from 3:~m2307_26, from 5:~m2307_88
# 2307| m2307_44(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Phi : from 3:m2307_37, from 5:m2307_85
# 2307| m2307_45(unknown) = Phi : from 3:~m2307_26, from 5:~m2307_76
# 2307| r2307_46(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] :
#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_46
# 2307| r2307_47(glval<unknown>) = FunctionAddress[operator!=] :
@@ -15218,39 +15181,35 @@ ir.cpp:
# 2307| m2307_54(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m0_9, partial:m2307_53
#-----| r0_13(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Load[#temp0:0] : &:r0_8, m2307_54
# 2307| r2307_55(bool) = Call[operator!=] : func:r2307_47, this:r0_7, 0:r0_13
# 2307| m2307_56(unknown) = ^CallSideEffect : ~m2307_52
# 2307| m2307_57(unknown) = Chi : total:m2307_52, partial:m2307_56
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2307_44
# 2307| v2307_58(void) = ConditionalBranch : r2307_55
# 2307| v2307_56(void) = ConditionalBranch : r2307_55
#-----| False -> Block 6
#-----| True -> Block 5
# 2307| Block 5
# 2307| r2307_59(glval<String>) = VariableAddress[s] :
# 2307| m2307_60(String) = Uninitialized[s] : &:r2307_59
# 2307| r2307_61(glval<unknown>) = FunctionAddress[String] :
# 2307| r2307_62(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_62
# 2307| r2307_63(glval<unknown>) = FunctionAddress[operator*] :
# 2307| r2307_64(String &) = Call[operator*] : func:r2307_63, this:r0_15
# 2307| m2307_65(unknown) = ^CallSideEffect : ~m2307_57
# 2307| m2307_66(unknown) = Chi : total:m2307_57, partial:m2307_65
# 2307| r2307_57(glval<String>) = VariableAddress[s] :
# 2307| m2307_58(String) = Uninitialized[s] : &:r2307_57
# 2307| r2307_59(glval<unknown>) = FunctionAddress[String] :
# 2307| r2307_60(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_60
# 2307| r2307_61(glval<unknown>) = FunctionAddress[operator*] :
# 2307| r2307_62(String &) = Call[operator*] : func:r2307_61, this:r0_15
#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2307_44
# 2307| r2307_67(glval<String>) = CopyValue : r2307_64
# 2307| r2307_68(glval<String>) = Convert : r2307_67
# 2307| r2307_69(String &) = CopyValue : r2307_68
# 2307| v2307_70(void) = Call[String] : func:r2307_61, this:r2307_59, 0:r2307_69
# 2307| m2307_71(unknown) = ^CallSideEffect : ~m2307_66
# 2307| m2307_72(unknown) = Chi : total:m2307_66, partial:m2307_71
# 2307| v2307_73(void) = ^BufferReadSideEffect[0] : &:r2307_69, ~m2307_72
# 2307| m2307_74(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_59
# 2307| m2307_75(String) = Chi : total:m2307_60, partial:m2307_74
# 2307| r2307_63(glval<String>) = CopyValue : r2307_62
# 2307| r2307_64(glval<String>) = Convert : r2307_63
# 2307| r2307_65(String &) = CopyValue : r2307_64
# 2307| v2307_66(void) = Call[String] : func:r2307_59, this:r2307_57, 0:r2307_65
# 2307| m2307_67(unknown) = ^CallSideEffect : ~m2307_52
# 2307| m2307_68(unknown) = Chi : total:m2307_52, partial:m2307_67
# 2307| v2307_69(void) = ^BufferReadSideEffect[0] : &:r2307_65, ~m2307_68
# 2307| m2307_70(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_57
# 2307| m2307_71(String) = Chi : total:m2307_58, partial:m2307_70
# 2308| r2308_1(glval<String>) = VariableAddress[s2] :
# 2308| m2308_2(String) = Uninitialized[s2] : &:r2308_1
# 2308| r2308_3(glval<unknown>) = FunctionAddress[String] :
# 2308| v2308_4(void) = Call[String] : func:r2308_3, this:r2308_1
# 2308| m2308_5(unknown) = ^CallSideEffect : ~m2307_72
# 2308| m2308_6(unknown) = Chi : total:m2307_72, partial:m2308_5
# 2308| m2308_5(unknown) = ^CallSideEffect : ~m2307_68
# 2308| m2308_6(unknown) = Chi : total:m2307_68, partial:m2308_5
# 2308| m2308_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_1
# 2308| m2308_8(String) = Chi : total:m2308_2, partial:m2308_7
# 2309| r2309_1(glval<String>) = VariableAddress[s2] :
@@ -15261,23 +15220,21 @@ ir.cpp:
# 2309| v2309_6(void) = ^IndirectReadSideEffect[-1] : &:r2309_1, m2308_8
# 2309| m2309_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2309_1
# 2309| m2309_8(String) = Chi : total:m2308_8, partial:m2309_7
# 2307| r2307_76(glval<String>) = VariableAddress[s] :
# 2307| r2307_77(glval<unknown>) = FunctionAddress[~String] :
# 2307| v2307_78(void) = Call[~String] : func:r2307_77, this:r2307_76
# 2307| m2307_79(unknown) = ^CallSideEffect : ~m2309_5
# 2307| m2307_80(unknown) = Chi : total:m2309_5, partial:m2307_79
# 2307| v2307_81(void) = ^IndirectReadSideEffect[-1] : &:r2307_76, m2307_75
# 2307| m2307_82(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_76
# 2307| m2307_83(String) = Chi : total:m2307_75, partial:m2307_82
# 2307| r2307_84(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] :
# 2307| r2307_85(glval<unknown>) = FunctionAddress[operator++] :
# 2307| r2307_86(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2307_85, this:r2307_84
# 2307| m2307_87(unknown) = ^CallSideEffect : ~m2307_80
# 2307| m2307_88(unknown) = Chi : total:m2307_80, partial:m2307_87
# 2307| v2307_89(void) = ^IndirectReadSideEffect[-1] : &:r2307_84, m2307_44
# 2307| m2307_90(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2307_84
# 2307| m2307_91(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m2307_44, partial:m2307_90
# 2307| r2307_92(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2307_86
# 2307| r2307_72(glval<String>) = VariableAddress[s] :
# 2307| r2307_73(glval<unknown>) = FunctionAddress[~String] :
# 2307| v2307_74(void) = Call[~String] : func:r2307_73, this:r2307_72
# 2307| m2307_75(unknown) = ^CallSideEffect : ~m2309_5
# 2307| m2307_76(unknown) = Chi : total:m2309_5, partial:m2307_75
# 2307| v2307_77(void) = ^IndirectReadSideEffect[-1] : &:r2307_72, m2307_71
# 2307| m2307_78(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_72
# 2307| m2307_79(String) = Chi : total:m2307_71, partial:m2307_78
# 2307| r2307_80(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] :
# 2307| r2307_81(glval<unknown>) = FunctionAddress[operator++] :
# 2307| r2307_82(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2307_81, this:r2307_80
# 2307| v2307_83(void) = ^IndirectReadSideEffect[-1] : &:r2307_80, m2307_44
# 2307| m2307_84(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2307_80
# 2307| m2307_85(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m2307_44, partial:m2307_84
# 2307| r2307_86(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2307_82
#-----| Goto (back edge) -> Block 4
# 2311| Block 6
@@ -15287,8 +15244,8 @@ ir.cpp:
# 2311| r2311_4(glval<char[6]>) = StringConstant["hello"] :
# 2311| r2311_5(char *) = Convert : r2311_4
# 2311| v2311_6(void) = Call[String] : func:r2311_3, this:r2311_1, 0:r2311_5
# 2311| m2311_7(unknown) = ^CallSideEffect : ~m2307_57
# 2311| m2311_8(unknown) = Chi : total:m2307_57, partial:m2311_7
# 2311| m2311_7(unknown) = ^CallSideEffect : ~m2307_52
# 2311| m2311_8(unknown) = Chi : total:m2307_52, partial:m2311_7
# 2311| v2311_9(void) = ^BufferReadSideEffect[0] : &:r2311_5, ~m2301_3
# 2311| m2311_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_1
# 2311| m2311_11(String) = Chi : total:m2311_2, partial:m2311_10
@@ -16079,8 +16036,8 @@ ir.cpp:
#-----| Goto -> Block 10
# 2430| Block 10
# 2430| m2430_51(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Phi : from 9:m2430_44, from 11:m2430_81
# 2430| m2430_52(unknown) = Phi : from 9:~m2430_34, from 11:~m2430_78
# 2430| m2430_51(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Phi : from 9:m2430_44, from 11:m2430_75
# 2430| m2430_52(unknown) = Phi : from 9:~m2430_34, from 11:~m2430_59
# 2430| r2430_53(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] :
#-----| r0_7(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_53
# 2430| r2430_54(glval<unknown>) = FunctionAddress[operator!=] :
@@ -16098,48 +16055,42 @@ ir.cpp:
# 2430| m2430_61(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Chi : total:m0_9, partial:m2430_60
#-----| r0_13(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Load[#temp0:0] : &:r0_8, m2430_61
# 2430| r2430_62(bool) = Call[operator!=] : func:r2430_54, this:r0_7, 0:r0_13
# 2430| m2430_63(unknown) = ^CallSideEffect : ~m2430_59
# 2430| m2430_64(unknown) = Chi : total:m2430_59, partial:m2430_63
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2430_51
# 2430| v2430_65(void) = ConditionalBranch : r2430_62
# 2430| v2430_63(void) = ConditionalBranch : r2430_62
#-----| False -> Block 12
#-----| True -> Block 11
# 2430| Block 11
# 2430| r2430_66(glval<char>) = VariableAddress[y] :
# 2430| r2430_67(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_67
# 2430| r2430_68(glval<unknown>) = FunctionAddress[operator*] :
# 2430| r2430_69(char &) = Call[operator*] : func:r2430_68, this:r0_15
# 2430| m2430_70(unknown) = ^CallSideEffect : ~m2430_64
# 2430| m2430_71(unknown) = Chi : total:m2430_64, partial:m2430_70
# 2430| r2430_64(glval<char>) = VariableAddress[y] :
# 2430| r2430_65(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_65
# 2430| r2430_66(glval<unknown>) = FunctionAddress[operator*] :
# 2430| r2430_67(char &) = Call[operator*] : func:r2430_66, this:r0_15
#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2430_51
# 2430| r2430_72(char) = Load[?] : &:r2430_69, ~m2430_71
# 2430| m2430_73(char) = Store[y] : &:r2430_66, r2430_72
# 2430| r2430_68(char) = Load[?] : &:r2430_67, ~m2430_59
# 2430| m2430_69(char) = Store[y] : &:r2430_64, r2430_68
# 2431| r2431_1(glval<char>) = VariableAddress[x] :
# 2431| r2431_2(char) = Load[x] : &:r2431_1, m2430_25
# 2431| r2431_3(int) = Convert : r2431_2
# 2431| r2431_4(glval<char>) = VariableAddress[y] :
# 2431| r2431_5(char) = Load[y] : &:r2431_4, m2430_73
# 2431| r2431_5(char) = Load[y] : &:r2431_4, m2430_69
# 2431| r2431_6(int) = Convert : r2431_5
# 2431| r2431_7(int) = Add : r2431_6, r2431_3
# 2431| r2431_8(char) = Convert : r2431_7
# 2431| m2431_9(char) = Store[y] : &:r2431_4, r2431_8
# 2430| r2430_74(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] :
# 2430| r2430_75(glval<unknown>) = FunctionAddress[operator++] :
# 2430| r2430_76(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = Call[operator++] : func:r2430_75, this:r2430_74
# 2430| m2430_77(unknown) = ^CallSideEffect : ~m2430_71
# 2430| m2430_78(unknown) = Chi : total:m2430_71, partial:m2430_77
# 2430| v2430_79(void) = ^IndirectReadSideEffect[-1] : &:r2430_74, m2430_51
# 2430| m2430_80(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r2430_74
# 2430| m2430_81(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Chi : total:m2430_51, partial:m2430_80
# 2430| r2430_82(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = CopyValue : r2430_76
# 2430| r2430_70(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] :
# 2430| r2430_71(glval<unknown>) = FunctionAddress[operator++] :
# 2430| r2430_72(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = Call[operator++] : func:r2430_71, this:r2430_70
# 2430| v2430_73(void) = ^IndirectReadSideEffect[-1] : &:r2430_70, m2430_51
# 2430| m2430_74(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r2430_70
# 2430| m2430_75(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Chi : total:m2430_51, partial:m2430_74
# 2430| r2430_76(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = CopyValue : r2430_72
#-----| Goto (back edge) -> Block 10
# 2432| Block 12
# 2432| v2432_1(void) = NoOp :
# 2410| v2410_5(void) = ReturnVoid :
# 2410| v2410_6(void) = AliasedUse : ~m2430_64
# 2410| v2410_6(void) = AliasedUse : ~m2430_59
# 2410| v2410_7(void) = ExitFunction :
# 2410| Block 13

View File

@@ -6646,7 +6646,7 @@
| ir.cpp:1056:1:1056:1 | SideEffect | ~m1056_6 |
| ir.cpp:1126:6:1126:18 | ChiPartial | partial:m1126_3 |
| ir.cpp:1126:6:1126:18 | ChiTotal | total:m1126_2 |
| ir.cpp:1126:6:1126:18 | SideEffect | ~m1137_1 |
| ir.cpp:1126:6:1126:18 | SideEffect | ~m1133_27 |
| ir.cpp:1126:44:1126:44 | Address | &:r1126_5 |
| ir.cpp:1126:44:1126:44 | Address | &:r1126_5 |
| ir.cpp:1126:44:1126:44 | Address | &:r1126_7 |
@@ -6656,50 +6656,41 @@
| ir.cpp:1127:5:1127:5 | Address | &:r1127_1 |
| ir.cpp:1127:5:1127:5 | Address | &:r1127_7 |
| ir.cpp:1127:5:1127:5 | Address | &:r1127_13 |
| ir.cpp:1127:14:1127:14 | Address | &:r1127_34 |
| ir.cpp:1127:14:1127:14 | Address | &:r1127_32 |
| ir.cpp:1127:18:1127:18 | Address | &:r1127_2 |
| ir.cpp:1127:18:1127:18 | Address | &:r1127_8 |
| ir.cpp:1127:18:1127:18 | Address | &:r1127_14 |
| ir.cpp:1127:18:1127:18 | Address | &:r1127_37 |
| ir.cpp:1127:18:1127:18 | Address | &:r1127_43 |
| ir.cpp:1127:18:1127:18 | Address | &:r1127_43 |
| ir.cpp:1127:18:1127:18 | Address | &:r1127_35 |
| ir.cpp:1127:18:1127:18 | Address | &:r1127_39 |
| ir.cpp:1127:18:1127:18 | Address | &:r1127_39 |
| ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_1 |
| ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_3 |
| ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_5 |
| ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_6 |
| ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_13 |
| ir.cpp:1127:18:1127:18 | Arg(this) | this:r1127_43 |
| ir.cpp:1127:18:1127:18 | Arg(this) | this:r1127_39 |
| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_10 |
| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_16 |
| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_22 |
| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_23 |
| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_36 |
| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_44 |
| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_34 |
| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_40 |
| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_26 |
| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_28 |
| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_31 |
| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_38 |
| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_46 |
| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_49 |
| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_43 |
| ir.cpp:1127:18:1127:18 | ChiTotal | total:m0_7 |
| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_19 |
| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_20 |
| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_27 |
| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_32 |
| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_39 |
| ir.cpp:1127:18:1127:18 | Condition | r1127_30 |
| ir.cpp:1127:18:1127:18 | Load | m1126_6 |
| ir.cpp:1127:18:1127:18 | Load | m1127_6 |
| ir.cpp:1127:18:1127:18 | Load | m1127_6 |
| ir.cpp:1127:18:1127:18 | Phi | from 0:m1127_12 |
| ir.cpp:1127:18:1127:18 | Phi | from 0:~m1126_4 |
| ir.cpp:1127:18:1127:18 | Phi | from 4:m1127_50 |
| ir.cpp:1127:18:1127:18 | Phi | from 4:~m1127_47 |
| ir.cpp:1127:18:1127:18 | Phi | from 4:m1127_44 |
| ir.cpp:1127:18:1127:18 | Phi | from 4:~m1127_27 |
| ir.cpp:1127:18:1127:18 | SideEffect | m1127_19 |
| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_20 |
| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_27 |
| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_32 |
| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_39 |
| ir.cpp:1127:18:1127:18 | StoreValue | r1127_5 |
| ir.cpp:1127:18:1127:18 | StoreValue | r1127_11 |
| ir.cpp:1127:18:1127:18 | StoreValue | r1127_17 |
@@ -6709,61 +6700,52 @@
| ir.cpp:1127:18:1127:18 | Unary | r1127_15 |
| ir.cpp:1127:18:1127:18 | Unary | r1127_21 |
| ir.cpp:1127:18:1127:18 | Unary | r1127_24 |
| ir.cpp:1127:18:1127:18 | Unary | r1127_35 |
| ir.cpp:1127:18:1127:18 | Unary | r1127_45 |
| ir.cpp:1127:18:1127:19 | Load | ~m1127_39 |
| ir.cpp:1127:18:1127:19 | StoreValue | r1127_40 |
| ir.cpp:1127:18:1127:18 | Unary | r1127_33 |
| ir.cpp:1127:18:1127:18 | Unary | r1127_41 |
| ir.cpp:1127:18:1127:19 | Load | ~m1127_27 |
| ir.cpp:1127:18:1127:19 | StoreValue | r1127_36 |
| ir.cpp:1128:13:1128:13 | Address | &:r1128_1 |
| ir.cpp:1128:13:1128:13 | Left | r1128_2 |
| ir.cpp:1128:13:1128:13 | Load | m1127_41 |
| ir.cpp:1128:13:1128:13 | Load | m1127_37 |
| ir.cpp:1128:13:1128:17 | Condition | r1128_4 |
| ir.cpp:1128:17:1128:17 | Right | r1128_3 |
| ir.cpp:1133:5:1133:5 | Address | &:r1133_1 |
| ir.cpp:1133:5:1133:5 | Address | &:r1133_7 |
| ir.cpp:1133:5:1133:5 | Address | &:r1133_13 |
| ir.cpp:1133:21:1133:21 | Address | &:r1133_43 |
| ir.cpp:1133:21:1133:21 | Address | &:r1133_39 |
| ir.cpp:1133:25:1133:25 | Address | &:r1133_2 |
| ir.cpp:1133:25:1133:25 | Address | &:r1133_8 |
| ir.cpp:1133:25:1133:25 | Address | &:r1133_14 |
| ir.cpp:1133:25:1133:25 | Address | &:r1133_34 |
| ir.cpp:1133:25:1133:25 | Address | &:r1133_34 |
| ir.cpp:1133:25:1133:25 | Address | &:r1133_32 |
| ir.cpp:1133:25:1133:25 | Address | &:r1133_32 |
| ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_15 |
| ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_17 |
| ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_19 |
| ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_20 |
| ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_27 |
| ir.cpp:1133:25:1133:25 | Arg(this) | this:r1133_34 |
| ir.cpp:1133:25:1133:25 | Arg(this) | this:r1133_32 |
| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_10 |
| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_16 |
| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_22 |
| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_23 |
| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_35 |
| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_45 |
| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_33 |
| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_41 |
| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_26 |
| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_28 |
| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_31 |
| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_37 |
| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_40 |
| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_47 |
| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_36 |
| ir.cpp:1133:25:1133:25 | ChiTotal | total:m0_21 |
| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_19 |
| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_20 |
| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_27 |
| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_32 |
| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_48 |
| ir.cpp:1133:25:1133:25 | Condition | r1133_30 |
| ir.cpp:1133:25:1133:25 | Load | m1126_6 |
| ir.cpp:1133:25:1133:25 | Load | m1133_6 |
| ir.cpp:1133:25:1133:25 | Load | m1133_6 |
| ir.cpp:1133:25:1133:25 | Phi | from 5:m1133_12 |
| ir.cpp:1133:25:1133:25 | Phi | from 5:~m1127_32 |
| ir.cpp:1133:25:1133:25 | Phi | from 7:m1133_41 |
| ir.cpp:1133:25:1133:25 | Phi | from 7:~m1133_38 |
| ir.cpp:1133:25:1133:25 | Phi | from 5:~m1127_27 |
| ir.cpp:1133:25:1133:25 | Phi | from 7:m1133_37 |
| ir.cpp:1133:25:1133:25 | Phi | from 7:~m1133_27 |
| ir.cpp:1133:25:1133:25 | SideEffect | m1133_19 |
| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_20 |
| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_27 |
| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_32 |
| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_48 |
| ir.cpp:1133:25:1133:25 | StoreValue | r1133_5 |
| ir.cpp:1133:25:1133:25 | StoreValue | r1133_11 |
| ir.cpp:1133:25:1133:25 | StoreValue | r1133_17 |
@@ -6773,21 +6755,19 @@
| ir.cpp:1133:25:1133:25 | Unary | r1133_15 |
| ir.cpp:1133:25:1133:25 | Unary | r1133_21 |
| ir.cpp:1133:25:1133:25 | Unary | r1133_24 |
| ir.cpp:1133:25:1133:25 | Unary | r1133_36 |
| ir.cpp:1133:25:1133:25 | Unary | r1133_44 |
| ir.cpp:1133:25:1133:25 | Unary | r1133_46 |
| ir.cpp:1133:25:1133:26 | StoreValue | r1133_51 |
| ir.cpp:1133:25:1133:26 | Unary | r1133_49 |
| ir.cpp:1133:25:1133:26 | Unary | r1133_50 |
| ir.cpp:1133:25:1133:25 | Unary | r1133_34 |
| ir.cpp:1133:25:1133:25 | Unary | r1133_40 |
| ir.cpp:1133:25:1133:25 | Unary | r1133_42 |
| ir.cpp:1133:25:1133:26 | StoreValue | r1133_45 |
| ir.cpp:1133:25:1133:26 | Unary | r1133_43 |
| ir.cpp:1133:25:1133:26 | Unary | r1133_44 |
| ir.cpp:1134:13:1134:13 | Address | &:r1134_1 |
| ir.cpp:1134:13:1134:13 | Address | &:r1134_2 |
| ir.cpp:1134:13:1134:13 | Left | r1134_3 |
| ir.cpp:1134:13:1134:13 | Load | m1133_52 |
| ir.cpp:1134:13:1134:13 | Load | ~m1133_48 |
| ir.cpp:1134:13:1134:13 | Load | m1133_46 |
| ir.cpp:1134:13:1134:13 | Load | ~m1133_27 |
| ir.cpp:1134:13:1134:17 | Condition | r1134_5 |
| ir.cpp:1134:17:1134:17 | Right | r1134_4 |
| ir.cpp:1137:5:1137:5 | Phi | from 6:~m1133_32 |
| ir.cpp:1137:5:1137:5 | Phi | from 9:~m1133_48 |
| ir.cpp:1157:5:1157:11 | Address | &:r1157_7 |
| ir.cpp:1157:5:1157:11 | ChiPartial | partial:m1157_3 |
| ir.cpp:1157:5:1157:11 | ChiTotal | total:m1157_2 |
@@ -11737,97 +11717,88 @@
| ir.cpp:2215:45:2215:46 | ChiTotal | total:m2214_6 |
| ir.cpp:2215:45:2215:46 | ChiTotal | total:m2215_2 |
| ir.cpp:2215:45:2215:46 | SideEffect | ~m2214_6 |
| ir.cpp:2215:69:2215:69 | Address | &:r2215_53 |
| ir.cpp:2215:69:2215:69 | Address | &:r2215_61 |
| ir.cpp:2215:69:2215:69 | Address | &:r2215_61 |
| ir.cpp:2215:69:2215:69 | Arg(this) | this:r2215_61 |
| ir.cpp:2215:69:2215:69 | CallTarget | func:r2215_62 |
| ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_64 |
| ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_67 |
| ir.cpp:2215:69:2215:69 | Address | &:r2215_51 |
| ir.cpp:2215:69:2215:69 | Address | &:r2215_57 |
| ir.cpp:2215:69:2215:69 | Address | &:r2215_57 |
| ir.cpp:2215:69:2215:69 | Arg(this) | this:r2215_57 |
| ir.cpp:2215:69:2215:69 | CallTarget | func:r2215_58 |
| ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_60 |
| ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_63 |
| ir.cpp:2215:69:2215:69 | ChiTotal | total:m2216_6 |
| ir.cpp:2215:69:2215:69 | ChiTotal | total:m2216_9 |
| ir.cpp:2215:69:2215:69 | SideEffect | m2216_9 |
| ir.cpp:2215:69:2215:69 | SideEffect | ~m2216_6 |
| ir.cpp:2215:73:2215:73 | Address | &:r2215_27 |
| ir.cpp:2215:73:2215:73 | Address | &:r2215_33 |
| ir.cpp:2215:73:2215:73 | Address | &:r2215_56 |
| ir.cpp:2215:73:2215:73 | Address | &:r2215_69 |
| ir.cpp:2215:73:2215:73 | Address | &:r2215_69 |
| ir.cpp:2215:73:2215:73 | Address | &:r2215_54 |
| ir.cpp:2215:73:2215:73 | Address | &:r2215_65 |
| ir.cpp:2215:73:2215:73 | Address | &:r2215_65 |
| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_2 |
| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_5 |
| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_7 |
| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_8 |
| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_15 |
| ir.cpp:2215:73:2215:73 | Arg(this) | this:r2215_69 |
| ir.cpp:2215:73:2215:73 | Arg(this) | this:r2215_65 |
| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_29 |
| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_35 |
| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_41 |
| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_42 |
| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_55 |
| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_70 |
| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_53 |
| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_66 |
| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_45 |
| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_47 |
| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_50 |
| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_57 |
| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_72 |
| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_75 |
| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_69 |
| ir.cpp:2215:73:2215:73 | ChiTotal | total:m0_9 |
| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_38 |
| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_39 |
| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_46 |
| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_51 |
| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_65 |
| ir.cpp:2215:73:2215:73 | Condition | r2215_49 |
| ir.cpp:2215:73:2215:73 | Load | m2215_25 |
| ir.cpp:2215:73:2215:73 | Load | m2215_25 |
| ir.cpp:2215:73:2215:73 | Phi | from 7:m2215_31 |
| ir.cpp:2215:73:2215:73 | Phi | from 7:~m2215_18 |
| ir.cpp:2215:73:2215:73 | Phi | from 9:m2215_76 |
| ir.cpp:2215:73:2215:73 | Phi | from 9:~m2215_73 |
| ir.cpp:2215:73:2215:73 | Phi | from 9:m2215_70 |
| ir.cpp:2215:73:2215:73 | Phi | from 9:~m2215_61 |
| ir.cpp:2215:73:2215:73 | SideEffect | m2215_38 |
| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_39 |
| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_46 |
| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_51 |
| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_65 |
| ir.cpp:2215:73:2215:73 | StoreValue | r2215_30 |
| ir.cpp:2215:73:2215:73 | StoreValue | r2215_36 |
| ir.cpp:2215:73:2215:73 | Unary | r2215_28 |
| ir.cpp:2215:73:2215:73 | Unary | r2215_34 |
| ir.cpp:2215:73:2215:73 | Unary | r2215_40 |
| ir.cpp:2215:73:2215:73 | Unary | r2215_43 |
| ir.cpp:2215:73:2215:73 | Unary | r2215_54 |
| ir.cpp:2215:73:2215:73 | Unary | r2215_71 |
| ir.cpp:2215:73:2215:73 | Unary | r2215_52 |
| ir.cpp:2215:73:2215:73 | Unary | r2215_67 |
| ir.cpp:2215:73:2215:74 | StoreValue | r2215_24 |
| ir.cpp:2215:73:2215:74 | Unary | r2215_23 |
| ir.cpp:2215:73:2215:75 | Load | ~m2215_58 |
| ir.cpp:2215:73:2215:75 | StoreValue | r2215_59 |
| ir.cpp:2215:73:2215:75 | Load | ~m2215_46 |
| ir.cpp:2215:73:2215:75 | StoreValue | r2215_55 |
| ir.cpp:2216:7:2216:7 | Address | &:r2216_1 |
| ir.cpp:2216:7:2216:7 | Address | &:r2216_1 |
| ir.cpp:2216:7:2216:7 | Arg(this) | this:r2216_1 |
| ir.cpp:2216:7:2216:7 | ChiPartial | partial:m2216_8 |
| ir.cpp:2216:7:2216:7 | ChiTotal | total:m2215_60 |
| ir.cpp:2216:7:2216:7 | SideEffect | m2215_60 |
| ir.cpp:2216:7:2216:7 | ChiTotal | total:m2215_56 |
| ir.cpp:2216:7:2216:7 | SideEffect | m2215_56 |
| ir.cpp:2216:9:2216:13 | CallTarget | func:r2216_2 |
| ir.cpp:2216:9:2216:13 | ChiPartial | partial:m2216_5 |
| ir.cpp:2216:9:2216:13 | ChiTotal | total:m2215_58 |
| ir.cpp:2216:9:2216:13 | SideEffect | ~m2215_58 |
| ir.cpp:2216:9:2216:13 | ChiTotal | total:m2215_46 |
| ir.cpp:2216:9:2216:13 | SideEffect | ~m2215_46 |
| ir.cpp:2216:15:2216:17 | Arg(0) | 0:r2216_3 |
| ir.cpp:2218:5:2218:5 | Address | &:r2218_22 |
| ir.cpp:2218:5:2218:5 | Address | &:r2218_26 |
| ir.cpp:2218:5:2218:5 | Address | &:r2218_32 |
| ir.cpp:2218:42:2218:43 | Address | &:r2218_1 |
| ir.cpp:2218:42:2218:43 | Address | &:r2218_1 |
| ir.cpp:2218:42:2218:43 | Address | &:r2218_69 |
| ir.cpp:2218:42:2218:43 | Address | &:r2218_69 |
| ir.cpp:2218:42:2218:43 | Address | &:r2218_65 |
| ir.cpp:2218:42:2218:43 | Address | &:r2218_65 |
| ir.cpp:2218:42:2218:43 | Arg(this) | this:r2218_1 |
| ir.cpp:2218:42:2218:43 | Arg(this) | this:r2218_69 |
| ir.cpp:2218:42:2218:43 | CallTarget | func:r2218_70 |
| ir.cpp:2218:42:2218:43 | ChiPartial | partial:m2218_72 |
| ir.cpp:2218:42:2218:43 | ChiPartial | partial:m2218_75 |
| ir.cpp:2218:42:2218:43 | Arg(this) | this:r2218_65 |
| ir.cpp:2218:42:2218:43 | CallTarget | func:r2218_66 |
| ir.cpp:2218:42:2218:43 | ChiPartial | partial:m2218_68 |
| ir.cpp:2218:42:2218:43 | ChiPartial | partial:m2218_71 |
| ir.cpp:2218:42:2218:43 | ChiTotal | total:m2218_13 |
| ir.cpp:2218:42:2218:43 | ChiTotal | total:m2218_65 |
| ir.cpp:2218:42:2218:43 | ChiTotal | total:m2218_61 |
| ir.cpp:2218:42:2218:43 | SideEffect | m2218_13 |
| ir.cpp:2218:42:2218:43 | SideEffect | ~m2218_65 |
| ir.cpp:2218:42:2218:43 | SideEffect | ~m2218_61 |
| ir.cpp:2218:45:2218:45 | Address | &:r2218_4 |
| ir.cpp:2218:45:2218:45 | Address | &:r2218_4 |
| ir.cpp:2218:45:2218:45 | Address | &:r2218_5 |
@@ -11849,22 +11820,22 @@
| ir.cpp:2218:45:2218:46 | CallTarget | func:r2218_3 |
| ir.cpp:2218:45:2218:46 | ChiPartial | partial:m2218_10 |
| ir.cpp:2218:45:2218:46 | ChiPartial | partial:m2218_12 |
| ir.cpp:2218:45:2218:46 | ChiTotal | total:m2215_51 |
| ir.cpp:2218:45:2218:46 | ChiTotal | total:m2215_46 |
| ir.cpp:2218:45:2218:46 | ChiTotal | total:m2218_2 |
| ir.cpp:2218:45:2218:46 | SideEffect | ~m2215_51 |
| ir.cpp:2218:69:2218:69 | Address | &:r2218_53 |
| ir.cpp:2218:69:2218:69 | Address | &:r2218_61 |
| ir.cpp:2218:69:2218:69 | Address | &:r2218_61 |
| ir.cpp:2218:69:2218:69 | Address | &:r2218_77 |
| ir.cpp:2218:69:2218:69 | Address | &:r2218_77 |
| ir.cpp:2218:69:2218:69 | Arg(this) | this:r2218_61 |
| ir.cpp:2218:69:2218:69 | Arg(this) | this:r2218_77 |
| ir.cpp:2218:69:2218:69 | CallTarget | func:r2218_62 |
| ir.cpp:2218:69:2218:69 | CallTarget | func:r2218_78 |
| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_64 |
| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_67 |
| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_80 |
| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_83 |
| ir.cpp:2218:45:2218:46 | SideEffect | ~m2215_46 |
| ir.cpp:2218:69:2218:69 | Address | &:r2218_51 |
| ir.cpp:2218:69:2218:69 | Address | &:r2218_57 |
| ir.cpp:2218:69:2218:69 | Address | &:r2218_57 |
| ir.cpp:2218:69:2218:69 | Address | &:r2218_73 |
| ir.cpp:2218:69:2218:69 | Address | &:r2218_73 |
| ir.cpp:2218:69:2218:69 | Arg(this) | this:r2218_57 |
| ir.cpp:2218:69:2218:69 | Arg(this) | this:r2218_73 |
| ir.cpp:2218:69:2218:69 | CallTarget | func:r2218_58 |
| ir.cpp:2218:69:2218:69 | CallTarget | func:r2218_74 |
| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_60 |
| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_63 |
| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_76 |
| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_79 |
| ir.cpp:2218:69:2218:69 | ChiTotal | total:m2220_5 |
| ir.cpp:2218:69:2218:69 | ChiTotal | total:m2220_5 |
| ir.cpp:2218:69:2218:69 | ChiTotal | total:m2220_8 |
@@ -11875,67 +11846,58 @@
| ir.cpp:2218:69:2218:69 | SideEffect | ~m2220_5 |
| ir.cpp:2218:73:2218:73 | Address | &:r2218_27 |
| ir.cpp:2218:73:2218:73 | Address | &:r2218_33 |
| ir.cpp:2218:73:2218:73 | Address | &:r2218_56 |
| ir.cpp:2218:73:2218:73 | Address | &:r2218_85 |
| ir.cpp:2218:73:2218:73 | Address | &:r2218_85 |
| ir.cpp:2218:73:2218:73 | Address | &:r2218_54 |
| ir.cpp:2218:73:2218:73 | Address | &:r2218_81 |
| ir.cpp:2218:73:2218:73 | Address | &:r2218_81 |
| ir.cpp:2218:73:2218:73 | Arg(this) | this:r0_18 |
| ir.cpp:2218:73:2218:73 | Arg(this) | this:r0_21 |
| ir.cpp:2218:73:2218:73 | Arg(this) | this:r0_23 |
| ir.cpp:2218:73:2218:73 | Arg(this) | this:r0_24 |
| ir.cpp:2218:73:2218:73 | Arg(this) | this:r0_31 |
| ir.cpp:2218:73:2218:73 | Arg(this) | this:r2218_85 |
| ir.cpp:2218:73:2218:73 | Arg(this) | this:r2218_81 |
| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_29 |
| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_35 |
| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_41 |
| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_42 |
| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_55 |
| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_86 |
| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_53 |
| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_82 |
| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_45 |
| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_47 |
| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_50 |
| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_57 |
| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_88 |
| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_91 |
| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_85 |
| ir.cpp:2218:73:2218:73 | ChiTotal | total:m0_25 |
| ir.cpp:2218:73:2218:73 | ChiTotal | total:m2218_38 |
| ir.cpp:2218:73:2218:73 | ChiTotal | total:m2218_39 |
| ir.cpp:2218:73:2218:73 | ChiTotal | total:m2218_46 |
| ir.cpp:2218:73:2218:73 | ChiTotal | total:m2218_51 |
| ir.cpp:2218:73:2218:73 | ChiTotal | total:m2218_81 |
| ir.cpp:2218:73:2218:73 | Condition | r2218_49 |
| ir.cpp:2218:73:2218:73 | Load | m2218_25 |
| ir.cpp:2218:73:2218:73 | Load | m2218_25 |
| ir.cpp:2218:73:2218:73 | Phi | from 10:m2218_31 |
| ir.cpp:2218:73:2218:73 | Phi | from 10:~m2218_18 |
| ir.cpp:2218:73:2218:73 | Phi | from 14:m2218_92 |
| ir.cpp:2218:73:2218:73 | Phi | from 14:~m2218_89 |
| ir.cpp:2218:73:2218:73 | Phi | from 14:m2218_86 |
| ir.cpp:2218:73:2218:73 | Phi | from 14:~m2218_77 |
| ir.cpp:2218:73:2218:73 | SideEffect | m2218_38 |
| ir.cpp:2218:73:2218:73 | SideEffect | ~m2218_39 |
| ir.cpp:2218:73:2218:73 | SideEffect | ~m2218_46 |
| ir.cpp:2218:73:2218:73 | SideEffect | ~m2218_51 |
| ir.cpp:2218:73:2218:73 | SideEffect | ~m2218_81 |
| ir.cpp:2218:73:2218:73 | StoreValue | r2218_30 |
| ir.cpp:2218:73:2218:73 | StoreValue | r2218_36 |
| ir.cpp:2218:73:2218:73 | Unary | r2218_28 |
| ir.cpp:2218:73:2218:73 | Unary | r2218_34 |
| ir.cpp:2218:73:2218:73 | Unary | r2218_40 |
| ir.cpp:2218:73:2218:73 | Unary | r2218_43 |
| ir.cpp:2218:73:2218:73 | Unary | r2218_54 |
| ir.cpp:2218:73:2218:73 | Unary | r2218_87 |
| ir.cpp:2218:73:2218:73 | Unary | r2218_52 |
| ir.cpp:2218:73:2218:73 | Unary | r2218_83 |
| ir.cpp:2218:73:2218:74 | StoreValue | r2218_24 |
| ir.cpp:2218:73:2218:74 | Unary | r2218_23 |
| ir.cpp:2218:73:2218:75 | Load | ~m2218_58 |
| ir.cpp:2218:73:2218:75 | StoreValue | r2218_59 |
| ir.cpp:2218:73:2218:75 | Load | ~m2218_46 |
| ir.cpp:2218:73:2218:75 | StoreValue | r2218_55 |
| ir.cpp:2219:7:2219:7 | Address | &:r2219_1 |
| ir.cpp:2219:7:2219:7 | Address | &:r2219_1 |
| ir.cpp:2219:7:2219:7 | Arg(this) | this:r2219_1 |
| ir.cpp:2219:7:2219:7 | ChiPartial | partial:m2219_8 |
| ir.cpp:2219:7:2219:7 | ChiTotal | total:m2218_60 |
| ir.cpp:2219:7:2219:7 | SideEffect | m2218_60 |
| ir.cpp:2219:7:2219:7 | ChiTotal | total:m2218_56 |
| ir.cpp:2219:7:2219:7 | SideEffect | m2218_56 |
| ir.cpp:2219:9:2219:13 | CallTarget | func:r2219_2 |
| ir.cpp:2219:9:2219:13 | ChiPartial | partial:m2219_5 |
| ir.cpp:2219:9:2219:13 | ChiTotal | total:m2218_58 |
| ir.cpp:2219:9:2219:13 | SideEffect | ~m2218_58 |
| ir.cpp:2219:9:2219:13 | ChiTotal | total:m2218_46 |
| ir.cpp:2219:9:2219:13 | SideEffect | ~m2218_46 |
| ir.cpp:2219:15:2219:17 | Arg(0) | 0:r2219_3 |
| ir.cpp:2220:11:2220:11 | Address | &:r2220_1 |
| ir.cpp:2220:11:2220:11 | Address | &:r2220_1 |
@@ -11956,81 +11918,72 @@
| ir.cpp:2224:5:2224:5 | Address | &:r2224_20 |
| ir.cpp:2224:26:2224:27 | Address | &:r2224_1 |
| ir.cpp:2224:26:2224:27 | Address | &:r2224_1 |
| ir.cpp:2224:26:2224:27 | Address | &:r2224_58 |
| ir.cpp:2224:26:2224:27 | Address | &:r2224_58 |
| ir.cpp:2224:26:2224:27 | Address | &:r2224_52 |
| ir.cpp:2224:26:2224:27 | Address | &:r2224_52 |
| ir.cpp:2224:26:2224:27 | Arg(this) | this:r2224_1 |
| ir.cpp:2224:26:2224:27 | Arg(this) | this:r2224_58 |
| ir.cpp:2224:26:2224:27 | CallTarget | func:r2224_59 |
| ir.cpp:2224:26:2224:27 | ChiPartial | partial:m2224_61 |
| ir.cpp:2224:26:2224:27 | ChiPartial | partial:m2224_64 |
| ir.cpp:2224:26:2224:27 | Arg(this) | this:r2224_52 |
| ir.cpp:2224:26:2224:27 | CallTarget | func:r2224_53 |
| ir.cpp:2224:26:2224:27 | ChiPartial | partial:m2224_55 |
| ir.cpp:2224:26:2224:27 | ChiPartial | partial:m2224_58 |
| ir.cpp:2224:26:2224:27 | ChiTotal | total:m2224_9 |
| ir.cpp:2224:26:2224:27 | ChiTotal | total:m2224_55 |
| ir.cpp:2224:26:2224:27 | ChiTotal | total:m2224_34 |
| ir.cpp:2224:26:2224:27 | SideEffect | m2224_9 |
| ir.cpp:2224:26:2224:27 | SideEffect | ~m2224_55 |
| ir.cpp:2224:26:2224:27 | SideEffect | ~m2224_34 |
| ir.cpp:2224:29:2224:29 | Arg(0) | 0:r2224_4 |
| ir.cpp:2224:29:2224:30 | CallTarget | func:r2224_3 |
| ir.cpp:2224:29:2224:30 | ChiPartial | partial:m2224_6 |
| ir.cpp:2224:29:2224:30 | ChiPartial | partial:m2224_8 |
| ir.cpp:2224:29:2224:30 | ChiTotal | total:m2218_51 |
| ir.cpp:2224:29:2224:30 | ChiTotal | total:m2218_46 |
| ir.cpp:2224:29:2224:30 | ChiTotal | total:m2224_2 |
| ir.cpp:2224:29:2224:30 | SideEffect | ~m2218_51 |
| ir.cpp:2224:37:2224:37 | Address | &:r2224_50 |
| ir.cpp:2224:29:2224:30 | SideEffect | ~m2218_46 |
| ir.cpp:2224:37:2224:37 | Address | &:r2224_46 |
| ir.cpp:2224:41:2224:41 | Address | &:r2224_15 |
| ir.cpp:2224:41:2224:41 | Address | &:r2224_21 |
| ir.cpp:2224:41:2224:41 | Address | &:r2224_41 |
| ir.cpp:2224:41:2224:41 | Address | &:r2224_41 |
| ir.cpp:2224:41:2224:41 | Address | &:r2224_53 |
| ir.cpp:2224:41:2224:41 | Address | &:r2224_39 |
| ir.cpp:2224:41:2224:41 | Address | &:r2224_39 |
| ir.cpp:2224:41:2224:41 | Address | &:r2224_49 |
| ir.cpp:2224:41:2224:41 | Arg(this) | this:r0_34 |
| ir.cpp:2224:41:2224:41 | Arg(this) | this:r0_37 |
| ir.cpp:2224:41:2224:41 | Arg(this) | this:r0_39 |
| ir.cpp:2224:41:2224:41 | Arg(this) | this:r0_40 |
| ir.cpp:2224:41:2224:41 | Arg(this) | this:r0_47 |
| ir.cpp:2224:41:2224:41 | Arg(this) | this:r2224_41 |
| ir.cpp:2224:41:2224:41 | Arg(this) | this:r2224_39 |
| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_17 |
| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_23 |
| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_29 |
| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_30 |
| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_42 |
| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_52 |
| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_40 |
| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_48 |
| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_33 |
| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_35 |
| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_38 |
| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_44 |
| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_47 |
| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_54 |
| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_43 |
| ir.cpp:2224:41:2224:41 | ChiTotal | total:m0_41 |
| ir.cpp:2224:41:2224:41 | ChiTotal | total:m2224_26 |
| ir.cpp:2224:41:2224:41 | ChiTotal | total:m2224_27 |
| ir.cpp:2224:41:2224:41 | ChiTotal | total:m2224_34 |
| ir.cpp:2224:41:2224:41 | ChiTotal | total:m2224_39 |
| ir.cpp:2224:41:2224:41 | ChiTotal | total:m2224_55 |
| ir.cpp:2224:41:2224:41 | Condition | r2224_37 |
| ir.cpp:2224:41:2224:41 | Load | m2224_13 |
| ir.cpp:2224:41:2224:41 | Load | m2224_13 |
| ir.cpp:2224:41:2224:41 | Phi | from 15:m2224_19 |
| ir.cpp:2224:41:2224:41 | Phi | from 15:~m2224_7 |
| ir.cpp:2224:41:2224:41 | Phi | from 17:m2224_48 |
| ir.cpp:2224:41:2224:41 | Phi | from 17:~m2224_45 |
| ir.cpp:2224:41:2224:41 | Phi | from 17:m2224_44 |
| ir.cpp:2224:41:2224:41 | Phi | from 17:~m2224_34 |
| ir.cpp:2224:41:2224:41 | SideEffect | m2224_26 |
| ir.cpp:2224:41:2224:41 | SideEffect | ~m2224_27 |
| ir.cpp:2224:41:2224:41 | SideEffect | ~m2224_34 |
| ir.cpp:2224:41:2224:41 | SideEffect | ~m2224_39 |
| ir.cpp:2224:41:2224:41 | SideEffect | ~m2224_55 |
| ir.cpp:2224:41:2224:41 | StoreValue | r2224_18 |
| ir.cpp:2224:41:2224:41 | StoreValue | r2224_24 |
| ir.cpp:2224:41:2224:41 | Unary | r2224_16 |
| ir.cpp:2224:41:2224:41 | Unary | r2224_22 |
| ir.cpp:2224:41:2224:41 | Unary | r2224_28 |
| ir.cpp:2224:41:2224:41 | Unary | r2224_31 |
| ir.cpp:2224:41:2224:41 | Unary | r2224_43 |
| ir.cpp:2224:41:2224:41 | Unary | r2224_51 |
| ir.cpp:2224:41:2224:41 | Unary | r2224_41 |
| ir.cpp:2224:41:2224:41 | Unary | r2224_47 |
| ir.cpp:2224:41:2224:42 | StoreValue | r2224_12 |
| ir.cpp:2224:41:2224:42 | Unary | r2224_11 |
| ir.cpp:2224:41:2224:43 | Load | ~m2224_55 |
| ir.cpp:2224:41:2224:43 | StoreValue | r2224_56 |
| ir.cpp:2224:41:2224:43 | Load | ~m2224_34 |
| ir.cpp:2224:41:2224:43 | StoreValue | r2224_50 |
| ir.cpp:2225:11:2225:11 | Address | &:r2225_1 |
| ir.cpp:2225:11:2225:11 | Left | r2225_2 |
| ir.cpp:2225:11:2225:11 | Load | m2224_57 |
| ir.cpp:2225:11:2225:11 | Load | m2224_51 |
| ir.cpp:2225:11:2225:16 | Condition | r2225_4 |
| ir.cpp:2225:16:2225:16 | Right | r2225_3 |
| ir.cpp:2229:5:2229:5 | Address | &:r2229_22 |
@@ -12060,82 +12013,73 @@
| ir.cpp:2229:45:2229:46 | CallTarget | func:r2229_3 |
| ir.cpp:2229:45:2229:46 | ChiPartial | partial:m2229_10 |
| ir.cpp:2229:45:2229:46 | ChiPartial | partial:m2229_12 |
| ir.cpp:2229:45:2229:46 | ChiTotal | total:m2224_39 |
| ir.cpp:2229:45:2229:46 | ChiTotal | total:m2224_34 |
| ir.cpp:2229:45:2229:46 | ChiTotal | total:m2229_2 |
| ir.cpp:2229:45:2229:46 | SideEffect | ~m2224_39 |
| ir.cpp:2229:69:2229:69 | Address | &:r2229_53 |
| ir.cpp:2229:69:2229:69 | Address | &:r2229_61 |
| ir.cpp:2229:69:2229:69 | Address | &:r2229_61 |
| ir.cpp:2229:69:2229:69 | Arg(this) | this:r2229_61 |
| ir.cpp:2229:69:2229:69 | CallTarget | func:r2229_62 |
| ir.cpp:2229:69:2229:69 | ChiPartial | partial:m2229_64 |
| ir.cpp:2229:69:2229:69 | ChiPartial | partial:m2229_67 |
| ir.cpp:2229:69:2229:69 | ChiTotal | total:m2229_60 |
| ir.cpp:2229:45:2229:46 | SideEffect | ~m2224_34 |
| ir.cpp:2229:69:2229:69 | Address | &:r2229_51 |
| ir.cpp:2229:69:2229:69 | Address | &:r2229_57 |
| ir.cpp:2229:69:2229:69 | Address | &:r2229_57 |
| ir.cpp:2229:69:2229:69 | Arg(this) | this:r2229_57 |
| ir.cpp:2229:69:2229:69 | CallTarget | func:r2229_58 |
| ir.cpp:2229:69:2229:69 | ChiPartial | partial:m2229_60 |
| ir.cpp:2229:69:2229:69 | ChiPartial | partial:m2229_63 |
| ir.cpp:2229:69:2229:69 | ChiTotal | total:m2229_56 |
| ir.cpp:2229:69:2229:69 | ChiTotal | total:m2232_13 |
| ir.cpp:2229:69:2229:69 | SideEffect | m2229_60 |
| ir.cpp:2229:69:2229:69 | SideEffect | m2229_56 |
| ir.cpp:2229:69:2229:69 | SideEffect | ~m2232_13 |
| ir.cpp:2229:73:2229:73 | Address | &:r2229_27 |
| ir.cpp:2229:73:2229:73 | Address | &:r2229_33 |
| ir.cpp:2229:73:2229:73 | Address | &:r2229_56 |
| ir.cpp:2229:73:2229:73 | Address | &:r2229_69 |
| ir.cpp:2229:73:2229:73 | Address | &:r2229_69 |
| ir.cpp:2229:73:2229:73 | Address | &:r2229_54 |
| ir.cpp:2229:73:2229:73 | Address | &:r2229_65 |
| ir.cpp:2229:73:2229:73 | Address | &:r2229_65 |
| ir.cpp:2229:73:2229:73 | Arg(this) | this:r0_50 |
| ir.cpp:2229:73:2229:73 | Arg(this) | this:r0_53 |
| ir.cpp:2229:73:2229:73 | Arg(this) | this:r0_55 |
| ir.cpp:2229:73:2229:73 | Arg(this) | this:r0_56 |
| ir.cpp:2229:73:2229:73 | Arg(this) | this:r0_63 |
| ir.cpp:2229:73:2229:73 | Arg(this) | this:r2229_69 |
| ir.cpp:2229:73:2229:73 | Arg(this) | this:r2229_65 |
| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_29 |
| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_35 |
| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_41 |
| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_42 |
| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_55 |
| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_70 |
| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_53 |
| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_66 |
| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_45 |
| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_47 |
| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_50 |
| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_57 |
| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_72 |
| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_75 |
| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_69 |
| ir.cpp:2229:73:2229:73 | ChiTotal | total:m0_57 |
| ir.cpp:2229:73:2229:73 | ChiTotal | total:m2229_38 |
| ir.cpp:2229:73:2229:73 | ChiTotal | total:m2229_39 |
| ir.cpp:2229:73:2229:73 | ChiTotal | total:m2229_46 |
| ir.cpp:2229:73:2229:73 | ChiTotal | total:m2229_51 |
| ir.cpp:2229:73:2229:73 | ChiTotal | total:m2229_65 |
| ir.cpp:2229:73:2229:73 | Condition | r2229_49 |
| ir.cpp:2229:73:2229:73 | Load | m2229_25 |
| ir.cpp:2229:73:2229:73 | Load | m2229_25 |
| ir.cpp:2229:73:2229:73 | Phi | from 20:m2229_31 |
| ir.cpp:2229:73:2229:73 | Phi | from 20:~m2229_18 |
| ir.cpp:2229:73:2229:73 | Phi | from 22:m2229_76 |
| ir.cpp:2229:73:2229:73 | Phi | from 22:~m2229_73 |
| ir.cpp:2229:73:2229:73 | Phi | from 22:m2229_70 |
| ir.cpp:2229:73:2229:73 | Phi | from 22:~m2229_61 |
| ir.cpp:2229:73:2229:73 | SideEffect | m2229_38 |
| ir.cpp:2229:73:2229:73 | SideEffect | ~m2229_39 |
| ir.cpp:2229:73:2229:73 | SideEffect | ~m2229_46 |
| ir.cpp:2229:73:2229:73 | SideEffect | ~m2229_51 |
| ir.cpp:2229:73:2229:73 | SideEffect | ~m2229_65 |
| ir.cpp:2229:73:2229:73 | StoreValue | r2229_30 |
| ir.cpp:2229:73:2229:73 | StoreValue | r2229_36 |
| ir.cpp:2229:73:2229:73 | Unary | r2229_28 |
| ir.cpp:2229:73:2229:73 | Unary | r2229_34 |
| ir.cpp:2229:73:2229:73 | Unary | r2229_40 |
| ir.cpp:2229:73:2229:73 | Unary | r2229_43 |
| ir.cpp:2229:73:2229:73 | Unary | r2229_54 |
| ir.cpp:2229:73:2229:73 | Unary | r2229_71 |
| ir.cpp:2229:73:2229:73 | Unary | r2229_52 |
| ir.cpp:2229:73:2229:73 | Unary | r2229_67 |
| ir.cpp:2229:73:2229:74 | StoreValue | r2229_24 |
| ir.cpp:2229:73:2229:74 | Unary | r2229_23 |
| ir.cpp:2229:73:2229:75 | Load | ~m2229_58 |
| ir.cpp:2229:73:2229:75 | StoreValue | r2229_59 |
| ir.cpp:2229:73:2229:75 | Load | ~m2229_46 |
| ir.cpp:2229:73:2229:75 | StoreValue | r2229_55 |
| ir.cpp:2230:27:2230:28 | Address | &:r2230_1 |
| ir.cpp:2230:27:2230:28 | Address | &:r2230_1 |
| ir.cpp:2230:27:2230:28 | Arg(this) | this:r2230_1 |
| ir.cpp:2230:27:2230:28 | CallTarget | func:r2230_3 |
| ir.cpp:2230:27:2230:28 | ChiPartial | partial:m2230_5 |
| ir.cpp:2230:27:2230:28 | ChiPartial | partial:m2230_7 |
| ir.cpp:2230:27:2230:28 | ChiTotal | total:m2229_58 |
| ir.cpp:2230:27:2230:28 | ChiTotal | total:m2229_46 |
| ir.cpp:2230:27:2230:28 | ChiTotal | total:m2230_2 |
| ir.cpp:2230:27:2230:28 | SideEffect | ~m2229_58 |
| ir.cpp:2230:27:2230:28 | SideEffect | ~m2229_46 |
| ir.cpp:2231:27:2231:28 | Address | &:r2231_1 |
| ir.cpp:2231:27:2231:28 | Address | &:r2231_1 |
| ir.cpp:2231:27:2231:28 | Arg(this) | this:r2231_1 |
@@ -12186,15 +12130,15 @@
| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2214_8 |
| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2214_8 |
| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2214_8 |
| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2218_73 |
| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2224_62 |
| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2229_51 |
| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2218_69 |
| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2224_56 |
| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2229_46 |
| ir.cpp:2233:1:2233:1 | SideEffect | m2214_8 |
| ir.cpp:2233:1:2233:1 | SideEffect | m2214_8 |
| ir.cpp:2233:1:2233:1 | SideEffect | m2214_8 |
| ir.cpp:2233:1:2233:1 | SideEffect | ~m2218_73 |
| ir.cpp:2233:1:2233:1 | SideEffect | ~m2224_62 |
| ir.cpp:2233:1:2233:1 | SideEffect | ~m2229_51 |
| ir.cpp:2233:1:2233:1 | SideEffect | ~m2218_69 |
| ir.cpp:2233:1:2233:1 | SideEffect | ~m2224_56 |
| ir.cpp:2233:1:2233:1 | SideEffect | ~m2229_46 |
| ir.cpp:2235:6:2235:38 | ChiPartial | partial:m2235_3 |
| ir.cpp:2235:6:2235:38 | ChiTotal | total:m2235_2 |
| ir.cpp:2235:6:2235:38 | SideEffect | ~m2238_7 |
@@ -12710,74 +12654,65 @@
| ir.cpp:2307:5:2307:5 | Address | &:r2307_1 |
| ir.cpp:2307:5:2307:5 | Address | &:r2307_32 |
| ir.cpp:2307:5:2307:5 | Address | &:r2307_38 |
| ir.cpp:2307:16:2307:16 | Address | &:r2307_59 |
| ir.cpp:2307:16:2307:16 | Address | &:r2307_59 |
| ir.cpp:2307:16:2307:16 | Address | &:r2307_76 |
| ir.cpp:2307:16:2307:16 | Address | &:r2307_76 |
| ir.cpp:2307:16:2307:16 | Arg(this) | this:r2307_59 |
| ir.cpp:2307:16:2307:16 | Arg(this) | this:r2307_76 |
| ir.cpp:2307:16:2307:16 | CallTarget | func:r2307_61 |
| ir.cpp:2307:16:2307:16 | CallTarget | func:r2307_77 |
| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_71 |
| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_74 |
| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_79 |
| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_82 |
| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2307_60 |
| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2307_66 |
| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2307_75 |
| ir.cpp:2307:16:2307:16 | Address | &:r2307_57 |
| ir.cpp:2307:16:2307:16 | Address | &:r2307_57 |
| ir.cpp:2307:16:2307:16 | Address | &:r2307_72 |
| ir.cpp:2307:16:2307:16 | Address | &:r2307_72 |
| ir.cpp:2307:16:2307:16 | Arg(this) | this:r2307_57 |
| ir.cpp:2307:16:2307:16 | Arg(this) | this:r2307_72 |
| ir.cpp:2307:16:2307:16 | CallTarget | func:r2307_59 |
| ir.cpp:2307:16:2307:16 | CallTarget | func:r2307_73 |
| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_67 |
| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_70 |
| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_75 |
| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_78 |
| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2307_52 |
| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2307_58 |
| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2307_71 |
| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2309_5 |
| ir.cpp:2307:16:2307:16 | SideEffect | m2307_75 |
| ir.cpp:2307:16:2307:16 | SideEffect | ~m2307_66 |
| ir.cpp:2307:16:2307:16 | SideEffect | m2307_71 |
| ir.cpp:2307:16:2307:16 | SideEffect | ~m2307_52 |
| ir.cpp:2307:16:2307:16 | SideEffect | ~m2309_5 |
| ir.cpp:2307:20:2307:20 | Address | &:r2307_33 |
| ir.cpp:2307:20:2307:20 | Address | &:r2307_39 |
| ir.cpp:2307:20:2307:20 | Address | &:r2307_84 |
| ir.cpp:2307:20:2307:20 | Address | &:r2307_84 |
| ir.cpp:2307:20:2307:20 | Address | &:r2307_80 |
| ir.cpp:2307:20:2307:20 | Address | &:r2307_80 |
| ir.cpp:2307:20:2307:20 | Arg(this) | this:r0_2 |
| ir.cpp:2307:20:2307:20 | Arg(this) | this:r0_5 |
| ir.cpp:2307:20:2307:20 | Arg(this) | this:r0_7 |
| ir.cpp:2307:20:2307:20 | Arg(this) | this:r0_8 |
| ir.cpp:2307:20:2307:20 | Arg(this) | this:r0_15 |
| ir.cpp:2307:20:2307:20 | Arg(this) | this:r2307_84 |
| ir.cpp:2307:20:2307:20 | Arg(this) | this:r2307_80 |
| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_35 |
| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_41 |
| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_47 |
| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_48 |
| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_63 |
| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_85 |
| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_61 |
| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_81 |
| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_51 |
| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_53 |
| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_56 |
| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_65 |
| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_87 |
| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_90 |
| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_84 |
| ir.cpp:2307:20:2307:20 | ChiTotal | total:m0_9 |
| ir.cpp:2307:20:2307:20 | ChiTotal | total:m2307_44 |
| ir.cpp:2307:20:2307:20 | ChiTotal | total:m2307_45 |
| ir.cpp:2307:20:2307:20 | ChiTotal | total:m2307_52 |
| ir.cpp:2307:20:2307:20 | ChiTotal | total:m2307_57 |
| ir.cpp:2307:20:2307:20 | ChiTotal | total:m2307_80 |
| ir.cpp:2307:20:2307:20 | Condition | r2307_55 |
| ir.cpp:2307:20:2307:20 | Load | m2307_31 |
| ir.cpp:2307:20:2307:20 | Load | m2307_31 |
| ir.cpp:2307:20:2307:20 | Phi | from 3:m2307_37 |
| ir.cpp:2307:20:2307:20 | Phi | from 3:~m2307_26 |
| ir.cpp:2307:20:2307:20 | Phi | from 5:m2307_91 |
| ir.cpp:2307:20:2307:20 | Phi | from 5:~m2307_88 |
| ir.cpp:2307:20:2307:20 | Phi | from 5:m2307_85 |
| ir.cpp:2307:20:2307:20 | Phi | from 5:~m2307_76 |
| ir.cpp:2307:20:2307:20 | SideEffect | m2307_44 |
| ir.cpp:2307:20:2307:20 | SideEffect | ~m2307_45 |
| ir.cpp:2307:20:2307:20 | SideEffect | ~m2307_52 |
| ir.cpp:2307:20:2307:20 | SideEffect | ~m2307_57 |
| ir.cpp:2307:20:2307:20 | SideEffect | ~m2307_80 |
| ir.cpp:2307:20:2307:20 | StoreValue | r2307_36 |
| ir.cpp:2307:20:2307:20 | StoreValue | r2307_42 |
| ir.cpp:2307:20:2307:20 | Unary | r2307_34 |
| ir.cpp:2307:20:2307:20 | Unary | r2307_40 |
| ir.cpp:2307:20:2307:20 | Unary | r2307_46 |
| ir.cpp:2307:20:2307:20 | Unary | r2307_49 |
| ir.cpp:2307:20:2307:20 | Unary | r2307_60 |
| ir.cpp:2307:20:2307:20 | Unary | r2307_62 |
| ir.cpp:2307:20:2307:20 | Unary | r2307_64 |
| ir.cpp:2307:20:2307:20 | Unary | r2307_86 |
| ir.cpp:2307:20:2307:20 | Unary | r2307_82 |
| ir.cpp:2307:20:2307:55 | Address | &:r2307_2 |
| ir.cpp:2307:20:2307:55 | Address | &:r2307_2 |
| ir.cpp:2307:20:2307:55 | Arg(this) | this:r2307_2 |
@@ -12789,11 +12724,11 @@
| ir.cpp:2307:20:2307:55 | SideEffect | ~m2307_12 |
| ir.cpp:2307:20:2307:55 | StoreValue | r2307_30 |
| ir.cpp:2307:20:2307:55 | Unary | r2307_2 |
| ir.cpp:2307:20:2307:56 | Address | &:r2307_69 |
| ir.cpp:2307:20:2307:56 | Arg(0) | 0:r2307_69 |
| ir.cpp:2307:20:2307:56 | SideEffect | ~m2307_72 |
| ir.cpp:2307:20:2307:56 | Unary | r2307_67 |
| ir.cpp:2307:20:2307:56 | Unary | r2307_68 |
| ir.cpp:2307:20:2307:56 | Address | &:r2307_65 |
| ir.cpp:2307:20:2307:56 | Arg(0) | 0:r2307_65 |
| ir.cpp:2307:20:2307:56 | SideEffect | ~m2307_68 |
| ir.cpp:2307:20:2307:56 | Unary | r2307_63 |
| ir.cpp:2307:20:2307:56 | Unary | r2307_64 |
| ir.cpp:2307:40:2307:54 | Address | &:r2307_5 |
| ir.cpp:2307:40:2307:54 | Address | &:r2307_5 |
| ir.cpp:2307:40:2307:54 | Address | &:r2307_5 |
@@ -12827,9 +12762,9 @@
| ir.cpp:2308:16:2308:17 | CallTarget | func:r2308_3 |
| ir.cpp:2308:16:2308:17 | ChiPartial | partial:m2308_5 |
| ir.cpp:2308:16:2308:17 | ChiPartial | partial:m2308_7 |
| ir.cpp:2308:16:2308:17 | ChiTotal | total:m2307_72 |
| ir.cpp:2308:16:2308:17 | ChiTotal | total:m2307_68 |
| ir.cpp:2308:16:2308:17 | ChiTotal | total:m2308_2 |
| ir.cpp:2308:16:2308:17 | SideEffect | ~m2307_72 |
| ir.cpp:2308:16:2308:17 | SideEffect | ~m2307_68 |
| ir.cpp:2309:5:2309:5 | Address | &:r2309_1 |
| ir.cpp:2309:5:2309:5 | Address | &:r2309_1 |
| ir.cpp:2309:5:2309:5 | Arg(this) | this:r2309_1 |
@@ -12860,9 +12795,9 @@
| ir.cpp:2311:18:2311:25 | CallTarget | func:r2311_3 |
| ir.cpp:2311:18:2311:25 | ChiPartial | partial:m2311_7 |
| ir.cpp:2311:18:2311:25 | ChiPartial | partial:m2311_10 |
| ir.cpp:2311:18:2311:25 | ChiTotal | total:m2307_57 |
| ir.cpp:2311:18:2311:25 | ChiTotal | total:m2307_52 |
| ir.cpp:2311:18:2311:25 | ChiTotal | total:m2311_2 |
| ir.cpp:2311:18:2311:25 | SideEffect | ~m2307_57 |
| ir.cpp:2311:18:2311:25 | SideEffect | ~m2307_52 |
| ir.cpp:2311:28:2311:29 | Address | &:r2311_12 |
| ir.cpp:2311:28:2311:29 | Address | &:r2311_12 |
| ir.cpp:2311:28:2311:29 | Address | &:r2311_42 |
@@ -13260,7 +13195,7 @@
| ir.cpp:2407:12:2407:21 | StoreValue | r2407_2 |
| ir.cpp:2410:6:2410:40 | ChiPartial | partial:m2410_3 |
| ir.cpp:2410:6:2410:40 | ChiTotal | total:m2410_2 |
| ir.cpp:2410:6:2410:40 | SideEffect | ~m2430_64 |
| ir.cpp:2410:6:2410:40 | SideEffect | ~m2430_59 |
| ir.cpp:2411:9:2411:46 | Address | &:r2411_1 |
| ir.cpp:2411:9:2411:46 | Condition | r2411_30 |
| ir.cpp:2411:14:2411:14 | Address | &:r2411_26 |
@@ -13507,56 +13442,47 @@
| ir.cpp:2430:40:2430:44 | ChiTotal | total:m2430_7 |
| ir.cpp:2430:40:2430:44 | SideEffect | ~m2430_7 |
| ir.cpp:2430:40:2430:44 | StoreValue | r2430_11 |
| ir.cpp:2430:54:2430:54 | Address | &:r2430_66 |
| ir.cpp:2430:54:2430:54 | Address | &:r2430_64 |
| ir.cpp:2430:58:2430:58 | Address | &:r2430_40 |
| ir.cpp:2430:58:2430:58 | Address | &:r2430_46 |
| ir.cpp:2430:58:2430:58 | Address | &:r2430_69 |
| ir.cpp:2430:58:2430:58 | Address | &:r2430_74 |
| ir.cpp:2430:58:2430:58 | Address | &:r2430_74 |
| ir.cpp:2430:58:2430:58 | Address | &:r2430_67 |
| ir.cpp:2430:58:2430:58 | Address | &:r2430_70 |
| ir.cpp:2430:58:2430:58 | Address | &:r2430_70 |
| ir.cpp:2430:58:2430:58 | Arg(this) | this:r0_2 |
| ir.cpp:2430:58:2430:58 | Arg(this) | this:r0_5 |
| ir.cpp:2430:58:2430:58 | Arg(this) | this:r0_7 |
| ir.cpp:2430:58:2430:58 | Arg(this) | this:r0_8 |
| ir.cpp:2430:58:2430:58 | Arg(this) | this:r0_15 |
| ir.cpp:2430:58:2430:58 | Arg(this) | this:r2430_74 |
| ir.cpp:2430:58:2430:58 | Arg(this) | this:r2430_70 |
| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_42 |
| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_48 |
| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_54 |
| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_55 |
| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_68 |
| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_75 |
| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_66 |
| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_71 |
| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_58 |
| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_60 |
| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_63 |
| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_70 |
| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_77 |
| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_80 |
| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_74 |
| ir.cpp:2430:58:2430:58 | ChiTotal | total:m0_9 |
| ir.cpp:2430:58:2430:58 | ChiTotal | total:m2430_51 |
| ir.cpp:2430:58:2430:58 | ChiTotal | total:m2430_52 |
| ir.cpp:2430:58:2430:58 | ChiTotal | total:m2430_59 |
| ir.cpp:2430:58:2430:58 | ChiTotal | total:m2430_64 |
| ir.cpp:2430:58:2430:58 | ChiTotal | total:m2430_71 |
| ir.cpp:2430:58:2430:58 | Condition | r2430_62 |
| ir.cpp:2430:58:2430:58 | Load | m2430_38 |
| ir.cpp:2430:58:2430:58 | Load | m2430_38 |
| ir.cpp:2430:58:2430:58 | Phi | from 9:m2430_44 |
| ir.cpp:2430:58:2430:58 | Phi | from 9:~m2430_34 |
| ir.cpp:2430:58:2430:58 | Phi | from 11:m2430_81 |
| ir.cpp:2430:58:2430:58 | Phi | from 11:~m2430_78 |
| ir.cpp:2430:58:2430:58 | Phi | from 11:m2430_75 |
| ir.cpp:2430:58:2430:58 | Phi | from 11:~m2430_59 |
| ir.cpp:2430:58:2430:58 | SideEffect | m2430_51 |
| ir.cpp:2430:58:2430:58 | SideEffect | ~m2430_52 |
| ir.cpp:2430:58:2430:58 | SideEffect | ~m2430_59 |
| ir.cpp:2430:58:2430:58 | SideEffect | ~m2430_64 |
| ir.cpp:2430:58:2430:58 | SideEffect | ~m2430_71 |
| ir.cpp:2430:58:2430:58 | StoreValue | r2430_43 |
| ir.cpp:2430:58:2430:58 | StoreValue | r2430_49 |
| ir.cpp:2430:58:2430:58 | Unary | r2430_41 |
| ir.cpp:2430:58:2430:58 | Unary | r2430_47 |
| ir.cpp:2430:58:2430:58 | Unary | r2430_53 |
| ir.cpp:2430:58:2430:58 | Unary | r2430_56 |
| ir.cpp:2430:58:2430:58 | Unary | r2430_67 |
| ir.cpp:2430:58:2430:58 | Unary | r2430_76 |
| ir.cpp:2430:58:2430:58 | Unary | r2430_65 |
| ir.cpp:2430:58:2430:58 | Unary | r2430_72 |
| ir.cpp:2430:58:2430:77 | Address | &:r2430_27 |
| ir.cpp:2430:58:2430:77 | Address | &:r2430_27 |
| ir.cpp:2430:58:2430:77 | Arg(this) | this:r2430_27 |
@@ -13568,14 +13494,14 @@
| ir.cpp:2430:58:2430:77 | SideEffect | ~m2430_21 |
| ir.cpp:2430:58:2430:77 | StoreValue | r2430_37 |
| ir.cpp:2430:58:2430:77 | Unary | r2430_27 |
| ir.cpp:2430:58:2430:78 | Load | ~m2430_71 |
| ir.cpp:2430:58:2430:78 | StoreValue | r2430_72 |
| ir.cpp:2430:58:2430:78 | Load | ~m2430_59 |
| ir.cpp:2430:58:2430:78 | StoreValue | r2430_68 |
| ir.cpp:2430:76:2430:76 | Address | &:r2430_30 |
| ir.cpp:2430:76:2430:76 | Arg(0) | 0:r2430_31 |
| ir.cpp:2430:76:2430:76 | Load | m2430_25 |
| ir.cpp:2431:9:2431:9 | Address | &:r2431_4 |
| ir.cpp:2431:9:2431:9 | Address | &:r2431_4 |
| ir.cpp:2431:9:2431:9 | Load | m2430_73 |
| ir.cpp:2431:9:2431:9 | Load | m2430_69 |
| ir.cpp:2431:9:2431:9 | Unary | r2431_5 |
| ir.cpp:2431:9:2431:14 | Left | r2431_6 |
| ir.cpp:2431:9:2431:14 | StoreValue | r2431_8 |

View File

@@ -7217,22 +7217,20 @@ ir.cpp:
# 1127| mu1127_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_6
#-----| r0_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_6, ~m?
# 1127| r1127_26(bool) = Call[operator!=] : func:r1127_20, this:r0_5, 0:r0_11
# 1127| mu1127_27(unknown) = ^CallSideEffect : ~m?
#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m?
# 1127| v1127_28(void) = ConditionalBranch : r1127_26
# 1127| v1127_27(void) = ConditionalBranch : r1127_26
#-----| False -> Block 5
#-----| True -> Block 2
# 1127| Block 2
# 1127| r1127_29(glval<int>) = VariableAddress[e] :
# 1127| r1127_30(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_30
# 1127| r1127_31(glval<unknown>) = FunctionAddress[operator*] :
# 1127| r1127_32(int &) = Call[operator*] : func:r1127_31, this:r0_13
# 1127| mu1127_33(unknown) = ^CallSideEffect : ~m?
# 1127| r1127_28(glval<int>) = VariableAddress[e] :
# 1127| r1127_29(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_29
# 1127| r1127_30(glval<unknown>) = FunctionAddress[operator*] :
# 1127| r1127_31(int &) = Call[operator*] : func:r1127_30, this:r0_13
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, ~m?
# 1127| r1127_34(int) = Load[?] : &:r1127_32, ~m?
# 1127| mu1127_35(int) = Store[e] : &:r1127_29, r1127_34
# 1127| r1127_32(int) = Load[?] : &:r1127_31, ~m?
# 1127| mu1127_33(int) = Store[e] : &:r1127_28, r1127_32
# 1128| r1128_1(glval<int>) = VariableAddress[e] :
# 1128| r1128_2(int) = Load[e] : &:r1128_1, ~m?
# 1128| r1128_3(int) = Constant[0] :
@@ -7246,14 +7244,13 @@ ir.cpp:
#-----| Goto -> Block 4
# 1127| Block 4
# 1127| v1127_36(void) = NoOp :
# 1127| r1127_37(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 1127| r1127_38(glval<unknown>) = FunctionAddress[operator++] :
# 1127| r1127_39(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1127_38, this:r1127_37
# 1127| mu1127_40(unknown) = ^CallSideEffect : ~m?
# 1127| v1127_41(void) = ^IndirectReadSideEffect[-1] : &:r1127_37, ~m?
# 1127| mu1127_42(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1127_37
# 1127| r1127_43(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1127_39
# 1127| v1127_34(void) = NoOp :
# 1127| r1127_35(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 1127| r1127_36(glval<unknown>) = FunctionAddress[operator++] :
# 1127| r1127_37(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1127_36, this:r1127_35
# 1127| v1127_38(void) = ^IndirectReadSideEffect[-1] : &:r1127_35, ~m?
# 1127| mu1127_39(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1127_35
# 1127| r1127_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1127_37
#-----| Goto (back edge) -> Block 1
# 1133| Block 5
@@ -7297,34 +7294,31 @@ ir.cpp:
# 1133| mu1133_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_20
#-----| r0_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_20, ~m?
# 1133| r1133_26(bool) = Call[operator!=] : func:r1133_20, this:r0_19, 0:r0_25
# 1133| mu1133_27(unknown) = ^CallSideEffect : ~m?
#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m?
# 1133| v1133_28(void) = ConditionalBranch : r1133_26
# 1133| v1133_27(void) = ConditionalBranch : r1133_26
#-----| False -> Block 10
#-----| True -> Block 8
# 1133| Block 7
# 1133| r1133_29(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 1133| r1133_30(glval<unknown>) = FunctionAddress[operator++] :
# 1133| r1133_31(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1133_30, this:r1133_29
# 1133| mu1133_32(unknown) = ^CallSideEffect : ~m?
# 1133| v1133_33(void) = ^IndirectReadSideEffect[-1] : &:r1133_29, ~m?
# 1133| mu1133_34(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1133_29
# 1133| r1133_35(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1133_31
# 1133| r1133_28(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 1133| r1133_29(glval<unknown>) = FunctionAddress[operator++] :
# 1133| r1133_30(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1133_29, this:r1133_28
# 1133| v1133_31(void) = ^IndirectReadSideEffect[-1] : &:r1133_28, ~m?
# 1133| mu1133_32(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1133_28
# 1133| r1133_33(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1133_30
#-----| Goto (back edge) -> Block 6
# 1133| Block 8
# 1133| r1133_36(glval<int &>) = VariableAddress[e] :
# 1133| r1133_37(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_37
# 1133| r1133_38(glval<unknown>) = FunctionAddress[operator*] :
# 1133| r1133_39(int &) = Call[operator*] : func:r1133_38, this:r0_27
# 1133| mu1133_40(unknown) = ^CallSideEffect : ~m?
# 1133| r1133_34(glval<int &>) = VariableAddress[e] :
# 1133| r1133_35(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_35
# 1133| r1133_36(glval<unknown>) = FunctionAddress[operator*] :
# 1133| r1133_37(int &) = Call[operator*] : func:r1133_36, this:r0_27
#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m?
# 1133| r1133_41(glval<int>) = CopyValue : r1133_39
# 1133| r1133_42(glval<int>) = Convert : r1133_41
# 1133| r1133_43(int &) = CopyValue : r1133_42
# 1133| mu1133_44(int &) = Store[e] : &:r1133_36, r1133_43
# 1133| r1133_38(glval<int>) = CopyValue : r1133_37
# 1133| r1133_39(glval<int>) = Convert : r1133_38
# 1133| r1133_40(int &) = CopyValue : r1133_39
# 1133| mu1133_41(int &) = Store[e] : &:r1133_34, r1133_40
# 1134| r1134_1(glval<int &>) = VariableAddress[e] :
# 1134| r1134_2(int &) = Load[e] : &:r1134_1, ~m?
# 1134| r1134_3(int) = Load[?] : &:r1134_2, ~m?
@@ -13011,22 +13005,20 @@ ir.cpp:
# 2215| mu2215_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8
#-----| r0_13(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_8, ~m?
# 2215| r2215_41(bool) = Call[operator!=] : func:r2215_35, this:r0_7, 0:r0_13
# 2215| mu2215_42(unknown) = ^CallSideEffect : ~m?
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m?
# 2215| v2215_43(void) = ConditionalBranch : r2215_41
# 2215| v2215_42(void) = ConditionalBranch : r2215_41
#-----| False -> Block 14
#-----| True -> Block 12
# 2215| Block 12
# 2215| r2215_44(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2215| r2215_45(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_45
# 2215| r2215_46(glval<unknown>) = FunctionAddress[operator*] :
# 2215| r2215_47(ClassWithDestructor &) = Call[operator*] : func:r2215_46, this:r0_15
# 2215| mu2215_48(unknown) = ^CallSideEffect : ~m?
# 2215| r2215_43(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2215| r2215_44(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_44
# 2215| r2215_45(glval<unknown>) = FunctionAddress[operator*] :
# 2215| r2215_46(ClassWithDestructor &) = Call[operator*] : func:r2215_45, this:r0_15
#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m?
# 2215| r2215_49(ClassWithDestructor) = Load[?] : &:r2215_47, ~m?
# 2215| mu2215_50(ClassWithDestructor) = Store[y] : &:r2215_44, r2215_49
# 2215| r2215_47(ClassWithDestructor) = Load[?] : &:r2215_46, ~m?
# 2215| mu2215_48(ClassWithDestructor) = Store[y] : &:r2215_43, r2215_47
# 2216| r2216_1(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2216| r2216_2(glval<unknown>) = FunctionAddress[set_x] :
# 2216| r2216_3(char) = Constant[97] :
@@ -13034,28 +13026,27 @@ ir.cpp:
# 2216| mu2216_5(unknown) = ^CallSideEffect : ~m?
# 2216| v2216_6(void) = ^IndirectReadSideEffect[-1] : &:r2216_1, ~m?
# 2216| mu2216_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1
# 2215| r2215_51(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2215| r2215_52(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2215| v2215_53(void) = Call[~ClassWithDestructor] : func:r2215_52, this:r2215_51
# 2215| mu2215_54(unknown) = ^CallSideEffect : ~m?
# 2215| v2215_55(void) = ^IndirectReadSideEffect[-1] : &:r2215_51, ~m?
# 2215| mu2215_56(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_51
# 2215| r2215_57(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2215| r2215_58(glval<unknown>) = FunctionAddress[operator++] :
# 2215| r2215_59(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_58, this:r2215_57
# 2215| mu2215_60(unknown) = ^CallSideEffect : ~m?
# 2215| v2215_61(void) = ^IndirectReadSideEffect[-1] : &:r2215_57, ~m?
# 2215| mu2215_62(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_57
# 2215| r2215_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_59
# 2215| r2215_49(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2215| r2215_50(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2215| v2215_51(void) = Call[~ClassWithDestructor] : func:r2215_50, this:r2215_49
# 2215| mu2215_52(unknown) = ^CallSideEffect : ~m?
# 2215| v2215_53(void) = ^IndirectReadSideEffect[-1] : &:r2215_49, ~m?
# 2215| mu2215_54(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_49
# 2215| r2215_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2215| r2215_56(glval<unknown>) = FunctionAddress[operator++] :
# 2215| r2215_57(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_56, this:r2215_55
# 2215| v2215_58(void) = ^IndirectReadSideEffect[-1] : &:r2215_55, ~m?
# 2215| mu2215_59(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_55
# 2215| r2215_60(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_57
#-----| Goto (back edge) -> Block 11
# 2215| Block 13
# 2215| r2215_64(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
# 2215| r2215_65(glval<unknown>) = FunctionAddress[~vector] :
# 2215| v2215_66(void) = Call[~vector] : func:r2215_65, this:r2215_64
# 2215| mu2215_67(unknown) = ^CallSideEffect : ~m?
# 2215| v2215_68(void) = ^IndirectReadSideEffect[-1] : &:r2215_64, ~m?
# 2215| mu2215_69(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_64
# 2215| r2215_61(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
# 2215| r2215_62(glval<unknown>) = FunctionAddress[~vector] :
# 2215| v2215_63(void) = Call[~vector] : func:r2215_62, this:r2215_61
# 2215| mu2215_64(unknown) = ^CallSideEffect : ~m?
# 2215| v2215_65(void) = ^IndirectReadSideEffect[-1] : &:r2215_61, ~m?
# 2215| mu2215_66(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_61
#-----| Goto -> Block 14
# 2218| Block 14
@@ -13116,22 +13107,20 @@ ir.cpp:
# 2218| mu2218_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24
#-----| r0_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_24, ~m?
# 2218| r2218_41(bool) = Call[operator!=] : func:r2218_35, this:r0_23, 0:r0_29
# 2218| mu2218_42(unknown) = ^CallSideEffect : ~m?
#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, ~m?
# 2218| v2218_43(void) = ConditionalBranch : r2218_41
# 2218| v2218_42(void) = ConditionalBranch : r2218_41
#-----| False -> Block 20
#-----| True -> Block 16
# 2218| Block 16
# 2218| r2218_44(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_45(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_45
# 2218| r2218_46(glval<unknown>) = FunctionAddress[operator*] :
# 2218| r2218_47(ClassWithDestructor &) = Call[operator*] : func:r2218_46, this:r0_31
# 2218| mu2218_48(unknown) = ^CallSideEffect : ~m?
# 2218| r2218_43(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_44(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_44
# 2218| r2218_45(glval<unknown>) = FunctionAddress[operator*] :
# 2218| r2218_46(ClassWithDestructor &) = Call[operator*] : func:r2218_45, this:r0_31
#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m?
# 2218| r2218_49(ClassWithDestructor) = Load[?] : &:r2218_47, ~m?
# 2218| mu2218_50(ClassWithDestructor) = Store[y] : &:r2218_44, r2218_49
# 2218| r2218_47(ClassWithDestructor) = Load[?] : &:r2218_46, ~m?
# 2218| mu2218_48(ClassWithDestructor) = Store[y] : &:r2218_43, r2218_47
# 2219| r2219_1(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2219| r2219_2(glval<unknown>) = FunctionAddress[set_x] :
# 2219| r2219_3(char) = Constant[97] :
@@ -13154,18 +13143,18 @@ ir.cpp:
# 2221| Block 17
# 2221| v2221_1(void) = NoOp :
# 2218| r2218_51(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_52(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2218| v2218_53(void) = Call[~ClassWithDestructor] : func:r2218_52, this:r2218_51
# 2218| mu2218_54(unknown) = ^CallSideEffect : ~m?
# 2218| v2218_55(void) = ^IndirectReadSideEffect[-1] : &:r2218_51, ~m?
# 2218| mu2218_56(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_51
# 2218| r2218_57(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
# 2218| r2218_58(glval<unknown>) = FunctionAddress[~vector] :
# 2218| v2218_59(void) = Call[~vector] : func:r2218_58, this:r2218_57
# 2218| mu2218_60(unknown) = ^CallSideEffect : ~m?
# 2218| v2218_61(void) = ^IndirectReadSideEffect[-1] : &:r2218_57, ~m?
# 2218| mu2218_62(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_57
# 2218| r2218_49(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_50(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2218| v2218_51(void) = Call[~ClassWithDestructor] : func:r2218_50, this:r2218_49
# 2218| mu2218_52(unknown) = ^CallSideEffect : ~m?
# 2218| v2218_53(void) = ^IndirectReadSideEffect[-1] : &:r2218_49, ~m?
# 2218| mu2218_54(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_49
# 2218| r2218_55(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
# 2218| r2218_56(glval<unknown>) = FunctionAddress[~vector] :
# 2218| v2218_57(void) = Call[~vector] : func:r2218_56, this:r2218_55
# 2218| mu2218_58(unknown) = ^CallSideEffect : ~m?
# 2218| v2218_59(void) = ^IndirectReadSideEffect[-1] : &:r2218_55, ~m?
# 2218| mu2218_60(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_55
# 2233| r2233_1(glval<ClassWithDestructor>) = VariableAddress[x] :
# 2233| r2233_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2233| v2233_3(void) = Call[~ClassWithDestructor] : func:r2233_2, this:r2233_1
@@ -13175,28 +13164,27 @@ ir.cpp:
#-----| Goto -> Block 1
# 2218| Block 18
# 2218| r2218_63(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_64(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2218| v2218_65(void) = Call[~ClassWithDestructor] : func:r2218_64, this:r2218_63
# 2218| mu2218_66(unknown) = ^CallSideEffect : ~m?
# 2218| v2218_67(void) = ^IndirectReadSideEffect[-1] : &:r2218_63, ~m?
# 2218| mu2218_68(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_63
# 2218| r2218_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2218| r2218_70(glval<unknown>) = FunctionAddress[operator++] :
# 2218| r2218_71(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2218_70, this:r2218_69
# 2218| mu2218_72(unknown) = ^CallSideEffect : ~m?
# 2218| v2218_73(void) = ^IndirectReadSideEffect[-1] : &:r2218_69, ~m?
# 2218| mu2218_74(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_69
# 2218| r2218_75(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2218_71
# 2218| r2218_61(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2218| r2218_62(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2218| v2218_63(void) = Call[~ClassWithDestructor] : func:r2218_62, this:r2218_61
# 2218| mu2218_64(unknown) = ^CallSideEffect : ~m?
# 2218| v2218_65(void) = ^IndirectReadSideEffect[-1] : &:r2218_61, ~m?
# 2218| mu2218_66(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_61
# 2218| r2218_67(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2218| r2218_68(glval<unknown>) = FunctionAddress[operator++] :
# 2218| r2218_69(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2218_68, this:r2218_67
# 2218| v2218_70(void) = ^IndirectReadSideEffect[-1] : &:r2218_67, ~m?
# 2218| mu2218_71(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_67
# 2218| r2218_72(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2218_69
#-----| Goto (back edge) -> Block 15
# 2218| Block 19
# 2218| r2218_76(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
# 2218| r2218_77(glval<unknown>) = FunctionAddress[~vector] :
# 2218| v2218_78(void) = Call[~vector] : func:r2218_77, this:r2218_76
# 2218| mu2218_79(unknown) = ^CallSideEffect : ~m?
# 2218| v2218_80(void) = ^IndirectReadSideEffect[-1] : &:r2218_76, ~m?
# 2218| mu2218_81(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_76
# 2218| r2218_73(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
# 2218| r2218_74(glval<unknown>) = FunctionAddress[~vector] :
# 2218| v2218_75(void) = Call[~vector] : func:r2218_74, this:r2218_73
# 2218| mu2218_76(unknown) = ^CallSideEffect : ~m?
# 2218| v2218_77(void) = ^IndirectReadSideEffect[-1] : &:r2218_73, ~m?
# 2218| mu2218_78(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_73
#-----| Goto -> Block 20
# 2224| Block 20
@@ -13247,32 +13235,29 @@ ir.cpp:
# 2224| mu2224_30(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40
#-----| r0_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_40, ~m?
# 2224| r2224_31(bool) = Call[operator!=] : func:r2224_25, this:r0_39, 0:r0_45
# 2224| mu2224_32(unknown) = ^CallSideEffect : ~m?
#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, ~m?
# 2224| v2224_33(void) = ConditionalBranch : r2224_31
# 2224| v2224_32(void) = ConditionalBranch : r2224_31
#-----| False -> Block 26
#-----| True -> Block 23
# 2224| Block 22
# 2224| r2224_34(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 2224| r2224_35(glval<unknown>) = FunctionAddress[operator++] :
# 2224| r2224_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2224_35, this:r2224_34
# 2224| mu2224_37(unknown) = ^CallSideEffect : ~m?
# 2224| v2224_38(void) = ^IndirectReadSideEffect[-1] : &:r2224_34, ~m?
# 2224| mu2224_39(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_34
# 2224| r2224_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2224_36
# 2224| r2224_33(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
# 2224| r2224_34(glval<unknown>) = FunctionAddress[operator++] :
# 2224| r2224_35(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2224_34, this:r2224_33
# 2224| v2224_36(void) = ^IndirectReadSideEffect[-1] : &:r2224_33, ~m?
# 2224| mu2224_37(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_33
# 2224| r2224_38(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2224_35
#-----| Goto (back edge) -> Block 21
# 2224| Block 23
# 2224| r2224_41(glval<int>) = VariableAddress[y] :
# 2224| r2224_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_42
# 2224| r2224_43(glval<unknown>) = FunctionAddress[operator*] :
# 2224| r2224_44(int &) = Call[operator*] : func:r2224_43, this:r0_47
# 2224| mu2224_45(unknown) = ^CallSideEffect : ~m?
# 2224| r2224_39(glval<int>) = VariableAddress[y] :
# 2224| r2224_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] :
#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_40
# 2224| r2224_41(glval<unknown>) = FunctionAddress[operator*] :
# 2224| r2224_42(int &) = Call[operator*] : func:r2224_41, this:r0_47
#-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, ~m?
# 2224| r2224_46(int) = Load[?] : &:r2224_44, ~m?
# 2224| mu2224_47(int) = Store[y] : &:r2224_41, r2224_46
# 2224| r2224_43(int) = Load[?] : &:r2224_42, ~m?
# 2224| mu2224_44(int) = Store[y] : &:r2224_39, r2224_43
# 2225| r2225_1(glval<int>) = VariableAddress[y] :
# 2225| r2225_2(int) = Load[y] : &:r2225_1, ~m?
# 2225| r2225_3(int) = Constant[1] :
@@ -13283,12 +13268,12 @@ ir.cpp:
# 2226| Block 24
# 2226| v2226_1(void) = NoOp :
# 2224| r2224_48(glval<vector<int>>) = VariableAddress[ys] :
# 2224| r2224_49(glval<unknown>) = FunctionAddress[~vector] :
# 2224| v2224_50(void) = Call[~vector] : func:r2224_49, this:r2224_48
# 2224| mu2224_51(unknown) = ^CallSideEffect : ~m?
# 2224| v2224_52(void) = ^IndirectReadSideEffect[-1] : &:r2224_48, ~m?
# 2224| mu2224_53(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_48
# 2224| r2224_45(glval<vector<int>>) = VariableAddress[ys] :
# 2224| r2224_46(glval<unknown>) = FunctionAddress[~vector] :
# 2224| v2224_47(void) = Call[~vector] : func:r2224_46, this:r2224_45
# 2224| mu2224_48(unknown) = ^CallSideEffect : ~m?
# 2224| v2224_49(void) = ^IndirectReadSideEffect[-1] : &:r2224_45, ~m?
# 2224| mu2224_50(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_45
# 2233| r2233_7(glval<ClassWithDestructor>) = VariableAddress[x] :
# 2233| r2233_8(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2233| v2233_9(void) = Call[~ClassWithDestructor] : func:r2233_8, this:r2233_7
@@ -13298,12 +13283,12 @@ ir.cpp:
#-----| Goto -> Block 1
# 2224| Block 25
# 2224| r2224_54(glval<vector<int>>) = VariableAddress[ys] :
# 2224| r2224_55(glval<unknown>) = FunctionAddress[~vector] :
# 2224| v2224_56(void) = Call[~vector] : func:r2224_55, this:r2224_54
# 2224| mu2224_57(unknown) = ^CallSideEffect : ~m?
# 2224| v2224_58(void) = ^IndirectReadSideEffect[-1] : &:r2224_54, ~m?
# 2224| mu2224_59(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_54
# 2224| r2224_51(glval<vector<int>>) = VariableAddress[ys] :
# 2224| r2224_52(glval<unknown>) = FunctionAddress[~vector] :
# 2224| v2224_53(void) = Call[~vector] : func:r2224_52, this:r2224_51
# 2224| mu2224_54(unknown) = ^CallSideEffect : ~m?
# 2224| v2224_55(void) = ^IndirectReadSideEffect[-1] : &:r2224_51, ~m?
# 2224| mu2224_56(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_51
#-----| Goto -> Block 26
# 2229| Block 26
@@ -13364,22 +13349,20 @@ ir.cpp:
# 2229| mu2229_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56
#-----| r0_61(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_56, ~m?
# 2229| r2229_41(bool) = Call[operator!=] : func:r2229_35, this:r0_55, 0:r0_61
# 2229| mu2229_42(unknown) = ^CallSideEffect : ~m?
#-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, ~m?
# 2229| v2229_43(void) = ConditionalBranch : r2229_41
# 2229| v2229_42(void) = ConditionalBranch : r2229_41
#-----| False -> Block 30
#-----| True -> Block 28
# 2229| Block 28
# 2229| r2229_44(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2229| r2229_45(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_45
# 2229| r2229_46(glval<unknown>) = FunctionAddress[operator*] :
# 2229| r2229_47(ClassWithDestructor &) = Call[operator*] : func:r2229_46, this:r0_63
# 2229| mu2229_48(unknown) = ^CallSideEffect : ~m?
# 2229| r2229_43(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2229| r2229_44(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_44
# 2229| r2229_45(glval<unknown>) = FunctionAddress[operator*] :
# 2229| r2229_46(ClassWithDestructor &) = Call[operator*] : func:r2229_45, this:r0_63
#-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, ~m?
# 2229| r2229_49(ClassWithDestructor) = Load[?] : &:r2229_47, ~m?
# 2229| mu2229_50(ClassWithDestructor) = Store[y] : &:r2229_44, r2229_49
# 2229| r2229_47(ClassWithDestructor) = Load[?] : &:r2229_46, ~m?
# 2229| mu2229_48(ClassWithDestructor) = Store[y] : &:r2229_43, r2229_47
# 2230| r2230_1(glval<ClassWithDestructor>) = VariableAddress[z1] :
# 2230| mu2230_2(ClassWithDestructor) = Uninitialized[z1] : &:r2230_1
# 2230| r2230_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
@@ -13404,28 +13387,27 @@ ir.cpp:
# 2232| mu2232_10(unknown) = ^CallSideEffect : ~m?
# 2232| v2232_11(void) = ^IndirectReadSideEffect[-1] : &:r2232_7, ~m?
# 2232| mu2232_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_7
# 2229| r2229_51(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2229| r2229_52(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2229| v2229_53(void) = Call[~ClassWithDestructor] : func:r2229_52, this:r2229_51
# 2229| mu2229_54(unknown) = ^CallSideEffect : ~m?
# 2229| v2229_55(void) = ^IndirectReadSideEffect[-1] : &:r2229_51, ~m?
# 2229| mu2229_56(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2229_51
# 2229| r2229_57(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2229| r2229_58(glval<unknown>) = FunctionAddress[operator++] :
# 2229| r2229_59(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2229_58, this:r2229_57
# 2229| mu2229_60(unknown) = ^CallSideEffect : ~m?
# 2229| v2229_61(void) = ^IndirectReadSideEffect[-1] : &:r2229_57, ~m?
# 2229| mu2229_62(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_57
# 2229| r2229_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2229_59
# 2229| r2229_49(glval<ClassWithDestructor>) = VariableAddress[y] :
# 2229| r2229_50(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
# 2229| v2229_51(void) = Call[~ClassWithDestructor] : func:r2229_50, this:r2229_49
# 2229| mu2229_52(unknown) = ^CallSideEffect : ~m?
# 2229| v2229_53(void) = ^IndirectReadSideEffect[-1] : &:r2229_49, ~m?
# 2229| mu2229_54(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2229_49
# 2229| r2229_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] :
# 2229| r2229_56(glval<unknown>) = FunctionAddress[operator++] :
# 2229| r2229_57(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2229_56, this:r2229_55
# 2229| v2229_58(void) = ^IndirectReadSideEffect[-1] : &:r2229_55, ~m?
# 2229| mu2229_59(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_55
# 2229| r2229_60(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2229_57
#-----| Goto (back edge) -> Block 27
# 2229| Block 29
# 2229| r2229_64(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
# 2229| r2229_65(glval<unknown>) = FunctionAddress[~vector] :
# 2229| v2229_66(void) = Call[~vector] : func:r2229_65, this:r2229_64
# 2229| mu2229_67(unknown) = ^CallSideEffect : ~m?
# 2229| v2229_68(void) = ^IndirectReadSideEffect[-1] : &:r2229_64, ~m?
# 2229| mu2229_69(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_64
# 2229| r2229_61(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
# 2229| r2229_62(glval<unknown>) = FunctionAddress[~vector] :
# 2229| v2229_63(void) = Call[~vector] : func:r2229_62, this:r2229_61
# 2229| mu2229_64(unknown) = ^CallSideEffect : ~m?
# 2229| v2229_65(void) = ^IndirectReadSideEffect[-1] : &:r2229_61, ~m?
# 2229| mu2229_66(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_61
#-----| Goto -> Block 30
# 2233| Block 30
@@ -14025,29 +14007,27 @@ ir.cpp:
# 2307| mu2307_44(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8
#-----| r0_13(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Load[#temp0:0] : &:r0_8, ~m?
# 2307| r2307_45(bool) = Call[operator!=] : func:r2307_39, this:r0_7, 0:r0_13
# 2307| mu2307_46(unknown) = ^CallSideEffect : ~m?
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m?
# 2307| v2307_47(void) = ConditionalBranch : r2307_45
# 2307| v2307_46(void) = ConditionalBranch : r2307_45
#-----| False -> Block 6
#-----| True -> Block 5
# 2307| Block 5
# 2307| r2307_48(glval<String>) = VariableAddress[s] :
# 2307| mu2307_49(String) = Uninitialized[s] : &:r2307_48
# 2307| r2307_50(glval<unknown>) = FunctionAddress[String] :
# 2307| r2307_51(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_51
# 2307| r2307_52(glval<unknown>) = FunctionAddress[operator*] :
# 2307| r2307_53(String &) = Call[operator*] : func:r2307_52, this:r0_15
# 2307| mu2307_54(unknown) = ^CallSideEffect : ~m?
# 2307| r2307_47(glval<String>) = VariableAddress[s] :
# 2307| mu2307_48(String) = Uninitialized[s] : &:r2307_47
# 2307| r2307_49(glval<unknown>) = FunctionAddress[String] :
# 2307| r2307_50(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_50
# 2307| r2307_51(glval<unknown>) = FunctionAddress[operator*] :
# 2307| r2307_52(String &) = Call[operator*] : func:r2307_51, this:r0_15
#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m?
# 2307| r2307_55(glval<String>) = CopyValue : r2307_53
# 2307| r2307_56(glval<String>) = Convert : r2307_55
# 2307| r2307_57(String &) = CopyValue : r2307_56
# 2307| v2307_58(void) = Call[String] : func:r2307_50, this:r2307_48, 0:r2307_57
# 2307| mu2307_59(unknown) = ^CallSideEffect : ~m?
# 2307| v2307_60(void) = ^BufferReadSideEffect[0] : &:r2307_57, ~m?
# 2307| mu2307_61(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_48
# 2307| r2307_53(glval<String>) = CopyValue : r2307_52
# 2307| r2307_54(glval<String>) = Convert : r2307_53
# 2307| r2307_55(String &) = CopyValue : r2307_54
# 2307| v2307_56(void) = Call[String] : func:r2307_49, this:r2307_47, 0:r2307_55
# 2307| mu2307_57(unknown) = ^CallSideEffect : ~m?
# 2307| v2307_58(void) = ^BufferReadSideEffect[0] : &:r2307_55, ~m?
# 2307| mu2307_59(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_47
# 2308| r2308_1(glval<String>) = VariableAddress[s2] :
# 2308| mu2308_2(String) = Uninitialized[s2] : &:r2308_1
# 2308| r2308_3(glval<unknown>) = FunctionAddress[String] :
@@ -14060,19 +14040,18 @@ ir.cpp:
# 2309| mu2309_4(unknown) = ^CallSideEffect : ~m?
# 2309| v2309_5(void) = ^IndirectReadSideEffect[-1] : &:r2309_1, ~m?
# 2309| mu2309_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2309_1
# 2307| r2307_62(glval<String>) = VariableAddress[s] :
# 2307| r2307_63(glval<unknown>) = FunctionAddress[~String] :
# 2307| v2307_64(void) = Call[~String] : func:r2307_63, this:r2307_62
# 2307| mu2307_65(unknown) = ^CallSideEffect : ~m?
# 2307| v2307_66(void) = ^IndirectReadSideEffect[-1] : &:r2307_62, ~m?
# 2307| mu2307_67(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_62
# 2307| r2307_68(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] :
# 2307| r2307_69(glval<unknown>) = FunctionAddress[operator++] :
# 2307| r2307_70(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2307_69, this:r2307_68
# 2307| mu2307_71(unknown) = ^CallSideEffect : ~m?
# 2307| v2307_72(void) = ^IndirectReadSideEffect[-1] : &:r2307_68, ~m?
# 2307| mu2307_73(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2307_68
# 2307| r2307_74(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2307_70
# 2307| r2307_60(glval<String>) = VariableAddress[s] :
# 2307| r2307_61(glval<unknown>) = FunctionAddress[~String] :
# 2307| v2307_62(void) = Call[~String] : func:r2307_61, this:r2307_60
# 2307| mu2307_63(unknown) = ^CallSideEffect : ~m?
# 2307| v2307_64(void) = ^IndirectReadSideEffect[-1] : &:r2307_60, ~m?
# 2307| mu2307_65(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_60
# 2307| r2307_66(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] :
# 2307| r2307_67(glval<unknown>) = FunctionAddress[operator++] :
# 2307| r2307_68(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2307_67, this:r2307_66
# 2307| v2307_69(void) = ^IndirectReadSideEffect[-1] : &:r2307_66, ~m?
# 2307| mu2307_70(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2307_66
# 2307| r2307_71(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2307_68
#-----| Goto (back edge) -> Block 4
# 2311| Block 6
@@ -14773,22 +14752,20 @@ ir.cpp:
# 2430| mu2430_49(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8
#-----| r0_13(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Load[#temp0:0] : &:r0_8, ~m?
# 2430| r2430_50(bool) = Call[operator!=] : func:r2430_44, this:r0_7, 0:r0_13
# 2430| mu2430_51(unknown) = ^CallSideEffect : ~m?
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m?
# 2430| v2430_52(void) = ConditionalBranch : r2430_50
# 2430| v2430_51(void) = ConditionalBranch : r2430_50
#-----| False -> Block 13
#-----| True -> Block 12
# 2430| Block 12
# 2430| r2430_53(glval<char>) = VariableAddress[y] :
# 2430| r2430_54(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_54
# 2430| r2430_55(glval<unknown>) = FunctionAddress[operator*] :
# 2430| r2430_56(char &) = Call[operator*] : func:r2430_55, this:r0_15
# 2430| mu2430_57(unknown) = ^CallSideEffect : ~m?
# 2430| r2430_52(glval<char>) = VariableAddress[y] :
# 2430| r2430_53(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] :
#-----| r0_15(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_53
# 2430| r2430_54(glval<unknown>) = FunctionAddress[operator*] :
# 2430| r2430_55(char &) = Call[operator*] : func:r2430_54, this:r0_15
#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m?
# 2430| r2430_58(char) = Load[?] : &:r2430_56, ~m?
# 2430| mu2430_59(char) = Store[y] : &:r2430_53, r2430_58
# 2430| r2430_56(char) = Load[?] : &:r2430_55, ~m?
# 2430| mu2430_57(char) = Store[y] : &:r2430_52, r2430_56
# 2431| r2431_1(glval<char>) = VariableAddress[x] :
# 2431| r2431_2(char) = Load[x] : &:r2431_1, ~m?
# 2431| r2431_3(int) = Convert : r2431_2
@@ -14798,13 +14775,12 @@ ir.cpp:
# 2431| r2431_7(int) = Add : r2431_6, r2431_3
# 2431| r2431_8(char) = Convert : r2431_7
# 2431| mu2431_9(char) = Store[y] : &:r2431_4, r2431_8
# 2430| r2430_60(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] :
# 2430| r2430_61(glval<unknown>) = FunctionAddress[operator++] :
# 2430| r2430_62(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = Call[operator++] : func:r2430_61, this:r2430_60
# 2430| mu2430_63(unknown) = ^CallSideEffect : ~m?
# 2430| v2430_64(void) = ^IndirectReadSideEffect[-1] : &:r2430_60, ~m?
# 2430| mu2430_65(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r2430_60
# 2430| r2430_66(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = CopyValue : r2430_62
# 2430| r2430_58(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] :
# 2430| r2430_59(glval<unknown>) = FunctionAddress[operator++] :
# 2430| r2430_60(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = Call[operator++] : func:r2430_59, this:r2430_58
# 2430| v2430_61(void) = ^IndirectReadSideEffect[-1] : &:r2430_58, ~m?
# 2430| mu2430_62(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r2430_58
# 2430| r2430_63(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = CopyValue : r2430_60
#-----| Goto (back edge) -> Block 11
# 2432| Block 13