Merge pull request #2150 from rdmarsh2/rdmarsh/cpp/ir-buffer-read-call-se

C++: buffer read side effects on unmodeled funcs
This commit is contained in:
Dave Bartolomeo
2019-10-31 16:59:51 -07:00
committed by GitHub
6 changed files with 106 additions and 104 deletions

View File

@@ -447,20 +447,26 @@ class TranslatedSideEffect extends TranslatedElement, TTranslatedArgumentSideEff
}
override CppType getInstructionOperandType(InstructionTag tag, TypedOperandTag operandTag) {
exists(Type operandType |
if hasSpecificReadSideEffect(any(Opcode::BufferReadSideEffect op))
then
result = getUnknownType() and
tag instanceof OnlyInstructionTag and
operandType = arg.getType().getUnspecifiedType().(DerivedType).getBaseType() and
operandTag instanceof SideEffectOperandTag
or
tag instanceof OnlyInstructionTag and
operandType = arg.getType().getUnspecifiedType() and
not operandType instanceof DerivedType and
operandTag instanceof SideEffectOperandTag
|
// If the type we select is an incomplete type (e.g. a forward-declared `struct`), there will
// not be a `CppType` that represents that type. In that case, fall back to `UnknownCppType`.
result = getTypeForPRValueOrUnknown(operandType)
)
else
exists(Type operandType |
tag instanceof OnlyInstructionTag and
operandType = arg.getType().getUnspecifiedType().(DerivedType).getBaseType() and
operandTag instanceof SideEffectOperandTag
or
tag instanceof OnlyInstructionTag and
operandType = arg.getType().getUnspecifiedType() and
not operandType instanceof DerivedType and
operandTag instanceof SideEffectOperandTag
|
// If the type we select is an incomplete type (e.g. a forward-declared `struct`), there will
// not be a `CppType` that represents that type. In that case, fall back to `UnknownCppType`.
result = getTypeForPRValueOrUnknown(operandType)
)
}
predicate hasSpecificWriteSideEffect(Opcode op) {
@@ -510,7 +516,7 @@ class TranslatedSideEffect extends TranslatedElement, TTranslatedArgumentSideEff
)
or
not call.getTarget() instanceof SideEffectFunction and
op instanceof Opcode::IndirectReadSideEffect
op instanceof Opcode::BufferReadSideEffect
}
override Instruction getPrimaryInstructionForSideEffect(InstructionTag tag) {

View File

@@ -14,7 +14,7 @@ bad_asts.cpp:
# 16| r0_10(int) = Constant[1] :
# 16| r0_11(int) = Call : func:r0_9, this:r0_8, 0:r0_10
# 16| mu0_12(unknown) = ^CallSideEffect : ~mu0_2
# 16| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_8, ~mu0_2
# 16| v0_13(void) = ^BufferReadSideEffect[-1] : &:r0_8, ~mu0_2
# 16| mu0_14(S) = ^IndirectMayWriteSideEffect[-1] : &:r0_8
# 17| v0_15(void) = NoOp :
# 14| v0_16(void) = ReturnVoid :
@@ -2738,8 +2738,8 @@ ir.cpp:
# 585| r0_8(char *) = Convert : r0_7
# 585| v0_9(void) = Call : func:r0_3, 0:r0_5, 1:r0_6, 2:r0_8
# 585| mu0_10(unknown) = ^CallSideEffect : ~mu0_2
# 585| v0_11(void) = ^IndirectReadSideEffect[0] : &:r0_5, ~mu0_2
# 585| v0_12(void) = ^IndirectReadSideEffect[2] : &:r0_8, ~mu0_2
# 585| v0_11(void) = ^BufferReadSideEffect[0] : &:r0_5, ~mu0_2
# 585| v0_12(void) = ^BufferReadSideEffect[2] : &:r0_8, ~mu0_2
# 585| mu0_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_5
# 585| mu0_14(unknown) = ^BufferMayWriteSideEffect[2] : &:r0_8
# 586| v0_15(void) = NoOp :
@@ -2786,7 +2786,7 @@ ir.cpp:
# 617| r0_10(char *) = Convert : r0_9
# 617| v0_11(void) = Call : func:r0_8, this:r0_7, 0:r0_10
# 617| mu0_12(unknown) = ^CallSideEffect : ~mu0_2
# 617| v0_13(void) = ^IndirectReadSideEffect[0] : &:r0_10, ~mu0_2
# 617| v0_13(void) = ^BufferReadSideEffect[0] : &:r0_10, ~mu0_2
# 617| mu0_14(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_10
# 618| r0_15(glval<String>) = VariableAddress[s3] :
# 618| r0_16(glval<unknown>) = FunctionAddress[ReturnObject] :
@@ -2799,7 +2799,7 @@ ir.cpp:
# 619| r0_23(char *) = Convert : r0_22
# 619| v0_24(void) = Call : func:r0_21, this:r0_20, 0:r0_23
# 619| mu0_25(unknown) = ^CallSideEffect : ~mu0_2
# 619| v0_26(void) = ^IndirectReadSideEffect[0] : &:r0_23, ~mu0_2
# 619| v0_26(void) = ^BufferReadSideEffect[0] : &:r0_23, ~mu0_2
# 619| mu0_27(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_23
# 620| v0_28(void) = NoOp :
# 615| v0_29(void) = ReturnVoid :
@@ -2824,7 +2824,7 @@ ir.cpp:
# 623| r0_12(glval<unknown>) = FunctionAddress[c_str] :
# 623| r0_13(char *) = Call : func:r0_12, this:r0_11
# 623| mu0_14(unknown) = ^CallSideEffect : ~mu0_2
# 623| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~mu0_2
# 623| v0_15(void) = ^BufferReadSideEffect[-1] : &:r0_11, ~mu0_2
# 623| mu0_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_11
# 624| r0_17(glval<String *>) = VariableAddress[p] :
# 624| r0_18(String *) = Load : &:r0_17, ~mu0_2
@@ -2832,14 +2832,14 @@ ir.cpp:
# 624| r0_20(glval<unknown>) = FunctionAddress[c_str] :
# 624| r0_21(char *) = Call : func:r0_20, this:r0_19
# 624| mu0_22(unknown) = ^CallSideEffect : ~mu0_2
# 624| v0_23(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~mu0_2
# 624| v0_23(void) = ^BufferReadSideEffect[-1] : &:r0_19, ~mu0_2
# 624| mu0_24(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_19
# 625| r0_25(glval<String>) = VariableAddress[s] :
# 625| r0_26(glval<String>) = Convert : r0_25
# 625| r0_27(glval<unknown>) = FunctionAddress[c_str] :
# 625| r0_28(char *) = Call : func:r0_27, this:r0_26
# 625| mu0_29(unknown) = ^CallSideEffect : ~mu0_2
# 625| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~mu0_2
# 625| v0_30(void) = ^BufferReadSideEffect[-1] : &:r0_26, ~mu0_2
# 625| mu0_31(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_26
# 626| v0_32(void) = NoOp :
# 622| v0_33(void) = ReturnVoid :
@@ -2952,21 +2952,21 @@ ir.cpp:
# 653| r0_6(int) = Constant[0] :
# 653| r0_7(int) = Call : func:r0_5, this:r0_4, 0:r0_6
# 653| mu0_8(unknown) = ^CallSideEffect : ~mu0_2
# 653| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_4, ~mu0_2
# 653| v0_9(void) = ^BufferReadSideEffect[-1] : &:r0_4, ~mu0_2
# 653| mu0_10(C) = ^IndirectMayWriteSideEffect[-1] : &:r0_4
# 654| r0_11(C *) = CopyValue : r0_3
# 654| r0_12(glval<unknown>) = FunctionAddress[InstanceMemberFunction] :
# 654| r0_13(int) = Constant[1] :
# 654| r0_14(int) = Call : func:r0_12, this:r0_11, 0:r0_13
# 654| mu0_15(unknown) = ^CallSideEffect : ~mu0_2
# 654| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~mu0_2
# 654| v0_16(void) = ^BufferReadSideEffect[-1] : &:r0_11, ~mu0_2
# 654| mu0_17(C) = ^IndirectMayWriteSideEffect[-1] : &:r0_11
#-----| r0_18(C *) = CopyValue : r0_3
# 655| r0_19(glval<unknown>) = FunctionAddress[InstanceMemberFunction] :
# 655| r0_20(int) = Constant[2] :
# 655| r0_21(int) = Call : func:r0_19, this:r0_18, 0:r0_20
# 655| mu0_22(unknown) = ^CallSideEffect : ~mu0_2
#-----| v0_23(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~mu0_2
#-----| v0_23(void) = ^BufferReadSideEffect[-1] : &:r0_18, ~mu0_2
#-----| mu0_24(C) = ^IndirectMayWriteSideEffect[-1] : &:r0_18
# 656| v0_25(void) = NoOp :
# 652| v0_26(void) = ReturnVoid :
@@ -2999,7 +2999,7 @@ ir.cpp:
# 662| r0_20(char *) = Convert : r0_19
# 662| v0_21(void) = Call : func:r0_18, this:r0_17, 0:r0_20
# 662| mu0_22(unknown) = ^CallSideEffect : ~mu0_2
# 662| v0_23(void) = ^IndirectReadSideEffect[0] : &:r0_20, ~mu0_2
# 662| v0_23(void) = ^BufferReadSideEffect[0] : &:r0_20, ~mu0_2
# 662| mu0_24(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_20
# 664| v0_25(void) = NoOp :
# 658| v0_26(void) = ReturnVoid :
@@ -3208,7 +3208,7 @@ ir.cpp:
# 721| r0_6(char) = Constant[111] :
# 721| r0_7(long) = Call : func:r0_4, 0:r0_5, 1:r0_6
# 721| mu0_8(unknown) = ^CallSideEffect : ~mu0_2
# 721| v0_9(void) = ^IndirectReadSideEffect[0] : &:r0_5, ~mu0_2
# 721| v0_9(void) = ^BufferReadSideEffect[0] : &:r0_5, ~mu0_2
# 721| mu0_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_5
# 721| r0_11(double) = Convert : r0_7
# 721| mu0_12(double) = Store : &:r0_3, r0_11
@@ -3284,7 +3284,7 @@ ir.cpp:
# 731| r7_3(char *) = Convert : r7_2
# 731| v7_4(void) = Call : func:r7_1, this:r7_0, 0:r7_3
# 731| mu7_5(unknown) = ^CallSideEffect : ~mu0_2
# 731| v7_6(void) = ^IndirectReadSideEffect[0] : &:r7_3, ~mu0_2
# 731| v7_6(void) = ^BufferReadSideEffect[0] : &:r7_3, ~mu0_2
# 731| mu7_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r7_3
# 731| v7_8(void) = ThrowValue : &:r7_0, ~mu0_2
#-----| Exception -> Block 9
@@ -3309,7 +3309,7 @@ ir.cpp:
# 736| r10_5(char *) = Load : &:r10_4, ~mu0_2
# 736| v10_6(void) = Call : func:r10_3, this:r10_2, 0:r10_5
# 736| mu10_7(unknown) = ^CallSideEffect : ~mu0_2
# 736| v10_8(void) = ^IndirectReadSideEffect[0] : &:r10_5, ~mu0_2
# 736| v10_8(void) = ^BufferReadSideEffect[0] : &:r10_5, ~mu0_2
# 736| mu10_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r10_5
# 736| v10_10(void) = ThrowValue : &:r10_2, ~mu0_2
#-----| Exception -> Block 2
@@ -3351,8 +3351,8 @@ ir.cpp:
#-----| r0_11(glval<String>) = FieldAddress[base_s] : r0_10
# 745| r0_12(String &) = Call : func:r0_8, this:r0_7, 0:r0_11
# 745| mu0_13(unknown) = ^CallSideEffect : ~mu0_2
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~mu0_2
#-----| v0_15(void) = ^IndirectReadSideEffect[0] : &:r0_11, ~mu0_2
#-----| v0_14(void) = ^BufferReadSideEffect[-1] : &:r0_7, ~mu0_2
#-----| v0_15(void) = ^BufferReadSideEffect[0] : &:r0_11, ~mu0_2
#-----| mu0_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_7
#-----| mu0_17(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_11
#-----| r0_18(glval<Base &>) = VariableAddress[#return] :
@@ -3430,8 +3430,8 @@ ir.cpp:
#-----| r0_11(Base *) = ConvertToBase[Middle : Base] : r0_10
# 754| r0_12(Base &) = Call : func:r0_8, this:r0_7, 0:r0_11
# 754| mu0_13(unknown) = ^CallSideEffect : ~mu0_2
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~mu0_2
#-----| v0_15(void) = ^IndirectReadSideEffect[0] : &:r0_11, ~mu0_2
#-----| v0_14(void) = ^BufferReadSideEffect[-1] : &:r0_7, ~mu0_2
#-----| v0_15(void) = ^BufferReadSideEffect[0] : &:r0_11, ~mu0_2
#-----| mu0_16(Base) = ^IndirectMayWriteSideEffect[-1] : &:r0_7
#-----| mu0_17(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_11
#-----| r0_18(Middle *) = CopyValue : r0_3
@@ -3442,8 +3442,8 @@ ir.cpp:
#-----| r0_23(glval<String>) = FieldAddress[middle_s] : r0_22
# 754| r0_24(String &) = Call : func:r0_20, this:r0_19, 0:r0_23
# 754| mu0_25(unknown) = ^CallSideEffect : ~mu0_2
#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~mu0_2
#-----| v0_27(void) = ^IndirectReadSideEffect[0] : &:r0_23, ~mu0_2
#-----| v0_26(void) = ^BufferReadSideEffect[-1] : &:r0_19, ~mu0_2
#-----| v0_27(void) = ^BufferReadSideEffect[0] : &:r0_23, ~mu0_2
#-----| mu0_28(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_19
#-----| mu0_29(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_23
#-----| r0_30(glval<Middle &>) = VariableAddress[#return] :
@@ -3511,8 +3511,8 @@ ir.cpp:
#-----| r0_11(Middle *) = ConvertToBase[Derived : Middle] : r0_10
# 763| r0_12(Middle &) = Call : func:r0_8, this:r0_7, 0:r0_11
# 763| mu0_13(unknown) = ^CallSideEffect : ~mu0_2
#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~mu0_2
#-----| v0_15(void) = ^IndirectReadSideEffect[0] : &:r0_11, ~mu0_2
#-----| v0_14(void) = ^BufferReadSideEffect[-1] : &:r0_7, ~mu0_2
#-----| v0_15(void) = ^BufferReadSideEffect[0] : &:r0_11, ~mu0_2
#-----| mu0_16(Middle) = ^IndirectMayWriteSideEffect[-1] : &:r0_7
#-----| mu0_17(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_11
#-----| r0_18(Derived *) = CopyValue : r0_3
@@ -3523,8 +3523,8 @@ ir.cpp:
#-----| r0_23(glval<String>) = FieldAddress[derived_s] : r0_22
# 763| r0_24(String &) = Call : func:r0_20, this:r0_19, 0:r0_23
# 763| mu0_25(unknown) = ^CallSideEffect : ~mu0_2
#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~mu0_2
#-----| v0_27(void) = ^IndirectReadSideEffect[0] : &:r0_23, ~mu0_2
#-----| v0_26(void) = ^BufferReadSideEffect[-1] : &:r0_19, ~mu0_2
#-----| v0_27(void) = ^BufferReadSideEffect[0] : &:r0_23, ~mu0_2
#-----| mu0_28(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_19
#-----| mu0_29(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_23
#-----| r0_30(glval<Derived &>) = VariableAddress[#return] :
@@ -3744,8 +3744,8 @@ ir.cpp:
# 808| r0_27(glval<Base>) = ConvertToBase[Middle : Base] : r0_26
# 808| r0_28(Base &) = Call : func:r0_25, this:r0_24, 0:r0_27
# 808| mu0_29(unknown) = ^CallSideEffect : ~mu0_2
# 808| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_24, ~mu0_2
# 808| v0_31(void) = ^IndirectReadSideEffect[0] : &:r0_27, ~mu0_2
# 808| v0_30(void) = ^BufferReadSideEffect[-1] : &:r0_24, ~mu0_2
# 808| v0_31(void) = ^BufferReadSideEffect[0] : &:r0_27, ~mu0_2
# 808| mu0_32(Base) = ^IndirectMayWriteSideEffect[-1] : &:r0_24
# 808| mu0_33(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_27
# 809| r0_34(glval<Base>) = VariableAddress[b] :
@@ -3755,13 +3755,13 @@ ir.cpp:
# 809| r0_38(glval<Base>) = ConvertToBase[Middle : Base] : r0_37
# 809| v0_39(void) = Call : func:r0_36, 0:r0_38
# 809| mu0_40(unknown) = ^CallSideEffect : ~mu0_2
# 809| v0_41(void) = ^IndirectReadSideEffect[0] : &:r0_38, ~mu0_2
# 809| v0_41(void) = ^BufferReadSideEffect[0] : &:r0_38, ~mu0_2
# 809| mu0_42(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_38
# 809| r0_43(glval<Base>) = Convert : v0_39
# 809| r0_44(Base &) = Call : func:r0_35, this:r0_34, 0:r0_43
# 809| mu0_45(unknown) = ^CallSideEffect : ~mu0_2
# 809| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~mu0_2
# 809| v0_47(void) = ^IndirectReadSideEffect[0] : &:r0_43, ~mu0_2
# 809| v0_46(void) = ^BufferReadSideEffect[-1] : &:r0_34, ~mu0_2
# 809| v0_47(void) = ^BufferReadSideEffect[0] : &:r0_43, ~mu0_2
# 809| mu0_48(Base) = ^IndirectMayWriteSideEffect[-1] : &:r0_34
# 809| mu0_49(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_43
# 810| r0_50(glval<Base>) = VariableAddress[b] :
@@ -3771,13 +3771,13 @@ ir.cpp:
# 810| r0_54(glval<Base>) = ConvertToBase[Middle : Base] : r0_53
# 810| v0_55(void) = Call : func:r0_52, 0:r0_54
# 810| mu0_56(unknown) = ^CallSideEffect : ~mu0_2
# 810| v0_57(void) = ^IndirectReadSideEffect[0] : &:r0_54, ~mu0_2
# 810| v0_57(void) = ^BufferReadSideEffect[0] : &:r0_54, ~mu0_2
# 810| mu0_58(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_54
# 810| r0_59(glval<Base>) = Convert : v0_55
# 810| r0_60(Base &) = Call : func:r0_51, this:r0_50, 0:r0_59
# 810| mu0_61(unknown) = ^CallSideEffect : ~mu0_2
# 810| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_50, ~mu0_2
# 810| v0_63(void) = ^IndirectReadSideEffect[0] : &:r0_59, ~mu0_2
# 810| v0_62(void) = ^BufferReadSideEffect[-1] : &:r0_50, ~mu0_2
# 810| v0_63(void) = ^BufferReadSideEffect[0] : &:r0_59, ~mu0_2
# 810| mu0_64(Base) = ^IndirectMayWriteSideEffect[-1] : &:r0_50
# 810| mu0_65(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_59
# 811| r0_66(glval<Middle *>) = VariableAddress[pm] :
@@ -3807,8 +3807,8 @@ ir.cpp:
# 816| r0_90(glval<Middle>) = Convert : r0_89
# 816| r0_91(Middle &) = Call : func:r0_87, this:r0_86, 0:r0_90
# 816| mu0_92(unknown) = ^CallSideEffect : ~mu0_2
# 816| v0_93(void) = ^IndirectReadSideEffect[-1] : &:r0_86, ~mu0_2
# 816| v0_94(void) = ^IndirectReadSideEffect[0] : &:r0_90, ~mu0_2
# 816| v0_93(void) = ^BufferReadSideEffect[-1] : &:r0_86, ~mu0_2
# 816| v0_94(void) = ^BufferReadSideEffect[0] : &:r0_90, ~mu0_2
# 816| mu0_95(Middle) = ^IndirectMayWriteSideEffect[-1] : &:r0_86
# 816| mu0_96(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_90
# 817| r0_97(glval<Middle>) = VariableAddress[m] :
@@ -3818,8 +3818,8 @@ ir.cpp:
# 817| r0_101(glval<Middle>) = Convert : r0_100
# 817| r0_102(Middle &) = Call : func:r0_98, this:r0_97, 0:r0_101
# 817| mu0_103(unknown) = ^CallSideEffect : ~mu0_2
# 817| v0_104(void) = ^IndirectReadSideEffect[-1] : &:r0_97, ~mu0_2
# 817| v0_105(void) = ^IndirectReadSideEffect[0] : &:r0_101, ~mu0_2
# 817| v0_104(void) = ^BufferReadSideEffect[-1] : &:r0_97, ~mu0_2
# 817| v0_105(void) = ^BufferReadSideEffect[0] : &:r0_101, ~mu0_2
# 817| mu0_106(Middle) = ^IndirectMayWriteSideEffect[-1] : &:r0_97
# 817| mu0_107(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_101
# 818| r0_108(glval<Base *>) = VariableAddress[pb] :
@@ -3844,8 +3844,8 @@ ir.cpp:
# 822| r0_127(glval<Base>) = ConvertToBase[Middle : Base] : r0_126
# 822| r0_128(Base &) = Call : func:r0_124, this:r0_123, 0:r0_127
# 822| mu0_129(unknown) = ^CallSideEffect : ~mu0_2
# 822| v0_130(void) = ^IndirectReadSideEffect[-1] : &:r0_123, ~mu0_2
# 822| v0_131(void) = ^IndirectReadSideEffect[0] : &:r0_127, ~mu0_2
# 822| v0_130(void) = ^BufferReadSideEffect[-1] : &:r0_123, ~mu0_2
# 822| v0_131(void) = ^BufferReadSideEffect[0] : &:r0_127, ~mu0_2
# 822| mu0_132(Base) = ^IndirectMayWriteSideEffect[-1] : &:r0_123
# 822| mu0_133(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_127
# 823| r0_134(glval<Base>) = VariableAddress[b] :
@@ -3856,13 +3856,13 @@ ir.cpp:
# 823| r0_139(glval<Base>) = ConvertToBase[Middle : Base] : r0_138
# 823| v0_140(void) = Call : func:r0_136, 0:r0_139
# 823| mu0_141(unknown) = ^CallSideEffect : ~mu0_2
# 823| v0_142(void) = ^IndirectReadSideEffect[0] : &:r0_139, ~mu0_2
# 823| v0_142(void) = ^BufferReadSideEffect[0] : &:r0_139, ~mu0_2
# 823| mu0_143(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_139
# 823| r0_144(glval<Base>) = Convert : v0_140
# 823| r0_145(Base &) = Call : func:r0_135, this:r0_134, 0:r0_144
# 823| mu0_146(unknown) = ^CallSideEffect : ~mu0_2
# 823| v0_147(void) = ^IndirectReadSideEffect[-1] : &:r0_134, ~mu0_2
# 823| v0_148(void) = ^IndirectReadSideEffect[0] : &:r0_144, ~mu0_2
# 823| v0_147(void) = ^BufferReadSideEffect[-1] : &:r0_134, ~mu0_2
# 823| v0_148(void) = ^BufferReadSideEffect[0] : &:r0_144, ~mu0_2
# 823| mu0_149(Base) = ^IndirectMayWriteSideEffect[-1] : &:r0_134
# 823| mu0_150(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_144
# 824| r0_151(glval<Base>) = VariableAddress[b] :
@@ -3873,13 +3873,13 @@ ir.cpp:
# 824| r0_156(glval<Base>) = ConvertToBase[Middle : Base] : r0_155
# 824| v0_157(void) = Call : func:r0_153, 0:r0_156
# 824| mu0_158(unknown) = ^CallSideEffect : ~mu0_2
# 824| v0_159(void) = ^IndirectReadSideEffect[0] : &:r0_156, ~mu0_2
# 824| v0_159(void) = ^BufferReadSideEffect[0] : &:r0_156, ~mu0_2
# 824| mu0_160(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_156
# 824| r0_161(glval<Base>) = Convert : v0_157
# 824| r0_162(Base &) = Call : func:r0_152, this:r0_151, 0:r0_161
# 824| mu0_163(unknown) = ^CallSideEffect : ~mu0_2
# 824| v0_164(void) = ^IndirectReadSideEffect[-1] : &:r0_151, ~mu0_2
# 824| v0_165(void) = ^IndirectReadSideEffect[0] : &:r0_161, ~mu0_2
# 824| v0_164(void) = ^BufferReadSideEffect[-1] : &:r0_151, ~mu0_2
# 824| v0_165(void) = ^BufferReadSideEffect[0] : &:r0_161, ~mu0_2
# 824| mu0_166(Base) = ^IndirectMayWriteSideEffect[-1] : &:r0_151
# 824| mu0_167(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_161
# 825| r0_168(glval<Derived *>) = VariableAddress[pd] :
@@ -3913,8 +3913,8 @@ ir.cpp:
# 830| r0_196(glval<Derived>) = Convert : r0_195
# 830| r0_197(Derived &) = Call : func:r0_192, this:r0_191, 0:r0_196
# 830| mu0_198(unknown) = ^CallSideEffect : ~mu0_2
# 830| v0_199(void) = ^IndirectReadSideEffect[-1] : &:r0_191, ~mu0_2
# 830| v0_200(void) = ^IndirectReadSideEffect[0] : &:r0_196, ~mu0_2
# 830| v0_199(void) = ^BufferReadSideEffect[-1] : &:r0_191, ~mu0_2
# 830| v0_200(void) = ^BufferReadSideEffect[0] : &:r0_196, ~mu0_2
# 830| mu0_201(Derived) = ^IndirectMayWriteSideEffect[-1] : &:r0_191
# 830| mu0_202(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_196
# 831| r0_203(glval<Derived>) = VariableAddress[d] :
@@ -3925,8 +3925,8 @@ ir.cpp:
# 831| r0_208(glval<Derived>) = Convert : r0_207
# 831| r0_209(Derived &) = Call : func:r0_204, this:r0_203, 0:r0_208
# 831| mu0_210(unknown) = ^CallSideEffect : ~mu0_2
# 831| v0_211(void) = ^IndirectReadSideEffect[-1] : &:r0_203, ~mu0_2
# 831| v0_212(void) = ^IndirectReadSideEffect[0] : &:r0_208, ~mu0_2
# 831| v0_211(void) = ^BufferReadSideEffect[-1] : &:r0_203, ~mu0_2
# 831| v0_212(void) = ^BufferReadSideEffect[0] : &:r0_208, ~mu0_2
# 831| mu0_213(Derived) = ^IndirectMayWriteSideEffect[-1] : &:r0_203
# 831| mu0_214(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_208
# 832| r0_215(glval<Base *>) = VariableAddress[pb] :
@@ -4076,7 +4076,7 @@ ir.cpp:
# 868| r0_6(char *) = Convert : r0_5
# 868| v0_7(void) = Call : func:r0_4, this:r0_3, 0:r0_6
# 868| mu0_8(unknown) = ^CallSideEffect : ~mu0_2
# 868| v0_9(void) = ^IndirectReadSideEffect[0] : &:r0_6, ~mu0_2
# 868| v0_9(void) = ^BufferReadSideEffect[0] : &:r0_6, ~mu0_2
# 868| mu0_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_6
# 869| v0_11(void) = NoOp :
# 867| v0_12(void) = ReturnVoid :
@@ -4299,7 +4299,7 @@ ir.cpp:
# 945| r0_37(char *) = Convert : r0_36
# 945| v0_38(void) = Call : func:r0_35, this:r0_34, 0:r0_37
# 945| mu0_39(unknown) = ^CallSideEffect : ~mu0_2
# 945| v0_40(void) = ^IndirectReadSideEffect[0] : &:r0_37, ~mu0_2
# 945| v0_40(void) = ^BufferReadSideEffect[0] : &:r0_37, ~mu0_2
# 945| mu0_41(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_37
# 946| r0_42(glval<unknown>) = FunctionAddress[operator new] :
# 946| r0_43(unsigned long) = Constant[256] :
@@ -4800,7 +4800,7 @@ ir.cpp:
# 1035| r0_28(float) = Constant[1.0] :
# 1035| r0_29(char) = Call : func:r0_27, this:r0_26, 0:r0_28
# 1035| mu0_30(unknown) = ^CallSideEffect : ~mu0_2
# 1035| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~mu0_2
# 1035| v0_31(void) = ^BufferReadSideEffect[-1] : &:r0_26, ~mu0_2
# 1035| mu0_32(decltype([...](...){...})) = ^IndirectMayWriteSideEffect[-1] : &:r0_26
# 1036| r0_33(glval<decltype([...](...){...})>) = VariableAddress[lambda_val] :
# 1036| r0_34(glval<unknown>) = FunctionAddress[(constructor)] :
@@ -4817,7 +4817,7 @@ ir.cpp:
# 1036| r0_45(decltype([...](...){...})) = Load : &:r0_35, ~mu0_2
# 1036| v0_46(void) = Call : func:r0_34, this:r0_33, 0:r0_45
# 1036| mu0_47(unknown) = ^CallSideEffect : ~mu0_2
# 1036| v0_48(void) = ^IndirectReadSideEffect[0] : &:r0_45, ~mu0_2
# 1036| v0_48(void) = ^BufferReadSideEffect[0] : &:r0_45, ~mu0_2
# 1036| mu0_49(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_45
# 1037| r0_50(glval<decltype([...](...){...})>) = VariableAddress[lambda_val] :
# 1037| r0_51(glval<decltype([...](...){...})>) = Convert : r0_50
@@ -4825,7 +4825,7 @@ ir.cpp:
# 1037| r0_53(float) = Constant[2.0] :
# 1037| r0_54(char) = Call : func:r0_52, this:r0_51, 0:r0_53
# 1037| mu0_55(unknown) = ^CallSideEffect : ~mu0_2
# 1037| v0_56(void) = ^IndirectReadSideEffect[-1] : &:r0_51, ~mu0_2
# 1037| v0_56(void) = ^BufferReadSideEffect[-1] : &:r0_51, ~mu0_2
# 1037| mu0_57(decltype([...](...){...})) = ^IndirectMayWriteSideEffect[-1] : &:r0_51
# 1038| r0_58(glval<decltype([...](...){...})>) = VariableAddress[lambda_ref_explicit] :
# 1038| r0_59(glval<decltype([...](...){...})>) = VariableAddress[#temp1038:30] :
@@ -4842,7 +4842,7 @@ ir.cpp:
# 1039| r0_70(float) = Constant[3.0] :
# 1039| r0_71(char) = Call : func:r0_69, this:r0_68, 0:r0_70
# 1039| mu0_72(unknown) = ^CallSideEffect : ~mu0_2
# 1039| v0_73(void) = ^IndirectReadSideEffect[-1] : &:r0_68, ~mu0_2
# 1039| v0_73(void) = ^BufferReadSideEffect[-1] : &:r0_68, ~mu0_2
# 1039| mu0_74(decltype([...](...){...})) = ^IndirectMayWriteSideEffect[-1] : &:r0_68
# 1040| r0_75(glval<decltype([...](...){...})>) = VariableAddress[lambda_val_explicit] :
# 1040| r0_76(glval<unknown>) = FunctionAddress[(constructor)] :
@@ -4855,7 +4855,7 @@ ir.cpp:
# 1040| r0_83(decltype([...](...){...})) = Load : &:r0_77, ~mu0_2
# 1040| v0_84(void) = Call : func:r0_76, this:r0_75, 0:r0_83
# 1040| mu0_85(unknown) = ^CallSideEffect : ~mu0_2
# 1040| v0_86(void) = ^IndirectReadSideEffect[0] : &:r0_83, ~mu0_2
# 1040| v0_86(void) = ^BufferReadSideEffect[0] : &:r0_83, ~mu0_2
# 1040| mu0_87(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_83
# 1041| r0_88(glval<decltype([...](...){...})>) = VariableAddress[lambda_val_explicit] :
# 1041| r0_89(glval<decltype([...](...){...})>) = Convert : r0_88
@@ -4863,7 +4863,7 @@ ir.cpp:
# 1041| r0_91(float) = Constant[4.0] :
# 1041| r0_92(char) = Call : func:r0_90, this:r0_89, 0:r0_91
# 1041| mu0_93(unknown) = ^CallSideEffect : ~mu0_2
# 1041| v0_94(void) = ^IndirectReadSideEffect[-1] : &:r0_89, ~mu0_2
# 1041| v0_94(void) = ^BufferReadSideEffect[-1] : &:r0_89, ~mu0_2
# 1041| mu0_95(decltype([...](...){...})) = ^IndirectMayWriteSideEffect[-1] : &:r0_89
# 1042| r0_96(glval<decltype([...](...){...})>) = VariableAddress[lambda_mixed_explicit] :
# 1042| r0_97(glval<decltype([...](...){...})>) = VariableAddress[#temp1042:32] :
@@ -4884,7 +4884,7 @@ ir.cpp:
# 1043| r0_112(float) = Constant[5.0] :
# 1043| r0_113(char) = Call : func:r0_111, this:r0_110, 0:r0_112
# 1043| mu0_114(unknown) = ^CallSideEffect : ~mu0_2
# 1043| v0_115(void) = ^IndirectReadSideEffect[-1] : &:r0_110, ~mu0_2
# 1043| v0_115(void) = ^BufferReadSideEffect[-1] : &:r0_110, ~mu0_2
# 1043| mu0_116(decltype([...](...){...})) = ^IndirectMayWriteSideEffect[-1] : &:r0_110
# 1044| r0_117(glval<int>) = VariableAddress[r] :
# 1044| r0_118(glval<int>) = VariableAddress[x] :
@@ -4920,7 +4920,7 @@ ir.cpp:
# 1046| r0_148(float) = Constant[6.0] :
# 1046| r0_149(char) = Call : func:r0_147, this:r0_146, 0:r0_148
# 1046| mu0_150(unknown) = ^CallSideEffect : ~mu0_2
# 1046| v0_151(void) = ^IndirectReadSideEffect[-1] : &:r0_146, ~mu0_2
# 1046| v0_151(void) = ^BufferReadSideEffect[-1] : &:r0_146, ~mu0_2
# 1046| mu0_152(decltype([...](...){...})) = ^IndirectMayWriteSideEffect[-1] : &:r0_146
# 1047| v0_153(void) = NoOp :
# 1031| v0_154(void) = ReturnVoid :
@@ -4989,7 +4989,7 @@ ir.cpp:
# 1034| r0_10(glval<unknown>) = FunctionAddress[c_str] :
# 1034| r0_11(char *) = Call : func:r0_10, this:r0_9
# 1034| mu0_12(unknown) = ^CallSideEffect : ~mu0_2
# 1034| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~mu0_2
# 1034| v0_13(void) = ^BufferReadSideEffect[-1] : &:r0_9, ~mu0_2
# 1034| mu0_14(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_9
#-----| r0_15(lambda [] type at line 1034, col. 21 *) = CopyValue : r0_3
#-----| r0_16(glval<int &>) = FieldAddress[x] : r0_15
@@ -5034,7 +5034,7 @@ ir.cpp:
# 1036| r0_9(glval<unknown>) = FunctionAddress[c_str] :
# 1036| r0_10(char *) = Call : func:r0_9, this:r0_8
# 1036| mu0_11(unknown) = ^CallSideEffect : ~mu0_2
#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_8, ~mu0_2
#-----| v0_12(void) = ^BufferReadSideEffect[-1] : &:r0_8, ~mu0_2
#-----| mu0_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_8
#-----| r0_14(lambda [] type at line 1036, col. 21 *) = CopyValue : r0_3
#-----| r0_15(glval<int>) = FieldAddress[x] : r0_14
@@ -5063,7 +5063,7 @@ ir.cpp:
# 1038| r0_10(glval<unknown>) = FunctionAddress[c_str] :
# 1038| r0_11(char *) = Call : func:r0_10, this:r0_9
# 1038| mu0_12(unknown) = ^CallSideEffect : ~mu0_2
# 1038| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~mu0_2
# 1038| v0_13(void) = ^BufferReadSideEffect[-1] : &:r0_9, ~mu0_2
# 1038| mu0_14(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_9
# 1038| r0_15(int) = Constant[0] :
# 1038| r0_16(glval<char>) = PointerAdd[1] : r0_11, r0_15
@@ -5123,7 +5123,7 @@ ir.cpp:
# 1040| r0_9(glval<unknown>) = FunctionAddress[c_str] :
# 1040| r0_10(char *) = Call : func:r0_9, this:r0_8
# 1040| mu0_11(unknown) = ^CallSideEffect : ~mu0_2
#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_8, ~mu0_2
#-----| v0_12(void) = ^BufferReadSideEffect[-1] : &:r0_8, ~mu0_2
#-----| mu0_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_8
# 1040| r0_14(int) = Constant[0] :
# 1040| r0_15(glval<char>) = PointerAdd[1] : r0_10, r0_14
@@ -5150,7 +5150,7 @@ ir.cpp:
# 1042| r0_10(glval<unknown>) = FunctionAddress[c_str] :
# 1042| r0_11(char *) = Call : func:r0_10, this:r0_9
# 1042| mu0_12(unknown) = ^CallSideEffect : ~mu0_2
# 1042| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~mu0_2
# 1042| v0_13(void) = ^BufferReadSideEffect[-1] : &:r0_9, ~mu0_2
# 1042| mu0_14(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_9
#-----| r0_15(lambda [] type at line 1042, col. 32 *) = CopyValue : r0_3
#-----| r0_16(glval<int>) = FieldAddress[x] : r0_15
@@ -5179,7 +5179,7 @@ ir.cpp:
# 1045| r0_10(glval<unknown>) = FunctionAddress[c_str] :
# 1045| r0_11(char *) = Call : func:r0_10, this:r0_9
# 1045| mu0_12(unknown) = ^CallSideEffect : ~mu0_2
# 1045| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~mu0_2
# 1045| v0_13(void) = ^BufferReadSideEffect[-1] : &:r0_9, ~mu0_2
# 1045| mu0_14(String) = ^IndirectMayWriteSideEffect[-1] : &:r0_9
#-----| r0_15(lambda [] type at line 1045, col. 23 *) = CopyValue : r0_3
#-----| r0_16(glval<int>) = FieldAddress[x] : r0_15
@@ -5219,7 +5219,7 @@ ir.cpp:
# 1069| r0_12(glval<unknown>) = FunctionAddress[begin] :
# 1069| r0_13(iterator) = Call : func:r0_12, this:r0_11
# 1069| mu0_14(unknown) = ^CallSideEffect : ~mu0_2
#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~mu0_2
#-----| v0_15(void) = ^BufferReadSideEffect[-1] : &:r0_11, ~mu0_2
#-----| mu0_16(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r0_11
# 1069| mu0_17(iterator) = Store : &:r0_9, r0_13
# 1069| r0_18(glval<iterator>) = VariableAddress[(__end)] :
@@ -5228,7 +5228,7 @@ ir.cpp:
# 1069| r0_21(glval<unknown>) = FunctionAddress[end] :
# 1069| r0_22(iterator) = Call : func:r0_21, this:r0_20
# 1069| mu0_23(unknown) = ^CallSideEffect : ~mu0_2
#-----| v0_24(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~mu0_2
#-----| v0_24(void) = ^BufferReadSideEffect[-1] : &:r0_20, ~mu0_2
#-----| mu0_25(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r0_20
# 1069| mu0_26(iterator) = Store : &:r0_18, r0_22
#-----| Goto -> Block 4
@@ -5240,7 +5240,7 @@ ir.cpp:
# 1075| r1_3(glval<unknown>) = FunctionAddress[operator*] :
# 1075| r1_4(int &) = Call : func:r1_3, this:r1_2
# 1075| mu1_5(unknown) = ^CallSideEffect : ~mu0_2
#-----| v1_6(void) = ^IndirectReadSideEffect[-1] : &:r1_2, ~mu0_2
#-----| v1_6(void) = ^BufferReadSideEffect[-1] : &:r1_2, ~mu0_2
#-----| mu1_7(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1_2
# 1075| r1_8(glval<int>) = Convert : r1_4
# 1075| mu1_9(int &) = Store : &:r1_0, r1_8
@@ -5273,7 +5273,7 @@ ir.cpp:
#-----| r4_4(iterator) = Load : &:r4_3, ~mu0_2
# 1069| r4_5(bool) = Call : func:r4_2, this:r4_1, 0:r4_4
# 1069| mu4_6(unknown) = ^CallSideEffect : ~mu0_2
#-----| v4_7(void) = ^IndirectReadSideEffect[-1] : &:r4_1, ~mu0_2
#-----| v4_7(void) = ^BufferReadSideEffect[-1] : &:r4_1, ~mu0_2
#-----| mu4_8(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r4_1
# 1069| v4_9(void) = ConditionalBranch : r4_5
#-----| False -> Block 8
@@ -5286,7 +5286,7 @@ ir.cpp:
# 1069| r5_3(glval<unknown>) = FunctionAddress[operator*] :
# 1069| r5_4(int &) = Call : func:r5_3, this:r5_2
# 1069| mu5_5(unknown) = ^CallSideEffect : ~mu0_2
#-----| v5_6(void) = ^IndirectReadSideEffect[-1] : &:r5_2, ~mu0_2
#-----| v5_6(void) = ^BufferReadSideEffect[-1] : &:r5_2, ~mu0_2
#-----| mu5_7(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r5_2
# 1069| r5_8(int) = Load : &:r5_4, ~mu0_2
# 1069| mu5_9(int) = Store : &:r5_0, r5_8
@@ -5308,7 +5308,7 @@ ir.cpp:
# 1069| r7_2(glval<unknown>) = FunctionAddress[operator++] :
# 1069| r7_3(iterator &) = Call : func:r7_2, this:r7_1
# 1069| mu7_4(unknown) = ^CallSideEffect : ~mu0_2
#-----| v7_5(void) = ^IndirectReadSideEffect[-1] : &:r7_1, ~mu0_2
#-----| v7_5(void) = ^BufferReadSideEffect[-1] : &:r7_1, ~mu0_2
#-----| mu7_6(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r7_1
#-----| Goto (back edge) -> Block 4
@@ -5323,7 +5323,7 @@ ir.cpp:
# 1075| r8_7(glval<unknown>) = FunctionAddress[begin] :
# 1075| r8_8(iterator) = Call : func:r8_7, this:r8_6
# 1075| mu8_9(unknown) = ^CallSideEffect : ~mu0_2
#-----| v8_10(void) = ^IndirectReadSideEffect[-1] : &:r8_6, ~mu0_2
#-----| v8_10(void) = ^BufferReadSideEffect[-1] : &:r8_6, ~mu0_2
#-----| mu8_11(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r8_6
# 1075| mu8_12(iterator) = Store : &:r8_4, r8_8
# 1075| r8_13(glval<iterator>) = VariableAddress[(__end)] :
@@ -5332,7 +5332,7 @@ ir.cpp:
# 1075| r8_16(glval<unknown>) = FunctionAddress[end] :
# 1075| r8_17(iterator) = Call : func:r8_16, this:r8_15
# 1075| mu8_18(unknown) = ^CallSideEffect : ~mu0_2
#-----| v8_19(void) = ^IndirectReadSideEffect[-1] : &:r8_15, ~mu0_2
#-----| v8_19(void) = ^BufferReadSideEffect[-1] : &:r8_15, ~mu0_2
#-----| mu8_20(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r8_15
# 1075| mu8_21(iterator) = Store : &:r8_13, r8_17
#-----| Goto -> Block 9
@@ -5345,7 +5345,7 @@ ir.cpp:
#-----| r9_4(iterator) = Load : &:r9_3, ~mu0_2
# 1075| r9_5(bool) = Call : func:r9_2, this:r9_1, 0:r9_4
# 1075| mu9_6(unknown) = ^CallSideEffect : ~mu0_2
#-----| v9_7(void) = ^IndirectReadSideEffect[-1] : &:r9_1, ~mu0_2
#-----| v9_7(void) = ^BufferReadSideEffect[-1] : &:r9_1, ~mu0_2
#-----| mu9_8(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r9_1
# 1075| v9_9(void) = ConditionalBranch : r9_5
#-----| False -> Block 3
@@ -5356,7 +5356,7 @@ ir.cpp:
# 1075| r10_1(glval<unknown>) = FunctionAddress[operator++] :
# 1075| r10_2(iterator &) = Call : func:r10_1, this:r10_0
# 1075| mu10_3(unknown) = ^CallSideEffect : ~mu0_2
#-----| v10_4(void) = ^IndirectReadSideEffect[-1] : &:r10_0, ~mu0_2
#-----| v10_4(void) = ^BufferReadSideEffect[-1] : &:r10_0, ~mu0_2
#-----| mu10_5(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r10_0
#-----| Goto (back edge) -> Block 9
@@ -5524,7 +5524,7 @@ ir.cpp:
# 1140| r7_3(char *) = Convert : r7_2
# 1140| v7_4(void) = Call : func:r7_1, this:r7_0, 0:r7_3
# 1140| mu7_5(unknown) = ^CallSideEffect : ~mu0_2
# 1140| v7_6(void) = ^IndirectReadSideEffect[0] : &:r7_3, ~mu0_2
# 1140| v7_6(void) = ^BufferReadSideEffect[0] : &:r7_3, ~mu0_2
# 1140| mu7_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r7_3
# 1140| v7_8(void) = ThrowValue : &:r7_0, ~mu0_2
#-----| Exception -> Block 9
@@ -5549,7 +5549,7 @@ ir.cpp:
# 1145| r10_5(char *) = Load : &:r10_4, ~mu0_2
# 1145| v10_6(void) = Call : func:r10_3, this:r10_2, 0:r10_5
# 1145| mu10_7(unknown) = ^CallSideEffect : ~mu0_2
# 1145| v10_8(void) = ^IndirectReadSideEffect[0] : &:r10_5, ~mu0_2
# 1145| v10_8(void) = ^BufferReadSideEffect[0] : &:r10_5, ~mu0_2
# 1145| mu10_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r10_5
# 1145| v10_10(void) = ThrowValue : &:r10_2, ~mu0_2
#-----| Exception -> Block 2

View File

@@ -334,7 +334,7 @@ ssa.cpp:
# 97| v0_13(void) = Call : func:r0_10, 0:r0_12
# 97| m0_14(unknown) = ^CallSideEffect : ~m0_5
# 97| m0_15(unknown) = Chi : total:m0_5, partial:m0_14
# 97| v0_16(void) = ^IndirectReadSideEffect[0] : &:r0_12, ~m0_15
# 97| v0_16(void) = ^BufferReadSideEffect[0] : &:r0_12, ~m0_15
# 97| m0_17(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_12
# 97| m0_18(unknown) = Chi : total:m0_15, partial:m0_17
# 98| v0_19(void) = NoOp :
@@ -390,7 +390,7 @@ ssa.cpp:
# 108| v0_19(void) = Call : func:r0_16, 0:r0_18
# 108| m0_20(unknown) = ^CallSideEffect : ~m0_5
# 108| m0_21(unknown) = Chi : total:m0_5, partial:m0_20
# 108| v0_22(void) = ^IndirectReadSideEffect[0] : &:r0_18, ~m0_21
# 108| v0_22(void) = ^BufferReadSideEffect[0] : &:r0_18, ~m0_21
# 108| m0_23(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_18
# 108| m0_24(unknown) = Chi : total:m0_21, partial:m0_23
# 109| v0_25(void) = NoOp :
@@ -462,7 +462,7 @@ ssa.cpp:
# 119| v0_27(void) = Call : func:r0_24, 0:r0_26
# 119| m0_28(unknown) = ^CallSideEffect : ~m0_19
# 119| m0_29(unknown) = Chi : total:m0_19, partial:m0_28
# 119| v0_30(void) = ^IndirectReadSideEffect[0] : &:r0_26, ~m0_29
# 119| v0_30(void) = ^BufferReadSideEffect[0] : &:r0_26, ~m0_29
# 119| m0_31(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_26
# 119| m0_32(unknown) = Chi : total:m0_29, partial:m0_31
# 120| v0_33(void) = NoOp :

View File

@@ -333,7 +333,7 @@ ssa.cpp:
# 97| r0_11(void *) = Convert : r0_10
# 97| v0_12(void) = Call : func:r0_9, 0:r0_11
# 97| mu0_13(unknown) = ^CallSideEffect : ~mu0_2
# 97| v0_14(void) = ^IndirectReadSideEffect[0] : &:r0_11, ~mu0_2
# 97| v0_14(void) = ^BufferReadSideEffect[0] : &:r0_11, ~mu0_2
# 97| mu0_15(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_11
# 98| v0_16(void) = NoOp :
# 95| v0_17(void) = ReturnVoid :
@@ -386,7 +386,7 @@ ssa.cpp:
# 108| r0_17(void *) = Convert : r0_16
# 108| v0_18(void) = Call : func:r0_15, 0:r0_17
# 108| mu0_19(unknown) = ^CallSideEffect : ~mu0_2
# 108| v0_20(void) = ^IndirectReadSideEffect[0] : &:r0_17, ~mu0_2
# 108| v0_20(void) = ^BufferReadSideEffect[0] : &:r0_17, ~mu0_2
# 108| mu0_21(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_17
# 109| v0_22(void) = NoOp :
# 105| v0_23(void) = ReturnVoid :
@@ -451,7 +451,7 @@ ssa.cpp:
# 119| r0_23(void *) = Convert : r0_22
# 119| v0_24(void) = Call : func:r0_21, 0:r0_23
# 119| mu0_25(unknown) = ^CallSideEffect : ~mu0_2
# 119| v0_26(void) = ^IndirectReadSideEffect[0] : &:r0_23, ~mu0_2
# 119| v0_26(void) = ^BufferReadSideEffect[0] : &:r0_23, ~mu0_2
# 119| mu0_27(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_23
# 120| v0_28(void) = NoOp :
# 116| v0_29(void) = ReturnVoid :

View File

@@ -1,9 +1,9 @@
missingOperand
| misc.c:125:5:125:11 | CopyValue: (statement expression) | Instruction 'CopyValue' is missing an expected operand with tag 'Unary' in function '$@'. | misc.c:97:6:97:10 | IR: misc3 | void misc3() |
| parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() |
| parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() |
| parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() |
| parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() |
| parameterinitializer.cpp:27:3:27:6 | BufferReadSideEffect: my_c | Instruction 'BufferReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() |
| parameterinitializer.cpp:27:3:27:6 | BufferReadSideEffect: my_c | Instruction 'BufferReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() |
| parameterinitializer.cpp:27:3:27:6 | BufferReadSideEffect: my_c | Instruction 'BufferReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() |
| parameterinitializer.cpp:27:3:27:6 | BufferReadSideEffect: my_c | Instruction 'BufferReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() |
| try_catch.cpp:13:5:13:16 | ThrowValue: throw ... | Instruction 'ThrowValue' is missing an expected operand with tag 'Load' in function '$@'. | try_catch.cpp:11:6:11:17 | IR: bypass_catch | void bypass_catch() |
unexpectedOperand
duplicateOperand

View File

@@ -1,9 +1,5 @@
missingOperand
| misc.c:125:5:125:11 | CopyValue: (statement expression) | Instruction 'CopyValue' is missing an expected operand with tag 'Unary' in function '$@'. | misc.c:97:6:97:10 | IR: misc3 | void misc3() |
| parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() |
| parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() |
| parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() |
| parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() |
| try_catch.cpp:13:5:13:16 | ThrowValue: throw ... | Instruction 'ThrowValue' is missing an expected operand with tag 'Load' in function '$@'. | try_catch.cpp:11:6:11:17 | IR: bypass_catch | void bypass_catch() |
unexpectedOperand
duplicateOperand