C++: Add Uninitialized instruction for list-initialized variables

This commit inserts an `Uninitialized` instruction to "initialize" a local variable when that variable is initialized with an initializer list. This ensures that there is always a definition of the whole variable before any read or write to part of that variable.

This change appears in a different form in @rdmarsh2's Chi node PR, but I needed to refactor the initialization code anyway to handle ConditionDeclExpr.
This commit is contained in:
Dave Bartolomeo
2018-11-20 16:12:44 -08:00
parent b21b066255
commit 07f9fe6ee4
4 changed files with 651 additions and 642 deletions

View File

@@ -10,8 +10,7 @@ private import TranslatedInitialization
* Gets the `TranslatedDeclarationEntry` that represents the declaration
* `entry`.
*/
TranslatedDeclarationEntry getTranslatedDeclarationEntry(
DeclarationEntry entry) {
TranslatedDeclarationEntry getTranslatedDeclarationEntry(DeclarationEntry entry) {
result.getAST() = entry
}
@@ -21,8 +20,7 @@ TranslatedDeclarationEntry getTranslatedDeclarationEntry(
* it can also be the declaration of a static local variable, an extern
* variable, or an extern function.
*/
abstract class TranslatedDeclarationEntry extends TranslatedElement,
TTranslatedDeclarationEntry {
abstract class TranslatedDeclarationEntry extends TranslatedElement, TTranslatedDeclarationEntry {
DeclarationEntry entry;
TranslatedDeclarationEntry() {
@@ -50,14 +48,13 @@ abstract class TranslatedDeclarationEntry extends TranslatedElement,
* for declarations other than local variables. Since these have no semantic
* effect, they are translated as `NoOp`.
*/
class TranslatedNonVariableDeclaration extends
TranslatedDeclarationEntry {
TranslatedNonVariableDeclaration() {
class TranslatedNonVariableDeclarationEntry extends TranslatedDeclarationEntry {
TranslatedNonVariableDeclarationEntry() {
not entry.getDeclaration() instanceof LocalVariable
}
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
Type resultType, boolean isGLValue) {
Type resultType, boolean isGLValue) {
opcode instanceof Opcode::NoOp and
tag = OnlyInstructionTag() and
resultType instanceof VoidType and
@@ -88,98 +85,11 @@ class TranslatedNonVariableDeclaration extends
* Represents the IR translation of the declaration of a local variable,
* including its initialization, if any.
*/
abstract class TranslatedVariableDeclaration extends
TranslatedDeclarationEntry {
LocalVariable var;
TranslatedVariableDeclaration() {
entry.getDeclaration() = var
}
}
/**
* Represents the IR translation of a local variable with no initializer. The
* generated IR stores into the variable using an `Uninitialized` instruction,
* rather than a `Store`.
*/
class TranslatedUninitializedVariable extends
TranslatedVariableDeclaration {
TranslatedUninitializedVariable() {
not exists(Initializer init |
init.getDeclaration() = var
)
}
override TranslatedElement getChild(int id) {
none()
}
override Instruction getFirstInstruction() {
result = getInstruction(InitializerVariableAddressTag())
}
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
Type resultType, boolean isGLValue) {
(
tag = InitializerVariableAddressTag() and
opcode instanceof Opcode::VariableAddress and
resultType = var.getType().getUnspecifiedType() and
isGLValue = true
) or
(
tag = InitializerStoreTag() and
opcode instanceof Opcode::Uninitialized and
resultType = var.getType().getUnspecifiedType() and
isGLValue = false
)
}
override Instruction getInstructionSuccessor(InstructionTag tag,
EdgeKind kind) {
kind instanceof GotoEdge and
(
(
tag = InitializerVariableAddressTag() and
result = getInstruction(InitializerStoreTag())
) or
(
tag = InitializerStoreTag() and
result = getParent().getChildSuccessor(this)
)
)
}
override Instruction getChildSuccessor(TranslatedElement child) {
none()
}
override Instruction getInstructionOperand(InstructionTag tag,
OperandTag operandTag) {
tag = InitializerStoreTag() and
(
(
operandTag instanceof AddressOperandTag and
result = getInstruction(InitializerVariableAddressTag())
)
)
}
override IRVariable getInstructionVariable(InstructionTag tag) {
tag = InitializerVariableAddressTag() and
result = getIRUserVariable(var.getFunction(), var)
}
}
/**
* Represents the IR translation of a local variable with an initializer.
*/
class TranslatedInitializedVariable extends
TranslatedVariableDeclaration, InitializationContext {
Initializer init;
TranslatedInitializedVariable() {
init.getDeclaration() = var
}
abstract class TranslatedVariableDeclaration extends TranslatedElement, InitializationContext {
/**
* Gets the local variable being declared.
*/
abstract LocalVariable getVariable();
override TranslatedElement getChild(int id) {
id = 0 and result = getInitialization()
@@ -190,18 +100,41 @@ class TranslatedInitializedVariable extends
}
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
Type resultType, boolean isGLValue) {
tag = InitializerVariableAddressTag() and
opcode instanceof Opcode::VariableAddress and
resultType = var.getType().getUnspecifiedType() and
isGLValue = true
Type resultType, boolean isGLValue) {
(
tag = InitializerVariableAddressTag() and
opcode instanceof Opcode::VariableAddress and
resultType = getVariable().getType().getUnspecifiedType() and
isGLValue = true
) or
(
hasUninitializedInstruction() and
tag = InitializerStoreTag() and
opcode instanceof Opcode::Uninitialized and
resultType = getVariable().getType().getUnspecifiedType() and
isGLValue = false
)
}
override Instruction getInstructionSuccessor(InstructionTag tag,
EdgeKind kind) {
tag = InitializerVariableAddressTag() and
result = getInitialization().getFirstInstruction() and
kind instanceof GotoEdge
EdgeKind kind) {
(
tag = InitializerVariableAddressTag() and
kind instanceof GotoEdge and
if hasUninitializedInstruction() then
result = getInstruction(InitializerStoreTag())
else
result = getInitialization().getFirstInstruction()
) or
(
hasUninitializedInstruction() and
kind instanceof GotoEdge and
tag = InitializerStoreTag() and
(
result = getInitialization().getFirstInstruction() or
not exists(getInitialization()) and result = getParent().getChildSuccessor(this)
)
)
}
override Instruction getChildSuccessor(TranslatedElement child) {
@@ -210,7 +143,14 @@ class TranslatedInitializedVariable extends
override IRVariable getInstructionVariable(InstructionTag tag) {
tag = InitializerVariableAddressTag() and
result = getIRUserVariable(var.getFunction(), var)
result = getIRUserVariable(getFunction(), getVariable())
}
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
hasUninitializedInstruction() and
tag = InitializerStoreTag() and
operandTag instanceof AddressOperandTag and
result = getInstruction(InitializerVariableAddressTag())
}
override Instruction getTargetAddress() {
@@ -218,10 +158,31 @@ class TranslatedInitializedVariable extends
}
override Type getTargetType() {
result = var.getType().getUnspecifiedType()
result = getVariable().getType().getUnspecifiedType()
}
private TranslatedInitialization getInitialization() {
result = getTranslatedInitialization(init.getExpr().getFullyConverted())
result = getTranslatedInitialization(getVariable().getInitializer().getExpr().getFullyConverted())
}
private predicate hasUninitializedInstruction() {
not exists(getInitialization()) or
getInitialization() instanceof TranslatedListInitialization
}
}
/**
* Represents the IR translation of a local variable declaration within a declaration statement.
*/
class TranslatedVariableDeclarationEntry extends TranslatedVariableDeclaration,
TranslatedDeclarationEntry {
LocalVariable var;
TranslatedVariableDeclarationEntry() {
var = entry.getDeclaration()
}
override LocalVariable getVariable() {
result = var
}
}

View File

@@ -2152,40 +2152,43 @@ ir.cpp:
# 503| r0_4(glval<float>) = VariableAddress[f] :
# 503| m0_5(float) = InitializeParameter[f] : r0_4
# 504| r0_6(glval<Point>) = VariableAddress[pt1] :
# 504| r0_7(glval<int>) = FieldAddress[x] : r0_6
# 504| r0_8(glval<int>) = VariableAddress[x] :
# 504| r0_9(int) = Load : r0_8, m0_3
# 504| m0_10(int) = Store : r0_7, r0_9
# 504| r0_11(glval<int>) = FieldAddress[y] : r0_6
# 504| r0_12(glval<float>) = VariableAddress[f] :
# 504| r0_13(float) = Load : r0_12, m0_5
# 504| r0_14(int) = Convert : r0_13
# 504| mu0_15(int) = Store : r0_11, r0_14
# 505| r0_16(glval<Point>) = VariableAddress[pt2] :
# 505| r0_17(glval<int>) = FieldAddress[x] : r0_16
# 505| r0_18(glval<int>) = VariableAddress[x] :
# 505| r0_19(int) = Load : r0_18, m0_3
# 505| m0_20(int) = Store : r0_17, r0_19
# 505| r0_21(glval<int>) = FieldAddress[y] : r0_16
# 505| r0_22(int) = Constant[0] :
# 505| mu0_23(int) = Store : r0_21, r0_22
# 506| r0_24(glval<Point>) = VariableAddress[pt3] :
# 506| r0_25(glval<int>) = FieldAddress[x] : r0_24
# 506| r0_26(int) = Constant[0] :
# 506| m0_27(int) = Store : r0_25, r0_26
# 506| r0_28(glval<int>) = FieldAddress[y] : r0_24
# 504| m0_7(Point) = Uninitialized : r0_6
# 504| r0_8(glval<int>) = FieldAddress[x] : r0_6
# 504| r0_9(glval<int>) = VariableAddress[x] :
# 504| r0_10(int) = Load : r0_9, m0_3
# 504| m0_11(int) = Store : r0_8, r0_10
# 504| r0_12(glval<int>) = FieldAddress[y] : r0_6
# 504| r0_13(glval<float>) = VariableAddress[f] :
# 504| r0_14(float) = Load : r0_13, m0_5
# 504| r0_15(int) = Convert : r0_14
# 504| mu0_16(int) = Store : r0_12, r0_15
# 505| r0_17(glval<Point>) = VariableAddress[pt2] :
# 505| m0_18(Point) = Uninitialized : r0_17
# 505| r0_19(glval<int>) = FieldAddress[x] : r0_17
# 505| r0_20(glval<int>) = VariableAddress[x] :
# 505| r0_21(int) = Load : r0_20, m0_3
# 505| m0_22(int) = Store : r0_19, r0_21
# 505| r0_23(glval<int>) = FieldAddress[y] : r0_17
# 505| r0_24(int) = Constant[0] :
# 505| mu0_25(int) = Store : r0_23, r0_24
# 506| r0_26(glval<Point>) = VariableAddress[pt3] :
# 506| m0_27(Point) = Uninitialized : r0_26
# 506| r0_28(glval<int>) = FieldAddress[x] : r0_26
# 506| r0_29(int) = Constant[0] :
# 506| mu0_30(int) = Store : r0_28, r0_29
# 508| r0_31(glval<int>) = VariableAddress[x1] :
# 508| r0_32(int) = Constant[1] :
# 508| m0_33(int) = Store : r0_31, r0_32
# 509| r0_34(glval<int>) = VariableAddress[x2] :
# 509| r0_35(int) = Constant[0] :
# 509| m0_36(int) = Store : r0_34, r0_35
# 510| v0_37(void) = NoOp :
# 503| v0_38(void) = ReturnVoid :
# 503| v0_39(void) = UnmodeledUse : mu*
# 503| v0_40(void) = ExitFunction :
# 506| m0_30(int) = Store : r0_28, r0_29
# 506| r0_31(glval<int>) = FieldAddress[y] : r0_26
# 506| r0_32(int) = Constant[0] :
# 506| mu0_33(int) = Store : r0_31, r0_32
# 508| r0_34(glval<int>) = VariableAddress[x1] :
# 508| r0_35(int) = Constant[1] :
# 508| m0_36(int) = Store : r0_34, r0_35
# 509| r0_37(glval<int>) = VariableAddress[x2] :
# 509| r0_38(int) = Constant[0] :
# 509| m0_39(int) = Store : r0_37, r0_38
# 510| v0_40(void) = NoOp :
# 503| v0_41(void) = ReturnVoid :
# 503| v0_42(void) = UnmodeledUse : mu*
# 503| v0_43(void) = ExitFunction :
# 512| NestedInitList(int, float) -> void
# 512| Block 0
@@ -2196,68 +2199,72 @@ ir.cpp:
# 512| r0_4(glval<float>) = VariableAddress[f] :
# 512| m0_5(float) = InitializeParameter[f] : r0_4
# 513| r0_6(glval<Rect>) = VariableAddress[r1] :
# 513| r0_7(glval<Point>) = FieldAddress[topLeft] : r0_6
# 513| r0_8(Point) = Constant[0] :
# 513| m0_9(Point) = Store : r0_7, r0_8
# 513| r0_10(glval<Point>) = FieldAddress[bottomRight] : r0_6
# 513| r0_11(Point) = Constant[0] :
# 513| mu0_12(Point) = Store : r0_10, r0_11
# 514| r0_13(glval<Rect>) = VariableAddress[r2] :
# 514| r0_14(glval<Point>) = FieldAddress[topLeft] : r0_13
# 514| r0_15(glval<int>) = FieldAddress[x] : r0_14
# 514| r0_16(glval<int>) = VariableAddress[x] :
# 514| r0_17(int) = Load : r0_16, m0_3
# 514| m0_18(int) = Store : r0_15, r0_17
# 514| r0_19(glval<int>) = FieldAddress[y] : r0_14
# 514| r0_20(glval<float>) = VariableAddress[f] :
# 514| r0_21(float) = Load : r0_20, m0_5
# 514| r0_22(int) = Convert : r0_21
# 514| mu0_23(int) = Store : r0_19, r0_22
# 514| r0_24(glval<Point>) = FieldAddress[bottomRight] : r0_13
# 514| r0_25(Point) = Constant[0] :
# 514| mu0_26(Point) = Store : r0_24, r0_25
# 515| r0_27(glval<Rect>) = VariableAddress[r3] :
# 515| r0_28(glval<Point>) = FieldAddress[topLeft] : r0_27
# 515| r0_29(glval<int>) = FieldAddress[x] : r0_28
# 515| r0_30(glval<int>) = VariableAddress[x] :
# 515| r0_31(int) = Load : r0_30, m0_3
# 515| m0_32(int) = Store : r0_29, r0_31
# 515| r0_33(glval<int>) = FieldAddress[y] : r0_28
# 515| r0_34(glval<float>) = VariableAddress[f] :
# 515| r0_35(float) = Load : r0_34, m0_5
# 515| r0_36(int) = Convert : r0_35
# 515| mu0_37(int) = Store : r0_33, r0_36
# 515| r0_38(glval<Point>) = FieldAddress[bottomRight] : r0_27
# 515| r0_39(glval<int>) = FieldAddress[x] : r0_38
# 515| r0_40(glval<int>) = VariableAddress[x] :
# 515| r0_41(int) = Load : r0_40, m0_3
# 515| mu0_42(int) = Store : r0_39, r0_41
# 515| r0_43(glval<int>) = FieldAddress[y] : r0_38
# 515| r0_44(glval<float>) = VariableAddress[f] :
# 515| r0_45(float) = Load : r0_44, m0_5
# 515| r0_46(int) = Convert : r0_45
# 515| mu0_47(int) = Store : r0_43, r0_46
# 516| r0_48(glval<Rect>) = VariableAddress[r4] :
# 516| r0_49(glval<Point>) = FieldAddress[topLeft] : r0_48
# 516| r0_50(glval<int>) = FieldAddress[x] : r0_49
# 516| r0_51(glval<int>) = VariableAddress[x] :
# 516| r0_52(int) = Load : r0_51, m0_3
# 516| m0_53(int) = Store : r0_50, r0_52
# 516| r0_54(glval<int>) = FieldAddress[y] : r0_49
# 516| r0_55(int) = Constant[0] :
# 516| mu0_56(int) = Store : r0_54, r0_55
# 516| r0_57(glval<Point>) = FieldAddress[bottomRight] : r0_48
# 516| r0_58(glval<int>) = FieldAddress[x] : r0_57
# 516| r0_59(glval<int>) = VariableAddress[x] :
# 516| r0_60(int) = Load : r0_59, m0_3
# 516| mu0_61(int) = Store : r0_58, r0_60
# 516| r0_62(glval<int>) = FieldAddress[y] : r0_57
# 516| r0_63(int) = Constant[0] :
# 516| mu0_64(int) = Store : r0_62, r0_63
# 517| v0_65(void) = NoOp :
# 512| v0_66(void) = ReturnVoid :
# 512| v0_67(void) = UnmodeledUse : mu*
# 512| v0_68(void) = ExitFunction :
# 513| m0_7(Rect) = Uninitialized : r0_6
# 513| r0_8(glval<Point>) = FieldAddress[topLeft] : r0_6
# 513| r0_9(Point) = Constant[0] :
# 513| m0_10(Point) = Store : r0_8, r0_9
# 513| r0_11(glval<Point>) = FieldAddress[bottomRight] : r0_6
# 513| r0_12(Point) = Constant[0] :
# 513| mu0_13(Point) = Store : r0_11, r0_12
# 514| r0_14(glval<Rect>) = VariableAddress[r2] :
# 514| m0_15(Rect) = Uninitialized : r0_14
# 514| r0_16(glval<Point>) = FieldAddress[topLeft] : r0_14
# 514| r0_17(glval<int>) = FieldAddress[x] : r0_16
# 514| r0_18(glval<int>) = VariableAddress[x] :
# 514| r0_19(int) = Load : r0_18, m0_3
# 514| m0_20(int) = Store : r0_17, r0_19
# 514| r0_21(glval<int>) = FieldAddress[y] : r0_16
# 514| r0_22(glval<float>) = VariableAddress[f] :
# 514| r0_23(float) = Load : r0_22, m0_5
# 514| r0_24(int) = Convert : r0_23
# 514| mu0_25(int) = Store : r0_21, r0_24
# 514| r0_26(glval<Point>) = FieldAddress[bottomRight] : r0_14
# 514| r0_27(Point) = Constant[0] :
# 514| mu0_28(Point) = Store : r0_26, r0_27
# 515| r0_29(glval<Rect>) = VariableAddress[r3] :
# 515| m0_30(Rect) = Uninitialized : r0_29
# 515| r0_31(glval<Point>) = FieldAddress[topLeft] : r0_29
# 515| r0_32(glval<int>) = FieldAddress[x] : r0_31
# 515| r0_33(glval<int>) = VariableAddress[x] :
# 515| r0_34(int) = Load : r0_33, m0_3
# 515| m0_35(int) = Store : r0_32, r0_34
# 515| r0_36(glval<int>) = FieldAddress[y] : r0_31
# 515| r0_37(glval<float>) = VariableAddress[f] :
# 515| r0_38(float) = Load : r0_37, m0_5
# 515| r0_39(int) = Convert : r0_38
# 515| mu0_40(int) = Store : r0_36, r0_39
# 515| r0_41(glval<Point>) = FieldAddress[bottomRight] : r0_29
# 515| r0_42(glval<int>) = FieldAddress[x] : r0_41
# 515| r0_43(glval<int>) = VariableAddress[x] :
# 515| r0_44(int) = Load : r0_43, m0_3
# 515| mu0_45(int) = Store : r0_42, r0_44
# 515| r0_46(glval<int>) = FieldAddress[y] : r0_41
# 515| r0_47(glval<float>) = VariableAddress[f] :
# 515| r0_48(float) = Load : r0_47, m0_5
# 515| r0_49(int) = Convert : r0_48
# 515| mu0_50(int) = Store : r0_46, r0_49
# 516| r0_51(glval<Rect>) = VariableAddress[r4] :
# 516| m0_52(Rect) = Uninitialized : r0_51
# 516| r0_53(glval<Point>) = FieldAddress[topLeft] : r0_51
# 516| r0_54(glval<int>) = FieldAddress[x] : r0_53
# 516| r0_55(glval<int>) = VariableAddress[x] :
# 516| r0_56(int) = Load : r0_55, m0_3
# 516| m0_57(int) = Store : r0_54, r0_56
# 516| r0_58(glval<int>) = FieldAddress[y] : r0_53
# 516| r0_59(int) = Constant[0] :
# 516| mu0_60(int) = Store : r0_58, r0_59
# 516| r0_61(glval<Point>) = FieldAddress[bottomRight] : r0_51
# 516| r0_62(glval<int>) = FieldAddress[x] : r0_61
# 516| r0_63(glval<int>) = VariableAddress[x] :
# 516| r0_64(int) = Load : r0_63, m0_3
# 516| mu0_65(int) = Store : r0_62, r0_64
# 516| r0_66(glval<int>) = FieldAddress[y] : r0_61
# 516| r0_67(int) = Constant[0] :
# 516| mu0_68(int) = Store : r0_66, r0_67
# 517| v0_69(void) = NoOp :
# 512| v0_70(void) = ReturnVoid :
# 512| v0_71(void) = UnmodeledUse : mu*
# 512| v0_72(void) = ExitFunction :
# 519| ArrayInit(int, float) -> void
# 519| Block 0
@@ -2268,40 +2275,43 @@ ir.cpp:
# 519| r0_4(glval<float>) = VariableAddress[f] :
# 519| m0_5(float) = InitializeParameter[f] : r0_4
# 520| r0_6(glval<int[3]>) = VariableAddress[a1] :
# 520| r0_7(int) = Constant[0] :
# 520| r0_8(glval<int>) = PointerAdd : r0_6, r0_7
# 520| r0_9(unknown[12]) = Constant[0] :
# 520| mu0_10(unknown[12]) = Store : r0_8, r0_9
# 521| r0_11(glval<int[3]>) = VariableAddress[a2] :
# 521| r0_12(int) = Constant[0] :
# 521| r0_13(glval<int>) = PointerAdd : r0_11, r0_12
# 521| r0_14(glval<int>) = VariableAddress[x] :
# 521| r0_15(int) = Load : r0_14, m0_3
# 521| mu0_16(int) = Store : r0_13, r0_15
# 521| r0_17(int) = Constant[1] :
# 521| r0_18(glval<int>) = PointerAdd : r0_11, r0_17
# 521| r0_19(glval<float>) = VariableAddress[f] :
# 521| r0_20(float) = Load : r0_19, m0_5
# 521| r0_21(int) = Convert : r0_20
# 521| mu0_22(int) = Store : r0_18, r0_21
# 521| r0_23(int) = Constant[2] :
# 521| r0_24(glval<int>) = PointerAdd : r0_11, r0_23
# 521| r0_25(int) = Constant[0] :
# 521| mu0_26(int) = Store : r0_24, r0_25
# 522| r0_27(glval<int[3]>) = VariableAddress[a3] :
# 522| r0_28(int) = Constant[0] :
# 522| r0_29(glval<int>) = PointerAdd : r0_27, r0_28
# 522| r0_30(glval<int>) = VariableAddress[x] :
# 522| r0_31(int) = Load : r0_30, m0_3
# 522| mu0_32(int) = Store : r0_29, r0_31
# 522| r0_33(int) = Constant[1] :
# 522| r0_34(glval<int>) = PointerAdd : r0_27, r0_33
# 522| r0_35(unknown[8]) = Constant[0] :
# 522| mu0_36(unknown[8]) = Store : r0_34, r0_35
# 523| v0_37(void) = NoOp :
# 519| v0_38(void) = ReturnVoid :
# 519| v0_39(void) = UnmodeledUse : mu*
# 519| v0_40(void) = ExitFunction :
# 520| mu0_7(int[3]) = Uninitialized : r0_6
# 520| r0_8(int) = Constant[0] :
# 520| r0_9(glval<int>) = PointerAdd : r0_6, r0_8
# 520| r0_10(unknown[12]) = Constant[0] :
# 520| mu0_11(unknown[12]) = Store : r0_9, r0_10
# 521| r0_12(glval<int[3]>) = VariableAddress[a2] :
# 521| mu0_13(int[3]) = Uninitialized : r0_12
# 521| r0_14(int) = Constant[0] :
# 521| r0_15(glval<int>) = PointerAdd : r0_12, r0_14
# 521| r0_16(glval<int>) = VariableAddress[x] :
# 521| r0_17(int) = Load : r0_16, m0_3
# 521| mu0_18(int) = Store : r0_15, r0_17
# 521| r0_19(int) = Constant[1] :
# 521| r0_20(glval<int>) = PointerAdd : r0_12, r0_19
# 521| r0_21(glval<float>) = VariableAddress[f] :
# 521| r0_22(float) = Load : r0_21, m0_5
# 521| r0_23(int) = Convert : r0_22
# 521| mu0_24(int) = Store : r0_20, r0_23
# 521| r0_25(int) = Constant[2] :
# 521| r0_26(glval<int>) = PointerAdd : r0_12, r0_25
# 521| r0_27(int) = Constant[0] :
# 521| mu0_28(int) = Store : r0_26, r0_27
# 522| r0_29(glval<int[3]>) = VariableAddress[a3] :
# 522| mu0_30(int[3]) = Uninitialized : r0_29
# 522| r0_31(int) = Constant[0] :
# 522| r0_32(glval<int>) = PointerAdd : r0_29, r0_31
# 522| r0_33(glval<int>) = VariableAddress[x] :
# 522| r0_34(int) = Load : r0_33, m0_3
# 522| mu0_35(int) = Store : r0_32, r0_34
# 522| r0_36(int) = Constant[1] :
# 522| r0_37(glval<int>) = PointerAdd : r0_29, r0_36
# 522| r0_38(unknown[8]) = Constant[0] :
# 522| mu0_39(unknown[8]) = Store : r0_37, r0_38
# 523| v0_40(void) = NoOp :
# 519| v0_41(void) = ReturnVoid :
# 519| v0_42(void) = UnmodeledUse : mu*
# 519| v0_43(void) = ExitFunction :
# 530| UnionInit(int, float) -> void
# 530| Block 0
@@ -2312,15 +2322,16 @@ ir.cpp:
# 530| r0_4(glval<float>) = VariableAddress[f] :
# 530| m0_5(float) = InitializeParameter[f] : r0_4
# 531| r0_6(glval<U>) = VariableAddress[u1] :
# 531| r0_7(glval<double>) = FieldAddress[d] : r0_6
# 531| r0_8(glval<float>) = VariableAddress[f] :
# 531| r0_9(float) = Load : r0_8, m0_5
# 531| r0_10(double) = Convert : r0_9
# 531| m0_11(double) = Store : r0_7, r0_10
# 533| v0_12(void) = NoOp :
# 530| v0_13(void) = ReturnVoid :
# 530| v0_14(void) = UnmodeledUse : mu*
# 530| v0_15(void) = ExitFunction :
# 531| m0_7(U) = Uninitialized : r0_6
# 531| r0_8(glval<double>) = FieldAddress[d] : r0_6
# 531| r0_9(glval<float>) = VariableAddress[f] :
# 531| r0_10(float) = Load : r0_9, m0_5
# 531| r0_11(double) = Convert : r0_10
# 531| m0_12(double) = Store : r0_8, r0_11
# 533| v0_13(void) = NoOp :
# 530| v0_14(void) = ReturnVoid :
# 530| v0_15(void) = UnmodeledUse : mu*
# 530| v0_16(void) = ExitFunction :
# 535| EarlyReturn(int, int) -> void
# 535| Block 0
@@ -2479,41 +2490,45 @@ ir.cpp:
# 575| r0_18(glval<char[2]>) = VariableAddress[b] :
# 575| m0_19(char[2]) = Uninitialized : r0_18
# 576| r0_20(glval<char[2]>) = VariableAddress[c] :
# 576| r0_21(int) = Constant[0] :
# 576| r0_22(glval<char>) = PointerAdd : r0_20, r0_21
# 576| r0_23(unknown[2]) = Constant[0] :
# 576| mu0_24(unknown[2]) = Store : r0_22, r0_23
# 577| r0_25(glval<char[2]>) = VariableAddress[d] :
# 577| r0_26(int) = Constant[0] :
# 577| r0_27(glval<char>) = PointerAdd : r0_25, r0_26
# 577| r0_28(char) = Constant[0] :
# 577| mu0_29(char) = Store : r0_27, r0_28
# 577| r0_30(int) = Constant[1] :
# 577| r0_31(glval<char>) = PointerAdd : r0_25, r0_30
# 577| r0_32(char) = Constant[0] :
# 577| mu0_33(char) = Store : r0_31, r0_32
# 578| r0_34(glval<char[2]>) = VariableAddress[e] :
# 578| r0_35(int) = Constant[0] :
# 578| r0_36(glval<char>) = PointerAdd : r0_34, r0_35
# 578| r0_37(char) = Constant[0] :
# 578| mu0_38(char) = Store : r0_36, r0_37
# 578| r0_39(int) = Constant[1] :
# 578| r0_40(glval<char>) = PointerAdd : r0_34, r0_39
# 578| r0_41(char) = Constant[1] :
# 578| mu0_42(char) = Store : r0_40, r0_41
# 579| r0_43(glval<char[3]>) = VariableAddress[f] :
# 579| r0_44(int) = Constant[0] :
# 579| r0_45(glval<char>) = PointerAdd : r0_43, r0_44
# 579| r0_46(char) = Constant[0] :
# 579| mu0_47(char) = Store : r0_45, r0_46
# 579| r0_48(int) = Constant[1] :
# 579| r0_49(glval<char>) = PointerAdd : r0_43, r0_48
# 579| r0_50(unknown[2]) = Constant[0] :
# 579| mu0_51(unknown[2]) = Store : r0_49, r0_50
# 580| v0_52(void) = NoOp :
# 571| v0_53(void) = ReturnVoid :
# 571| v0_54(void) = UnmodeledUse : mu*
# 571| v0_55(void) = ExitFunction :
# 576| mu0_21(char[2]) = Uninitialized : r0_20
# 576| r0_22(int) = Constant[0] :
# 576| r0_23(glval<char>) = PointerAdd : r0_20, r0_22
# 576| r0_24(unknown[2]) = Constant[0] :
# 576| mu0_25(unknown[2]) = Store : r0_23, r0_24
# 577| r0_26(glval<char[2]>) = VariableAddress[d] :
# 577| mu0_27(char[2]) = Uninitialized : r0_26
# 577| r0_28(int) = Constant[0] :
# 577| r0_29(glval<char>) = PointerAdd : r0_26, r0_28
# 577| r0_30(char) = Constant[0] :
# 577| mu0_31(char) = Store : r0_29, r0_30
# 577| r0_32(int) = Constant[1] :
# 577| r0_33(glval<char>) = PointerAdd : r0_26, r0_32
# 577| r0_34(char) = Constant[0] :
# 577| mu0_35(char) = Store : r0_33, r0_34
# 578| r0_36(glval<char[2]>) = VariableAddress[e] :
# 578| mu0_37(char[2]) = Uninitialized : r0_36
# 578| r0_38(int) = Constant[0] :
# 578| r0_39(glval<char>) = PointerAdd : r0_36, r0_38
# 578| r0_40(char) = Constant[0] :
# 578| mu0_41(char) = Store : r0_39, r0_40
# 578| r0_42(int) = Constant[1] :
# 578| r0_43(glval<char>) = PointerAdd : r0_36, r0_42
# 578| r0_44(char) = Constant[1] :
# 578| mu0_45(char) = Store : r0_43, r0_44
# 579| r0_46(glval<char[3]>) = VariableAddress[f] :
# 579| mu0_47(char[3]) = Uninitialized : r0_46
# 579| r0_48(int) = Constant[0] :
# 579| r0_49(glval<char>) = PointerAdd : r0_46, r0_48
# 579| r0_50(char) = Constant[0] :
# 579| mu0_51(char) = Store : r0_49, r0_50
# 579| r0_52(int) = Constant[1] :
# 579| r0_53(glval<char>) = PointerAdd : r0_46, r0_52
# 579| r0_54(unknown[2]) = Constant[0] :
# 579| mu0_55(unknown[2]) = Store : r0_53, r0_54
# 580| v0_56(void) = NoOp :
# 571| v0_57(void) = ReturnVoid :
# 571| v0_58(void) = UnmodeledUse : mu*
# 571| v0_59(void) = ExitFunction :
# 584| VarArgs() -> void
# 584| Block 0
@@ -3912,10 +3927,11 @@ ir.cpp:
# 961| v0_0(void) = EnterFunction :
# 961| mu0_1(unknown) = UnmodeledDefinition :
# 962| r0_2(glval<int[1000]>) = VariableAddress[a1] :
# 962| r0_3(int) = Constant[0] :
# 962| r0_4(glval<int>) = PointerAdd : r0_2, r0_3
# 962| r0_5(unknown[8]) = Constant[0] :
# 962| mu0_6(unknown[8]) = Store : r0_4, r0_5
# 962| mu0_3(int[1000]) = Uninitialized : r0_2
# 962| r0_4(int) = Constant[0] :
# 962| r0_5(glval<int>) = PointerAdd : r0_2, r0_4
# 962| r0_6(unknown[8]) = Constant[0] :
# 962| mu0_7(unknown[8]) = Store : r0_5, r0_6
#-----| Goto -> Block 2
# 962| Block 1

View File

@@ -2135,40 +2135,43 @@ ir.cpp:
# 503| r0_4(glval<float>) = VariableAddress[f] :
# 503| mu0_5(float) = InitializeParameter[f] : r0_4
# 504| r0_6(glval<Point>) = VariableAddress[pt1] :
# 504| r0_7(glval<int>) = FieldAddress[x] : r0_6
# 504| r0_8(glval<int>) = VariableAddress[x] :
# 504| r0_9(int) = Load : r0_8, mu0_1
# 504| mu0_10(int) = Store : r0_7, r0_9
# 504| r0_11(glval<int>) = FieldAddress[y] : r0_6
# 504| r0_12(glval<float>) = VariableAddress[f] :
# 504| r0_13(float) = Load : r0_12, mu0_1
# 504| r0_14(int) = Convert : r0_13
# 504| mu0_15(int) = Store : r0_11, r0_14
# 505| r0_16(glval<Point>) = VariableAddress[pt2] :
# 505| r0_17(glval<int>) = FieldAddress[x] : r0_16
# 505| r0_18(glval<int>) = VariableAddress[x] :
# 505| r0_19(int) = Load : r0_18, mu0_1
# 505| mu0_20(int) = Store : r0_17, r0_19
# 505| r0_21(glval<int>) = FieldAddress[y] : r0_16
# 505| r0_22(int) = Constant[0] :
# 505| mu0_23(int) = Store : r0_21, r0_22
# 506| r0_24(glval<Point>) = VariableAddress[pt3] :
# 506| r0_25(glval<int>) = FieldAddress[x] : r0_24
# 506| r0_26(int) = Constant[0] :
# 506| mu0_27(int) = Store : r0_25, r0_26
# 506| r0_28(glval<int>) = FieldAddress[y] : r0_24
# 504| mu0_7(Point) = Uninitialized : r0_6
# 504| r0_8(glval<int>) = FieldAddress[x] : r0_6
# 504| r0_9(glval<int>) = VariableAddress[x] :
# 504| r0_10(int) = Load : r0_9, mu0_1
# 504| mu0_11(int) = Store : r0_8, r0_10
# 504| r0_12(glval<int>) = FieldAddress[y] : r0_6
# 504| r0_13(glval<float>) = VariableAddress[f] :
# 504| r0_14(float) = Load : r0_13, mu0_1
# 504| r0_15(int) = Convert : r0_14
# 504| mu0_16(int) = Store : r0_12, r0_15
# 505| r0_17(glval<Point>) = VariableAddress[pt2] :
# 505| mu0_18(Point) = Uninitialized : r0_17
# 505| r0_19(glval<int>) = FieldAddress[x] : r0_17
# 505| r0_20(glval<int>) = VariableAddress[x] :
# 505| r0_21(int) = Load : r0_20, mu0_1
# 505| mu0_22(int) = Store : r0_19, r0_21
# 505| r0_23(glval<int>) = FieldAddress[y] : r0_17
# 505| r0_24(int) = Constant[0] :
# 505| mu0_25(int) = Store : r0_23, r0_24
# 506| r0_26(glval<Point>) = VariableAddress[pt3] :
# 506| mu0_27(Point) = Uninitialized : r0_26
# 506| r0_28(glval<int>) = FieldAddress[x] : r0_26
# 506| r0_29(int) = Constant[0] :
# 506| mu0_30(int) = Store : r0_28, r0_29
# 508| r0_31(glval<int>) = VariableAddress[x1] :
# 508| r0_32(int) = Constant[1] :
# 508| mu0_33(int) = Store : r0_31, r0_32
# 509| r0_34(glval<int>) = VariableAddress[x2] :
# 509| r0_35(int) = Constant[0] :
# 509| mu0_36(int) = Store : r0_34, r0_35
# 510| v0_37(void) = NoOp :
# 503| v0_38(void) = ReturnVoid :
# 503| v0_39(void) = UnmodeledUse : mu*
# 503| v0_40(void) = ExitFunction :
# 506| r0_31(glval<int>) = FieldAddress[y] : r0_26
# 506| r0_32(int) = Constant[0] :
# 506| mu0_33(int) = Store : r0_31, r0_32
# 508| r0_34(glval<int>) = VariableAddress[x1] :
# 508| r0_35(int) = Constant[1] :
# 508| mu0_36(int) = Store : r0_34, r0_35
# 509| r0_37(glval<int>) = VariableAddress[x2] :
# 509| r0_38(int) = Constant[0] :
# 509| mu0_39(int) = Store : r0_37, r0_38
# 510| v0_40(void) = NoOp :
# 503| v0_41(void) = ReturnVoid :
# 503| v0_42(void) = UnmodeledUse : mu*
# 503| v0_43(void) = ExitFunction :
# 512| NestedInitList(int, float) -> void
# 512| Block 0
@@ -2179,68 +2182,72 @@ ir.cpp:
# 512| r0_4(glval<float>) = VariableAddress[f] :
# 512| mu0_5(float) = InitializeParameter[f] : r0_4
# 513| r0_6(glval<Rect>) = VariableAddress[r1] :
# 513| r0_7(glval<Point>) = FieldAddress[topLeft] : r0_6
# 513| r0_8(Point) = Constant[0] :
# 513| mu0_9(Point) = Store : r0_7, r0_8
# 513| r0_10(glval<Point>) = FieldAddress[bottomRight] : r0_6
# 513| r0_11(Point) = Constant[0] :
# 513| mu0_12(Point) = Store : r0_10, r0_11
# 514| r0_13(glval<Rect>) = VariableAddress[r2] :
# 514| r0_14(glval<Point>) = FieldAddress[topLeft] : r0_13
# 514| r0_15(glval<int>) = FieldAddress[x] : r0_14
# 514| r0_16(glval<int>) = VariableAddress[x] :
# 514| r0_17(int) = Load : r0_16, mu0_1
# 514| mu0_18(int) = Store : r0_15, r0_17
# 514| r0_19(glval<int>) = FieldAddress[y] : r0_14
# 514| r0_20(glval<float>) = VariableAddress[f] :
# 514| r0_21(float) = Load : r0_20, mu0_1
# 514| r0_22(int) = Convert : r0_21
# 514| mu0_23(int) = Store : r0_19, r0_22
# 514| r0_24(glval<Point>) = FieldAddress[bottomRight] : r0_13
# 514| r0_25(Point) = Constant[0] :
# 514| mu0_26(Point) = Store : r0_24, r0_25
# 515| r0_27(glval<Rect>) = VariableAddress[r3] :
# 515| r0_28(glval<Point>) = FieldAddress[topLeft] : r0_27
# 515| r0_29(glval<int>) = FieldAddress[x] : r0_28
# 515| r0_30(glval<int>) = VariableAddress[x] :
# 515| r0_31(int) = Load : r0_30, mu0_1
# 515| mu0_32(int) = Store : r0_29, r0_31
# 515| r0_33(glval<int>) = FieldAddress[y] : r0_28
# 515| r0_34(glval<float>) = VariableAddress[f] :
# 515| r0_35(float) = Load : r0_34, mu0_1
# 515| r0_36(int) = Convert : r0_35
# 515| mu0_37(int) = Store : r0_33, r0_36
# 515| r0_38(glval<Point>) = FieldAddress[bottomRight] : r0_27
# 515| r0_39(glval<int>) = FieldAddress[x] : r0_38
# 515| r0_40(glval<int>) = VariableAddress[x] :
# 515| r0_41(int) = Load : r0_40, mu0_1
# 515| mu0_42(int) = Store : r0_39, r0_41
# 515| r0_43(glval<int>) = FieldAddress[y] : r0_38
# 515| r0_44(glval<float>) = VariableAddress[f] :
# 515| r0_45(float) = Load : r0_44, mu0_1
# 515| r0_46(int) = Convert : r0_45
# 515| mu0_47(int) = Store : r0_43, r0_46
# 516| r0_48(glval<Rect>) = VariableAddress[r4] :
# 516| r0_49(glval<Point>) = FieldAddress[topLeft] : r0_48
# 516| r0_50(glval<int>) = FieldAddress[x] : r0_49
# 516| r0_51(glval<int>) = VariableAddress[x] :
# 516| r0_52(int) = Load : r0_51, mu0_1
# 516| mu0_53(int) = Store : r0_50, r0_52
# 516| r0_54(glval<int>) = FieldAddress[y] : r0_49
# 516| r0_55(int) = Constant[0] :
# 516| mu0_56(int) = Store : r0_54, r0_55
# 516| r0_57(glval<Point>) = FieldAddress[bottomRight] : r0_48
# 516| r0_58(glval<int>) = FieldAddress[x] : r0_57
# 516| r0_59(glval<int>) = VariableAddress[x] :
# 516| r0_60(int) = Load : r0_59, mu0_1
# 516| mu0_61(int) = Store : r0_58, r0_60
# 516| r0_62(glval<int>) = FieldAddress[y] : r0_57
# 516| r0_63(int) = Constant[0] :
# 516| mu0_64(int) = Store : r0_62, r0_63
# 517| v0_65(void) = NoOp :
# 512| v0_66(void) = ReturnVoid :
# 512| v0_67(void) = UnmodeledUse : mu*
# 512| v0_68(void) = ExitFunction :
# 513| mu0_7(Rect) = Uninitialized : r0_6
# 513| r0_8(glval<Point>) = FieldAddress[topLeft] : r0_6
# 513| r0_9(Point) = Constant[0] :
# 513| mu0_10(Point) = Store : r0_8, r0_9
# 513| r0_11(glval<Point>) = FieldAddress[bottomRight] : r0_6
# 513| r0_12(Point) = Constant[0] :
# 513| mu0_13(Point) = Store : r0_11, r0_12
# 514| r0_14(glval<Rect>) = VariableAddress[r2] :
# 514| mu0_15(Rect) = Uninitialized : r0_14
# 514| r0_16(glval<Point>) = FieldAddress[topLeft] : r0_14
# 514| r0_17(glval<int>) = FieldAddress[x] : r0_16
# 514| r0_18(glval<int>) = VariableAddress[x] :
# 514| r0_19(int) = Load : r0_18, mu0_1
# 514| mu0_20(int) = Store : r0_17, r0_19
# 514| r0_21(glval<int>) = FieldAddress[y] : r0_16
# 514| r0_22(glval<float>) = VariableAddress[f] :
# 514| r0_23(float) = Load : r0_22, mu0_1
# 514| r0_24(int) = Convert : r0_23
# 514| mu0_25(int) = Store : r0_21, r0_24
# 514| r0_26(glval<Point>) = FieldAddress[bottomRight] : r0_14
# 514| r0_27(Point) = Constant[0] :
# 514| mu0_28(Point) = Store : r0_26, r0_27
# 515| r0_29(glval<Rect>) = VariableAddress[r3] :
# 515| mu0_30(Rect) = Uninitialized : r0_29
# 515| r0_31(glval<Point>) = FieldAddress[topLeft] : r0_29
# 515| r0_32(glval<int>) = FieldAddress[x] : r0_31
# 515| r0_33(glval<int>) = VariableAddress[x] :
# 515| r0_34(int) = Load : r0_33, mu0_1
# 515| mu0_35(int) = Store : r0_32, r0_34
# 515| r0_36(glval<int>) = FieldAddress[y] : r0_31
# 515| r0_37(glval<float>) = VariableAddress[f] :
# 515| r0_38(float) = Load : r0_37, mu0_1
# 515| r0_39(int) = Convert : r0_38
# 515| mu0_40(int) = Store : r0_36, r0_39
# 515| r0_41(glval<Point>) = FieldAddress[bottomRight] : r0_29
# 515| r0_42(glval<int>) = FieldAddress[x] : r0_41
# 515| r0_43(glval<int>) = VariableAddress[x] :
# 515| r0_44(int) = Load : r0_43, mu0_1
# 515| mu0_45(int) = Store : r0_42, r0_44
# 515| r0_46(glval<int>) = FieldAddress[y] : r0_41
# 515| r0_47(glval<float>) = VariableAddress[f] :
# 515| r0_48(float) = Load : r0_47, mu0_1
# 515| r0_49(int) = Convert : r0_48
# 515| mu0_50(int) = Store : r0_46, r0_49
# 516| r0_51(glval<Rect>) = VariableAddress[r4] :
# 516| mu0_52(Rect) = Uninitialized : r0_51
# 516| r0_53(glval<Point>) = FieldAddress[topLeft] : r0_51
# 516| r0_54(glval<int>) = FieldAddress[x] : r0_53
# 516| r0_55(glval<int>) = VariableAddress[x] :
# 516| r0_56(int) = Load : r0_55, mu0_1
# 516| mu0_57(int) = Store : r0_54, r0_56
# 516| r0_58(glval<int>) = FieldAddress[y] : r0_53
# 516| r0_59(int) = Constant[0] :
# 516| mu0_60(int) = Store : r0_58, r0_59
# 516| r0_61(glval<Point>) = FieldAddress[bottomRight] : r0_51
# 516| r0_62(glval<int>) = FieldAddress[x] : r0_61
# 516| r0_63(glval<int>) = VariableAddress[x] :
# 516| r0_64(int) = Load : r0_63, mu0_1
# 516| mu0_65(int) = Store : r0_62, r0_64
# 516| r0_66(glval<int>) = FieldAddress[y] : r0_61
# 516| r0_67(int) = Constant[0] :
# 516| mu0_68(int) = Store : r0_66, r0_67
# 517| v0_69(void) = NoOp :
# 512| v0_70(void) = ReturnVoid :
# 512| v0_71(void) = UnmodeledUse : mu*
# 512| v0_72(void) = ExitFunction :
# 519| ArrayInit(int, float) -> void
# 519| Block 0
@@ -2251,40 +2258,43 @@ ir.cpp:
# 519| r0_4(glval<float>) = VariableAddress[f] :
# 519| mu0_5(float) = InitializeParameter[f] : r0_4
# 520| r0_6(glval<int[3]>) = VariableAddress[a1] :
# 520| r0_7(int) = Constant[0] :
# 520| r0_8(glval<int>) = PointerAdd : r0_6, r0_7
# 520| r0_9(unknown[12]) = Constant[0] :
# 520| mu0_10(unknown[12]) = Store : r0_8, r0_9
# 521| r0_11(glval<int[3]>) = VariableAddress[a2] :
# 521| r0_12(int) = Constant[0] :
# 521| r0_13(glval<int>) = PointerAdd : r0_11, r0_12
# 521| r0_14(glval<int>) = VariableAddress[x] :
# 521| r0_15(int) = Load : r0_14, mu0_1
# 521| mu0_16(int) = Store : r0_13, r0_15
# 521| r0_17(int) = Constant[1] :
# 521| r0_18(glval<int>) = PointerAdd : r0_11, r0_17
# 521| r0_19(glval<float>) = VariableAddress[f] :
# 521| r0_20(float) = Load : r0_19, mu0_1
# 521| r0_21(int) = Convert : r0_20
# 521| mu0_22(int) = Store : r0_18, r0_21
# 521| r0_23(int) = Constant[2] :
# 521| r0_24(glval<int>) = PointerAdd : r0_11, r0_23
# 521| r0_25(int) = Constant[0] :
# 521| mu0_26(int) = Store : r0_24, r0_25
# 522| r0_27(glval<int[3]>) = VariableAddress[a3] :
# 522| r0_28(int) = Constant[0] :
# 522| r0_29(glval<int>) = PointerAdd : r0_27, r0_28
# 522| r0_30(glval<int>) = VariableAddress[x] :
# 522| r0_31(int) = Load : r0_30, mu0_1
# 522| mu0_32(int) = Store : r0_29, r0_31
# 522| r0_33(int) = Constant[1] :
# 522| r0_34(glval<int>) = PointerAdd : r0_27, r0_33
# 522| r0_35(unknown[8]) = Constant[0] :
# 522| mu0_36(unknown[8]) = Store : r0_34, r0_35
# 523| v0_37(void) = NoOp :
# 519| v0_38(void) = ReturnVoid :
# 519| v0_39(void) = UnmodeledUse : mu*
# 519| v0_40(void) = ExitFunction :
# 520| mu0_7(int[3]) = Uninitialized : r0_6
# 520| r0_8(int) = Constant[0] :
# 520| r0_9(glval<int>) = PointerAdd : r0_6, r0_8
# 520| r0_10(unknown[12]) = Constant[0] :
# 520| mu0_11(unknown[12]) = Store : r0_9, r0_10
# 521| r0_12(glval<int[3]>) = VariableAddress[a2] :
# 521| mu0_13(int[3]) = Uninitialized : r0_12
# 521| r0_14(int) = Constant[0] :
# 521| r0_15(glval<int>) = PointerAdd : r0_12, r0_14
# 521| r0_16(glval<int>) = VariableAddress[x] :
# 521| r0_17(int) = Load : r0_16, mu0_1
# 521| mu0_18(int) = Store : r0_15, r0_17
# 521| r0_19(int) = Constant[1] :
# 521| r0_20(glval<int>) = PointerAdd : r0_12, r0_19
# 521| r0_21(glval<float>) = VariableAddress[f] :
# 521| r0_22(float) = Load : r0_21, mu0_1
# 521| r0_23(int) = Convert : r0_22
# 521| mu0_24(int) = Store : r0_20, r0_23
# 521| r0_25(int) = Constant[2] :
# 521| r0_26(glval<int>) = PointerAdd : r0_12, r0_25
# 521| r0_27(int) = Constant[0] :
# 521| mu0_28(int) = Store : r0_26, r0_27
# 522| r0_29(glval<int[3]>) = VariableAddress[a3] :
# 522| mu0_30(int[3]) = Uninitialized : r0_29
# 522| r0_31(int) = Constant[0] :
# 522| r0_32(glval<int>) = PointerAdd : r0_29, r0_31
# 522| r0_33(glval<int>) = VariableAddress[x] :
# 522| r0_34(int) = Load : r0_33, mu0_1
# 522| mu0_35(int) = Store : r0_32, r0_34
# 522| r0_36(int) = Constant[1] :
# 522| r0_37(glval<int>) = PointerAdd : r0_29, r0_36
# 522| r0_38(unknown[8]) = Constant[0] :
# 522| mu0_39(unknown[8]) = Store : r0_37, r0_38
# 523| v0_40(void) = NoOp :
# 519| v0_41(void) = ReturnVoid :
# 519| v0_42(void) = UnmodeledUse : mu*
# 519| v0_43(void) = ExitFunction :
# 530| UnionInit(int, float) -> void
# 530| Block 0
@@ -2295,15 +2305,16 @@ ir.cpp:
# 530| r0_4(glval<float>) = VariableAddress[f] :
# 530| mu0_5(float) = InitializeParameter[f] : r0_4
# 531| r0_6(glval<U>) = VariableAddress[u1] :
# 531| r0_7(glval<double>) = FieldAddress[d] : r0_6
# 531| r0_8(glval<float>) = VariableAddress[f] :
# 531| r0_9(float) = Load : r0_8, mu0_1
# 531| r0_10(double) = Convert : r0_9
# 531| mu0_11(double) = Store : r0_7, r0_10
# 533| v0_12(void) = NoOp :
# 530| v0_13(void) = ReturnVoid :
# 530| v0_14(void) = UnmodeledUse : mu*
# 530| v0_15(void) = ExitFunction :
# 531| mu0_7(U) = Uninitialized : r0_6
# 531| r0_8(glval<double>) = FieldAddress[d] : r0_6
# 531| r0_9(glval<float>) = VariableAddress[f] :
# 531| r0_10(float) = Load : r0_9, mu0_1
# 531| r0_11(double) = Convert : r0_10
# 531| mu0_12(double) = Store : r0_8, r0_11
# 533| v0_13(void) = NoOp :
# 530| v0_14(void) = ReturnVoid :
# 530| v0_15(void) = UnmodeledUse : mu*
# 530| v0_16(void) = ExitFunction :
# 535| EarlyReturn(int, int) -> void
# 535| Block 0
@@ -2460,41 +2471,45 @@ ir.cpp:
# 575| r0_18(glval<char[2]>) = VariableAddress[b] :
# 575| mu0_19(char[2]) = Uninitialized : r0_18
# 576| r0_20(glval<char[2]>) = VariableAddress[c] :
# 576| r0_21(int) = Constant[0] :
# 576| r0_22(glval<char>) = PointerAdd : r0_20, r0_21
# 576| r0_23(unknown[2]) = Constant[0] :
# 576| mu0_24(unknown[2]) = Store : r0_22, r0_23
# 577| r0_25(glval<char[2]>) = VariableAddress[d] :
# 577| r0_26(int) = Constant[0] :
# 577| r0_27(glval<char>) = PointerAdd : r0_25, r0_26
# 577| r0_28(char) = Constant[0] :
# 577| mu0_29(char) = Store : r0_27, r0_28
# 577| r0_30(int) = Constant[1] :
# 577| r0_31(glval<char>) = PointerAdd : r0_25, r0_30
# 577| r0_32(char) = Constant[0] :
# 577| mu0_33(char) = Store : r0_31, r0_32
# 578| r0_34(glval<char[2]>) = VariableAddress[e] :
# 578| r0_35(int) = Constant[0] :
# 578| r0_36(glval<char>) = PointerAdd : r0_34, r0_35
# 578| r0_37(char) = Constant[0] :
# 578| mu0_38(char) = Store : r0_36, r0_37
# 578| r0_39(int) = Constant[1] :
# 578| r0_40(glval<char>) = PointerAdd : r0_34, r0_39
# 578| r0_41(char) = Constant[1] :
# 578| mu0_42(char) = Store : r0_40, r0_41
# 579| r0_43(glval<char[3]>) = VariableAddress[f] :
# 579| r0_44(int) = Constant[0] :
# 579| r0_45(glval<char>) = PointerAdd : r0_43, r0_44
# 579| r0_46(char) = Constant[0] :
# 579| mu0_47(char) = Store : r0_45, r0_46
# 579| r0_48(int) = Constant[1] :
# 579| r0_49(glval<char>) = PointerAdd : r0_43, r0_48
# 579| r0_50(unknown[2]) = Constant[0] :
# 579| mu0_51(unknown[2]) = Store : r0_49, r0_50
# 580| v0_52(void) = NoOp :
# 571| v0_53(void) = ReturnVoid :
# 571| v0_54(void) = UnmodeledUse : mu*
# 571| v0_55(void) = ExitFunction :
# 576| mu0_21(char[2]) = Uninitialized : r0_20
# 576| r0_22(int) = Constant[0] :
# 576| r0_23(glval<char>) = PointerAdd : r0_20, r0_22
# 576| r0_24(unknown[2]) = Constant[0] :
# 576| mu0_25(unknown[2]) = Store : r0_23, r0_24
# 577| r0_26(glval<char[2]>) = VariableAddress[d] :
# 577| mu0_27(char[2]) = Uninitialized : r0_26
# 577| r0_28(int) = Constant[0] :
# 577| r0_29(glval<char>) = PointerAdd : r0_26, r0_28
# 577| r0_30(char) = Constant[0] :
# 577| mu0_31(char) = Store : r0_29, r0_30
# 577| r0_32(int) = Constant[1] :
# 577| r0_33(glval<char>) = PointerAdd : r0_26, r0_32
# 577| r0_34(char) = Constant[0] :
# 577| mu0_35(char) = Store : r0_33, r0_34
# 578| r0_36(glval<char[2]>) = VariableAddress[e] :
# 578| mu0_37(char[2]) = Uninitialized : r0_36
# 578| r0_38(int) = Constant[0] :
# 578| r0_39(glval<char>) = PointerAdd : r0_36, r0_38
# 578| r0_40(char) = Constant[0] :
# 578| mu0_41(char) = Store : r0_39, r0_40
# 578| r0_42(int) = Constant[1] :
# 578| r0_43(glval<char>) = PointerAdd : r0_36, r0_42
# 578| r0_44(char) = Constant[1] :
# 578| mu0_45(char) = Store : r0_43, r0_44
# 579| r0_46(glval<char[3]>) = VariableAddress[f] :
# 579| mu0_47(char[3]) = Uninitialized : r0_46
# 579| r0_48(int) = Constant[0] :
# 579| r0_49(glval<char>) = PointerAdd : r0_46, r0_48
# 579| r0_50(char) = Constant[0] :
# 579| mu0_51(char) = Store : r0_49, r0_50
# 579| r0_52(int) = Constant[1] :
# 579| r0_53(glval<char>) = PointerAdd : r0_46, r0_52
# 579| r0_54(unknown[2]) = Constant[0] :
# 579| mu0_55(unknown[2]) = Store : r0_53, r0_54
# 580| v0_56(void) = NoOp :
# 571| v0_57(void) = ReturnVoid :
# 571| v0_58(void) = UnmodeledUse : mu*
# 571| v0_59(void) = ExitFunction :
# 584| VarArgs() -> void
# 584| Block 0
@@ -3891,10 +3906,11 @@ ir.cpp:
# 961| v0_0(void) = EnterFunction :
# 961| mu0_1(unknown) = UnmodeledDefinition :
# 962| r0_2(glval<int[1000]>) = VariableAddress[a1] :
# 962| r0_3(int) = Constant[0] :
# 962| r0_4(glval<int>) = PointerAdd : r0_2, r0_3
# 962| r0_5(unknown[8]) = Constant[0] :
# 962| mu0_6(unknown[8]) = Store : r0_4, r0_5
# 962| mu0_3(int[1000]) = Uninitialized : r0_2
# 962| r0_4(int) = Constant[0] :
# 962| r0_5(glval<int>) = PointerAdd : r0_2, r0_4
# 962| r0_6(unknown[8]) = Constant[0] :
# 962| mu0_7(unknown[8]) = Store : r0_5, r0_6
#-----| Goto -> Block 2
# 962| Block 1

View File

@@ -2152,40 +2152,43 @@ ir.cpp:
# 503| r0_4(glval<float>) = VariableAddress[f] :
# 503| m0_5(float) = InitializeParameter[f] : r0_4
# 504| r0_6(glval<Point>) = VariableAddress[pt1] :
# 504| r0_7(glval<int>) = FieldAddress[x] : r0_6
# 504| r0_8(glval<int>) = VariableAddress[x] :
# 504| r0_9(int) = Load : r0_8, m0_3
# 504| m0_10(int) = Store : r0_7, r0_9
# 504| r0_11(glval<int>) = FieldAddress[y] : r0_6
# 504| r0_12(glval<float>) = VariableAddress[f] :
# 504| r0_13(float) = Load : r0_12, m0_5
# 504| r0_14(int) = Convert : r0_13
# 504| mu0_15(int) = Store : r0_11, r0_14
# 505| r0_16(glval<Point>) = VariableAddress[pt2] :
# 505| r0_17(glval<int>) = FieldAddress[x] : r0_16
# 505| r0_18(glval<int>) = VariableAddress[x] :
# 505| r0_19(int) = Load : r0_18, m0_3
# 505| m0_20(int) = Store : r0_17, r0_19
# 505| r0_21(glval<int>) = FieldAddress[y] : r0_16
# 505| r0_22(int) = Constant[0] :
# 505| mu0_23(int) = Store : r0_21, r0_22
# 506| r0_24(glval<Point>) = VariableAddress[pt3] :
# 506| r0_25(glval<int>) = FieldAddress[x] : r0_24
# 506| r0_26(int) = Constant[0] :
# 506| m0_27(int) = Store : r0_25, r0_26
# 506| r0_28(glval<int>) = FieldAddress[y] : r0_24
# 504| m0_7(Point) = Uninitialized : r0_6
# 504| r0_8(glval<int>) = FieldAddress[x] : r0_6
# 504| r0_9(glval<int>) = VariableAddress[x] :
# 504| r0_10(int) = Load : r0_9, m0_3
# 504| m0_11(int) = Store : r0_8, r0_10
# 504| r0_12(glval<int>) = FieldAddress[y] : r0_6
# 504| r0_13(glval<float>) = VariableAddress[f] :
# 504| r0_14(float) = Load : r0_13, m0_5
# 504| r0_15(int) = Convert : r0_14
# 504| mu0_16(int) = Store : r0_12, r0_15
# 505| r0_17(glval<Point>) = VariableAddress[pt2] :
# 505| m0_18(Point) = Uninitialized : r0_17
# 505| r0_19(glval<int>) = FieldAddress[x] : r0_17
# 505| r0_20(glval<int>) = VariableAddress[x] :
# 505| r0_21(int) = Load : r0_20, m0_3
# 505| m0_22(int) = Store : r0_19, r0_21
# 505| r0_23(glval<int>) = FieldAddress[y] : r0_17
# 505| r0_24(int) = Constant[0] :
# 505| mu0_25(int) = Store : r0_23, r0_24
# 506| r0_26(glval<Point>) = VariableAddress[pt3] :
# 506| m0_27(Point) = Uninitialized : r0_26
# 506| r0_28(glval<int>) = FieldAddress[x] : r0_26
# 506| r0_29(int) = Constant[0] :
# 506| mu0_30(int) = Store : r0_28, r0_29
# 508| r0_31(glval<int>) = VariableAddress[x1] :
# 508| r0_32(int) = Constant[1] :
# 508| m0_33(int) = Store : r0_31, r0_32
# 509| r0_34(glval<int>) = VariableAddress[x2] :
# 509| r0_35(int) = Constant[0] :
# 509| m0_36(int) = Store : r0_34, r0_35
# 510| v0_37(void) = NoOp :
# 503| v0_38(void) = ReturnVoid :
# 503| v0_39(void) = UnmodeledUse : mu*
# 503| v0_40(void) = ExitFunction :
# 506| m0_30(int) = Store : r0_28, r0_29
# 506| r0_31(glval<int>) = FieldAddress[y] : r0_26
# 506| r0_32(int) = Constant[0] :
# 506| mu0_33(int) = Store : r0_31, r0_32
# 508| r0_34(glval<int>) = VariableAddress[x1] :
# 508| r0_35(int) = Constant[1] :
# 508| m0_36(int) = Store : r0_34, r0_35
# 509| r0_37(glval<int>) = VariableAddress[x2] :
# 509| r0_38(int) = Constant[0] :
# 509| m0_39(int) = Store : r0_37, r0_38
# 510| v0_40(void) = NoOp :
# 503| v0_41(void) = ReturnVoid :
# 503| v0_42(void) = UnmodeledUse : mu*
# 503| v0_43(void) = ExitFunction :
# 512| NestedInitList(int, float) -> void
# 512| Block 0
@@ -2196,68 +2199,72 @@ ir.cpp:
# 512| r0_4(glval<float>) = VariableAddress[f] :
# 512| m0_5(float) = InitializeParameter[f] : r0_4
# 513| r0_6(glval<Rect>) = VariableAddress[r1] :
# 513| r0_7(glval<Point>) = FieldAddress[topLeft] : r0_6
# 513| r0_8(Point) = Constant[0] :
# 513| m0_9(Point) = Store : r0_7, r0_8
# 513| r0_10(glval<Point>) = FieldAddress[bottomRight] : r0_6
# 513| r0_11(Point) = Constant[0] :
# 513| mu0_12(Point) = Store : r0_10, r0_11
# 514| r0_13(glval<Rect>) = VariableAddress[r2] :
# 514| r0_14(glval<Point>) = FieldAddress[topLeft] : r0_13
# 514| r0_15(glval<int>) = FieldAddress[x] : r0_14
# 514| r0_16(glval<int>) = VariableAddress[x] :
# 514| r0_17(int) = Load : r0_16, m0_3
# 514| m0_18(int) = Store : r0_15, r0_17
# 514| r0_19(glval<int>) = FieldAddress[y] : r0_14
# 514| r0_20(glval<float>) = VariableAddress[f] :
# 514| r0_21(float) = Load : r0_20, m0_5
# 514| r0_22(int) = Convert : r0_21
# 514| mu0_23(int) = Store : r0_19, r0_22
# 514| r0_24(glval<Point>) = FieldAddress[bottomRight] : r0_13
# 514| r0_25(Point) = Constant[0] :
# 514| mu0_26(Point) = Store : r0_24, r0_25
# 515| r0_27(glval<Rect>) = VariableAddress[r3] :
# 515| r0_28(glval<Point>) = FieldAddress[topLeft] : r0_27
# 515| r0_29(glval<int>) = FieldAddress[x] : r0_28
# 515| r0_30(glval<int>) = VariableAddress[x] :
# 515| r0_31(int) = Load : r0_30, m0_3
# 515| m0_32(int) = Store : r0_29, r0_31
# 515| r0_33(glval<int>) = FieldAddress[y] : r0_28
# 515| r0_34(glval<float>) = VariableAddress[f] :
# 515| r0_35(float) = Load : r0_34, m0_5
# 515| r0_36(int) = Convert : r0_35
# 515| mu0_37(int) = Store : r0_33, r0_36
# 515| r0_38(glval<Point>) = FieldAddress[bottomRight] : r0_27
# 515| r0_39(glval<int>) = FieldAddress[x] : r0_38
# 515| r0_40(glval<int>) = VariableAddress[x] :
# 515| r0_41(int) = Load : r0_40, m0_3
# 515| mu0_42(int) = Store : r0_39, r0_41
# 515| r0_43(glval<int>) = FieldAddress[y] : r0_38
# 515| r0_44(glval<float>) = VariableAddress[f] :
# 515| r0_45(float) = Load : r0_44, m0_5
# 515| r0_46(int) = Convert : r0_45
# 515| mu0_47(int) = Store : r0_43, r0_46
# 516| r0_48(glval<Rect>) = VariableAddress[r4] :
# 516| r0_49(glval<Point>) = FieldAddress[topLeft] : r0_48
# 516| r0_50(glval<int>) = FieldAddress[x] : r0_49
# 516| r0_51(glval<int>) = VariableAddress[x] :
# 516| r0_52(int) = Load : r0_51, m0_3
# 516| m0_53(int) = Store : r0_50, r0_52
# 516| r0_54(glval<int>) = FieldAddress[y] : r0_49
# 516| r0_55(int) = Constant[0] :
# 516| mu0_56(int) = Store : r0_54, r0_55
# 516| r0_57(glval<Point>) = FieldAddress[bottomRight] : r0_48
# 516| r0_58(glval<int>) = FieldAddress[x] : r0_57
# 516| r0_59(glval<int>) = VariableAddress[x] :
# 516| r0_60(int) = Load : r0_59, m0_3
# 516| mu0_61(int) = Store : r0_58, r0_60
# 516| r0_62(glval<int>) = FieldAddress[y] : r0_57
# 516| r0_63(int) = Constant[0] :
# 516| mu0_64(int) = Store : r0_62, r0_63
# 517| v0_65(void) = NoOp :
# 512| v0_66(void) = ReturnVoid :
# 512| v0_67(void) = UnmodeledUse : mu*
# 512| v0_68(void) = ExitFunction :
# 513| m0_7(Rect) = Uninitialized : r0_6
# 513| r0_8(glval<Point>) = FieldAddress[topLeft] : r0_6
# 513| r0_9(Point) = Constant[0] :
# 513| m0_10(Point) = Store : r0_8, r0_9
# 513| r0_11(glval<Point>) = FieldAddress[bottomRight] : r0_6
# 513| r0_12(Point) = Constant[0] :
# 513| mu0_13(Point) = Store : r0_11, r0_12
# 514| r0_14(glval<Rect>) = VariableAddress[r2] :
# 514| m0_15(Rect) = Uninitialized : r0_14
# 514| r0_16(glval<Point>) = FieldAddress[topLeft] : r0_14
# 514| r0_17(glval<int>) = FieldAddress[x] : r0_16
# 514| r0_18(glval<int>) = VariableAddress[x] :
# 514| r0_19(int) = Load : r0_18, m0_3
# 514| m0_20(int) = Store : r0_17, r0_19
# 514| r0_21(glval<int>) = FieldAddress[y] : r0_16
# 514| r0_22(glval<float>) = VariableAddress[f] :
# 514| r0_23(float) = Load : r0_22, m0_5
# 514| r0_24(int) = Convert : r0_23
# 514| mu0_25(int) = Store : r0_21, r0_24
# 514| r0_26(glval<Point>) = FieldAddress[bottomRight] : r0_14
# 514| r0_27(Point) = Constant[0] :
# 514| mu0_28(Point) = Store : r0_26, r0_27
# 515| r0_29(glval<Rect>) = VariableAddress[r3] :
# 515| m0_30(Rect) = Uninitialized : r0_29
# 515| r0_31(glval<Point>) = FieldAddress[topLeft] : r0_29
# 515| r0_32(glval<int>) = FieldAddress[x] : r0_31
# 515| r0_33(glval<int>) = VariableAddress[x] :
# 515| r0_34(int) = Load : r0_33, m0_3
# 515| m0_35(int) = Store : r0_32, r0_34
# 515| r0_36(glval<int>) = FieldAddress[y] : r0_31
# 515| r0_37(glval<float>) = VariableAddress[f] :
# 515| r0_38(float) = Load : r0_37, m0_5
# 515| r0_39(int) = Convert : r0_38
# 515| mu0_40(int) = Store : r0_36, r0_39
# 515| r0_41(glval<Point>) = FieldAddress[bottomRight] : r0_29
# 515| r0_42(glval<int>) = FieldAddress[x] : r0_41
# 515| r0_43(glval<int>) = VariableAddress[x] :
# 515| r0_44(int) = Load : r0_43, m0_3
# 515| mu0_45(int) = Store : r0_42, r0_44
# 515| r0_46(glval<int>) = FieldAddress[y] : r0_41
# 515| r0_47(glval<float>) = VariableAddress[f] :
# 515| r0_48(float) = Load : r0_47, m0_5
# 515| r0_49(int) = Convert : r0_48
# 515| mu0_50(int) = Store : r0_46, r0_49
# 516| r0_51(glval<Rect>) = VariableAddress[r4] :
# 516| m0_52(Rect) = Uninitialized : r0_51
# 516| r0_53(glval<Point>) = FieldAddress[topLeft] : r0_51
# 516| r0_54(glval<int>) = FieldAddress[x] : r0_53
# 516| r0_55(glval<int>) = VariableAddress[x] :
# 516| r0_56(int) = Load : r0_55, m0_3
# 516| m0_57(int) = Store : r0_54, r0_56
# 516| r0_58(glval<int>) = FieldAddress[y] : r0_53
# 516| r0_59(int) = Constant[0] :
# 516| mu0_60(int) = Store : r0_58, r0_59
# 516| r0_61(glval<Point>) = FieldAddress[bottomRight] : r0_51
# 516| r0_62(glval<int>) = FieldAddress[x] : r0_61
# 516| r0_63(glval<int>) = VariableAddress[x] :
# 516| r0_64(int) = Load : r0_63, m0_3
# 516| mu0_65(int) = Store : r0_62, r0_64
# 516| r0_66(glval<int>) = FieldAddress[y] : r0_61
# 516| r0_67(int) = Constant[0] :
# 516| mu0_68(int) = Store : r0_66, r0_67
# 517| v0_69(void) = NoOp :
# 512| v0_70(void) = ReturnVoid :
# 512| v0_71(void) = UnmodeledUse : mu*
# 512| v0_72(void) = ExitFunction :
# 519| ArrayInit(int, float) -> void
# 519| Block 0
@@ -2268,40 +2275,43 @@ ir.cpp:
# 519| r0_4(glval<float>) = VariableAddress[f] :
# 519| m0_5(float) = InitializeParameter[f] : r0_4
# 520| r0_6(glval<int[3]>) = VariableAddress[a1] :
# 520| r0_7(int) = Constant[0] :
# 520| r0_8(glval<int>) = PointerAdd : r0_6, r0_7
# 520| r0_9(unknown[12]) = Constant[0] :
# 520| mu0_10(unknown[12]) = Store : r0_8, r0_9
# 521| r0_11(glval<int[3]>) = VariableAddress[a2] :
# 521| r0_12(int) = Constant[0] :
# 521| r0_13(glval<int>) = PointerAdd : r0_11, r0_12
# 521| r0_14(glval<int>) = VariableAddress[x] :
# 521| r0_15(int) = Load : r0_14, m0_3
# 521| mu0_16(int) = Store : r0_13, r0_15
# 521| r0_17(int) = Constant[1] :
# 521| r0_18(glval<int>) = PointerAdd : r0_11, r0_17
# 521| r0_19(glval<float>) = VariableAddress[f] :
# 521| r0_20(float) = Load : r0_19, m0_5
# 521| r0_21(int) = Convert : r0_20
# 521| mu0_22(int) = Store : r0_18, r0_21
# 521| r0_23(int) = Constant[2] :
# 521| r0_24(glval<int>) = PointerAdd : r0_11, r0_23
# 521| r0_25(int) = Constant[0] :
# 521| mu0_26(int) = Store : r0_24, r0_25
# 522| r0_27(glval<int[3]>) = VariableAddress[a3] :
# 522| r0_28(int) = Constant[0] :
# 522| r0_29(glval<int>) = PointerAdd : r0_27, r0_28
# 522| r0_30(glval<int>) = VariableAddress[x] :
# 522| r0_31(int) = Load : r0_30, m0_3
# 522| mu0_32(int) = Store : r0_29, r0_31
# 522| r0_33(int) = Constant[1] :
# 522| r0_34(glval<int>) = PointerAdd : r0_27, r0_33
# 522| r0_35(unknown[8]) = Constant[0] :
# 522| mu0_36(unknown[8]) = Store : r0_34, r0_35
# 523| v0_37(void) = NoOp :
# 519| v0_38(void) = ReturnVoid :
# 519| v0_39(void) = UnmodeledUse : mu*
# 519| v0_40(void) = ExitFunction :
# 520| mu0_7(int[3]) = Uninitialized : r0_6
# 520| r0_8(int) = Constant[0] :
# 520| r0_9(glval<int>) = PointerAdd : r0_6, r0_8
# 520| r0_10(unknown[12]) = Constant[0] :
# 520| mu0_11(unknown[12]) = Store : r0_9, r0_10
# 521| r0_12(glval<int[3]>) = VariableAddress[a2] :
# 521| mu0_13(int[3]) = Uninitialized : r0_12
# 521| r0_14(int) = Constant[0] :
# 521| r0_15(glval<int>) = PointerAdd : r0_12, r0_14
# 521| r0_16(glval<int>) = VariableAddress[x] :
# 521| r0_17(int) = Load : r0_16, m0_3
# 521| mu0_18(int) = Store : r0_15, r0_17
# 521| r0_19(int) = Constant[1] :
# 521| r0_20(glval<int>) = PointerAdd : r0_12, r0_19
# 521| r0_21(glval<float>) = VariableAddress[f] :
# 521| r0_22(float) = Load : r0_21, m0_5
# 521| r0_23(int) = Convert : r0_22
# 521| mu0_24(int) = Store : r0_20, r0_23
# 521| r0_25(int) = Constant[2] :
# 521| r0_26(glval<int>) = PointerAdd : r0_12, r0_25
# 521| r0_27(int) = Constant[0] :
# 521| mu0_28(int) = Store : r0_26, r0_27
# 522| r0_29(glval<int[3]>) = VariableAddress[a3] :
# 522| mu0_30(int[3]) = Uninitialized : r0_29
# 522| r0_31(int) = Constant[0] :
# 522| r0_32(glval<int>) = PointerAdd : r0_29, r0_31
# 522| r0_33(glval<int>) = VariableAddress[x] :
# 522| r0_34(int) = Load : r0_33, m0_3
# 522| mu0_35(int) = Store : r0_32, r0_34
# 522| r0_36(int) = Constant[1] :
# 522| r0_37(glval<int>) = PointerAdd : r0_29, r0_36
# 522| r0_38(unknown[8]) = Constant[0] :
# 522| mu0_39(unknown[8]) = Store : r0_37, r0_38
# 523| v0_40(void) = NoOp :
# 519| v0_41(void) = ReturnVoid :
# 519| v0_42(void) = UnmodeledUse : mu*
# 519| v0_43(void) = ExitFunction :
# 530| UnionInit(int, float) -> void
# 530| Block 0
@@ -2312,15 +2322,16 @@ ir.cpp:
# 530| r0_4(glval<float>) = VariableAddress[f] :
# 530| m0_5(float) = InitializeParameter[f] : r0_4
# 531| r0_6(glval<U>) = VariableAddress[u1] :
# 531| r0_7(glval<double>) = FieldAddress[d] : r0_6
# 531| r0_8(glval<float>) = VariableAddress[f] :
# 531| r0_9(float) = Load : r0_8, m0_5
# 531| r0_10(double) = Convert : r0_9
# 531| m0_11(double) = Store : r0_7, r0_10
# 533| v0_12(void) = NoOp :
# 530| v0_13(void) = ReturnVoid :
# 530| v0_14(void) = UnmodeledUse : mu*
# 530| v0_15(void) = ExitFunction :
# 531| m0_7(U) = Uninitialized : r0_6
# 531| r0_8(glval<double>) = FieldAddress[d] : r0_6
# 531| r0_9(glval<float>) = VariableAddress[f] :
# 531| r0_10(float) = Load : r0_9, m0_5
# 531| r0_11(double) = Convert : r0_10
# 531| m0_12(double) = Store : r0_8, r0_11
# 533| v0_13(void) = NoOp :
# 530| v0_14(void) = ReturnVoid :
# 530| v0_15(void) = UnmodeledUse : mu*
# 530| v0_16(void) = ExitFunction :
# 535| EarlyReturn(int, int) -> void
# 535| Block 0
@@ -2479,41 +2490,45 @@ ir.cpp:
# 575| r0_18(glval<char[2]>) = VariableAddress[b] :
# 575| m0_19(char[2]) = Uninitialized : r0_18
# 576| r0_20(glval<char[2]>) = VariableAddress[c] :
# 576| r0_21(int) = Constant[0] :
# 576| r0_22(glval<char>) = PointerAdd : r0_20, r0_21
# 576| r0_23(unknown[2]) = Constant[0] :
# 576| mu0_24(unknown[2]) = Store : r0_22, r0_23
# 577| r0_25(glval<char[2]>) = VariableAddress[d] :
# 577| r0_26(int) = Constant[0] :
# 577| r0_27(glval<char>) = PointerAdd : r0_25, r0_26
# 577| r0_28(char) = Constant[0] :
# 577| mu0_29(char) = Store : r0_27, r0_28
# 577| r0_30(int) = Constant[1] :
# 577| r0_31(glval<char>) = PointerAdd : r0_25, r0_30
# 577| r0_32(char) = Constant[0] :
# 577| mu0_33(char) = Store : r0_31, r0_32
# 578| r0_34(glval<char[2]>) = VariableAddress[e] :
# 578| r0_35(int) = Constant[0] :
# 578| r0_36(glval<char>) = PointerAdd : r0_34, r0_35
# 578| r0_37(char) = Constant[0] :
# 578| mu0_38(char) = Store : r0_36, r0_37
# 578| r0_39(int) = Constant[1] :
# 578| r0_40(glval<char>) = PointerAdd : r0_34, r0_39
# 578| r0_41(char) = Constant[1] :
# 578| mu0_42(char) = Store : r0_40, r0_41
# 579| r0_43(glval<char[3]>) = VariableAddress[f] :
# 579| r0_44(int) = Constant[0] :
# 579| r0_45(glval<char>) = PointerAdd : r0_43, r0_44
# 579| r0_46(char) = Constant[0] :
# 579| mu0_47(char) = Store : r0_45, r0_46
# 579| r0_48(int) = Constant[1] :
# 579| r0_49(glval<char>) = PointerAdd : r0_43, r0_48
# 579| r0_50(unknown[2]) = Constant[0] :
# 579| mu0_51(unknown[2]) = Store : r0_49, r0_50
# 580| v0_52(void) = NoOp :
# 571| v0_53(void) = ReturnVoid :
# 571| v0_54(void) = UnmodeledUse : mu*
# 571| v0_55(void) = ExitFunction :
# 576| mu0_21(char[2]) = Uninitialized : r0_20
# 576| r0_22(int) = Constant[0] :
# 576| r0_23(glval<char>) = PointerAdd : r0_20, r0_22
# 576| r0_24(unknown[2]) = Constant[0] :
# 576| mu0_25(unknown[2]) = Store : r0_23, r0_24
# 577| r0_26(glval<char[2]>) = VariableAddress[d] :
# 577| mu0_27(char[2]) = Uninitialized : r0_26
# 577| r0_28(int) = Constant[0] :
# 577| r0_29(glval<char>) = PointerAdd : r0_26, r0_28
# 577| r0_30(char) = Constant[0] :
# 577| mu0_31(char) = Store : r0_29, r0_30
# 577| r0_32(int) = Constant[1] :
# 577| r0_33(glval<char>) = PointerAdd : r0_26, r0_32
# 577| r0_34(char) = Constant[0] :
# 577| mu0_35(char) = Store : r0_33, r0_34
# 578| r0_36(glval<char[2]>) = VariableAddress[e] :
# 578| mu0_37(char[2]) = Uninitialized : r0_36
# 578| r0_38(int) = Constant[0] :
# 578| r0_39(glval<char>) = PointerAdd : r0_36, r0_38
# 578| r0_40(char) = Constant[0] :
# 578| mu0_41(char) = Store : r0_39, r0_40
# 578| r0_42(int) = Constant[1] :
# 578| r0_43(glval<char>) = PointerAdd : r0_36, r0_42
# 578| r0_44(char) = Constant[1] :
# 578| mu0_45(char) = Store : r0_43, r0_44
# 579| r0_46(glval<char[3]>) = VariableAddress[f] :
# 579| mu0_47(char[3]) = Uninitialized : r0_46
# 579| r0_48(int) = Constant[0] :
# 579| r0_49(glval<char>) = PointerAdd : r0_46, r0_48
# 579| r0_50(char) = Constant[0] :
# 579| mu0_51(char) = Store : r0_49, r0_50
# 579| r0_52(int) = Constant[1] :
# 579| r0_53(glval<char>) = PointerAdd : r0_46, r0_52
# 579| r0_54(unknown[2]) = Constant[0] :
# 579| mu0_55(unknown[2]) = Store : r0_53, r0_54
# 580| v0_56(void) = NoOp :
# 571| v0_57(void) = ReturnVoid :
# 571| v0_58(void) = UnmodeledUse : mu*
# 571| v0_59(void) = ExitFunction :
# 584| VarArgs() -> void
# 584| Block 0
@@ -3912,10 +3927,11 @@ ir.cpp:
# 961| v0_0(void) = EnterFunction :
# 961| mu0_1(unknown) = UnmodeledDefinition :
# 962| r0_2(glval<int[1000]>) = VariableAddress[a1] :
# 962| r0_3(int) = Constant[0] :
# 962| r0_4(glval<int>) = PointerAdd : r0_2, r0_3
# 962| r0_5(unknown[8]) = Constant[0] :
# 962| mu0_6(unknown[8]) = Store : r0_4, r0_5
# 962| mu0_3(int[1000]) = Uninitialized : r0_2
# 962| r0_4(int) = Constant[0] :
# 962| r0_5(glval<int>) = PointerAdd : r0_2, r0_4
# 962| r0_6(unknown[8]) = Constant[0] :
# 962| mu0_7(unknown[8]) = Store : r0_5, r0_6
#-----| Goto -> Block 2
# 962| Block 1