1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-02-06 13:31:05 +00:00

Finished fixes for uniwnding struct pointers/arrays.

This commit is contained in:
jespergravgaard 2019-07-26 14:31:00 +02:00
parent 66f6195739
commit a30939e72c
23 changed files with 413 additions and 388 deletions

View File

@ -194,6 +194,10 @@ public class Compiler {
new PassNAddTypeConversionAssignment(program, false).execute();
new Pass1EarlyConstantIdentification(program).execute();
if(getLog().isVerbosePass1CreateSsa()) {
getLog().append("CONTROL FLOW GRAPH BEFORE INLINING");
getLog().append(program.getGraph().toString(program));
}
new Pass1ProcedureInline(program).execute();
new PassNStatementIndices(program).step();
new PassNCallGraphAnalysis(program).step();

View File

@ -10,7 +10,7 @@ import java.util.List;
import java.util.Map;
/**
* Keeps track of all structs that have been unwound into member variables.
* Keeps track of all struct variables that have been unwound into member variables.
*/
public class StructUnwinding {
@ -41,25 +41,6 @@ public class StructUnwinding {
return structVariables.get(ref);
}
/**
* Find the struct variable that the passed symbol was unwound from.
*
* @param symbolRef The symbol to look for
* @return The struct variable containing it. null if the passed symbol is not an unwound variable.
*/
public VariableRef getContainingStructVariable(SymbolRef symbolRef) {
for(VariableRef structVarRef : structVariables.keySet()) {
VariableUnwinding variableUnwinding = getVariableUnwinding(structVarRef);
for(String memberName : variableUnwinding.getMemberNames()) {
LValue memberUnwinding = variableUnwinding.getMemberUnwinding(memberName);
if(memberUnwinding instanceof VariableRef && memberUnwinding.equals(symbolRef)) {
return structVarRef;
}
}
}
return null;
}
/** Information about how a single struct variable was unwound. */
public static class VariableUnwinding implements StructMemberUnwinding {

View File

@ -60,7 +60,7 @@ public class Pass1UnwindStructValues extends Pass1Base {
} else if(statement instanceof StatementCall) {
modified |= unwindCall((StatementCall) statement, stmtIt, block);
} else if(statement instanceof StatementReturn) {
modified |= unwindReturn((StatementReturn) statement);
modified |= unwindReturn((StatementReturn) statement, stmtIt, block);
}
}
}
@ -71,25 +71,19 @@ public class Pass1UnwindStructValues extends Pass1Base {
* Change all usages of members inside statements to the unwound member variables
*/
private boolean unwindStructMemberReferences() {
StructUnwinding structUnwinding = getProgram().getStructUnwinding();
AtomicBoolean modified = new AtomicBoolean(false);
ProgramValueIterator.execute(
getProgram(), (programValue, currentStmt, stmtIt, currentBlock) ->
{
getProgram(), (programValue, currentStmt, stmtIt, currentBlock) -> {
if(programValue.get() instanceof StructMemberRef) {
StructMemberRef structMemberRef = (StructMemberRef) programValue.get();
// TODO Extend to handle structs that are not VariableRefs (for instance pointer derefs)
if(structMemberRef.getStruct() instanceof VariableRef) {
Variable structVariable = getScope().getVariable((VariableRef) structMemberRef.getStruct());
StructUnwinding.VariableUnwinding memberVariables = structUnwinding.getVariableUnwinding(structVariable.getRef());
if(memberVariables != null) {
StructUnwinding.StructMemberUnwinding memberVariables = getStructMemberUnwinding(structMemberRef.getStruct(), currentStmt, stmtIt, currentBlock);
if(memberVariables != null && memberVariables != POSTPONE_UNWINDING) {
VariableRef structMemberVariable = (VariableRef) memberVariables.getMemberUnwinding(structMemberRef.getMemberName());
getLog().append("Replacing struct member reference " + structMemberRef.toString(getProgram()) + " with member variable reference " + structMemberVariable.toString(getProgram()));
getLog().append("Replacing struct member reference " + structMemberRef.toString(getProgram()) + " with member unwinding reference " + structMemberVariable.toString(getProgram()));
programValue.set(structMemberVariable);
modified.set(true);
}
}
}
});
return modified.get();
}
@ -100,26 +94,19 @@ public class Pass1UnwindStructValues extends Pass1Base {
* @param call The call to unwind
*/
private boolean unwindCall(StatementCall call, ListIterator<Statement> stmtIt, ControlFlowBlock currentBlock) {
StructUnwinding structUnwinding = getProgram().getStructUnwinding();
// Unwind struct value return value
boolean lvalUnwound = false;
// TODO Extend to handle any struct (not just VariableRefs - but also pointer derefs to structs)
if(call.getlValue() instanceof VariableRef) {
Variable lvalueVar = getScope().getVariable((VariableRef) call.getlValue());
if(lvalueVar.getType() instanceof SymbolTypeStruct) {
StructUnwinding.VariableUnwinding lValueVarUnwinding = structUnwinding.getVariableUnwinding(lvalueVar.getRef());
if(lValueVarUnwinding != null) {
StructUnwinding.StructMemberUnwinding lValueUnwinding = getStructMemberUnwinding(call.getlValue(), call, stmtIt, currentBlock);
if(lValueUnwinding != null && lValueUnwinding != POSTPONE_UNWINDING) {
ArrayList<RValue> unwoundMembers = new ArrayList<>();
for(String memberName : lValueVarUnwinding.getMemberNames()) {
unwoundMembers.add(lValueVarUnwinding.getMemberUnwinding(memberName));
for(String memberName : lValueUnwinding.getMemberNames()) {
unwoundMembers.add(lValueUnwinding.getMemberUnwinding(memberName));
}
ValueList unwoundLValue = new ValueList(unwoundMembers);
call.setlValue(unwoundLValue);
getLog().append("Converted procedure call LValue to member variables " + call.toString(getProgram(), false));
getLog().append("Converted procedure call LValue to member unwinding " + call.toString(getProgram(), false));
lvalUnwound = true;
}
}
}
// Unwind any struct value parameters
ArrayList<RValue> unwoundParameters = new ArrayList<>();
@ -142,7 +129,7 @@ public class Pass1UnwindStructValues extends Pass1Base {
if(anyParameterUnwound) {
call.setParameters(unwoundParameters);
getLog().append("Converted procedure struct value parameter to member variables in call " + call.toString(getProgram(), false));
getLog().append("Converted procedure struct value parameter to member unwinding in call " + call.toString(getProgram(), false));
}
return (anyParameterUnwound || lvalUnwound);
}
@ -153,26 +140,20 @@ public class Pass1UnwindStructValues extends Pass1Base {
* @param statementReturn The return to unwind
*/
private boolean unwindReturn(StatementReturn statementReturn) {
private boolean unwindReturn(StatementReturn statementReturn, ListIterator<Statement> stmtIt, ControlFlowBlock currentBlock) {
boolean modified = false;
// Unwind struct value return value
// TODO Extend to handle structs that are not variables - eg. pointer derefs
if(statementReturn.getValue() instanceof VariableRef) {
Variable returnValueVar = getScope().getVariable((VariableRef) statementReturn.getValue());
if(returnValueVar.getType() instanceof SymbolTypeStruct) {
StructUnwinding structUnwinding = getProgram().getStructUnwinding();
StructUnwinding.VariableUnwinding returnVarUnwinding = structUnwinding.getVariableUnwinding(returnValueVar.getRef());
if(returnVarUnwinding != null) {
StructUnwinding.StructMemberUnwinding returnVarUnwinding = getStructMemberUnwinding(statementReturn.getValue(), statementReturn, stmtIt, currentBlock);
if(returnVarUnwinding != null && returnVarUnwinding != POSTPONE_UNWINDING) {
ArrayList<RValue> unwoundMembers = new ArrayList<>();
for(String memberName : returnVarUnwinding.getMemberNames()) {
unwoundMembers.add(returnVarUnwinding.getMemberUnwinding(memberName));
}
ValueList unwoundReturnValue = new ValueList(unwoundMembers);
statementReturn.setValue(unwoundReturnValue);
getLog().append("Converted procedure struct return value to member variables " + statementReturn.toString(getProgram(), false));
getLog().append("Converted procedure struct return value to member unwinding " + statementReturn.toString(getProgram(), false));
modified = true;
}
}
}
return modified;
}
@ -201,7 +182,7 @@ public class Pass1UnwindStructValues extends Pass1Base {
}
if(procedureUnwound) {
procedure.setParameterNames(unwoundParameterNames);
getLog().append("Converted procedure struct value parameter to member variables " + procedure.toString(getProgram()));
getLog().append("Converted procedure struct value parameter to member unwinding " + procedure.toString(getProgram()));
modified = true;
}
}
@ -264,8 +245,8 @@ public class Pass1UnwindStructValues extends Pass1Base {
return true;
}
if(assignment.getOperator() == null && assignment.getrValue2() instanceof StructZero && assignment.getlValue() instanceof VariableRef) {
// TODO MAYBE Extend to handle non-variable lvalues
if(assignment.getOperator() == null) {
if(assignment.getrValue2() instanceof StructZero && assignment.getlValue() instanceof VariableRef) {
// Zero-initializing a struct - unwind to assigning zero to each member!
List<RValue> membersUnwound = new ArrayList<>();
stmtIt.previous();
@ -285,7 +266,7 @@ public class Pass1UnwindStructValues extends Pass1Base {
stmtIt.remove();
}
return true;
} else if(assignment.getOperator() == null && assignment.getrValue2() instanceof ValueList) {
} else if(assignment.getrValue2() instanceof ValueList) {
// Initializing struct with a value list - unwind to assigning each member with a value from the list
ValueList valueList = (ValueList) assignment.getrValue2();
if(memberUnwinding.getMemberNames().size() != valueList.getList().size()) {
@ -305,19 +286,18 @@ public class Pass1UnwindStructValues extends Pass1Base {
if(assignment.getlValue() instanceof VariableRef) {
SymbolTypeStruct structType = (SymbolTypeStruct) SymbolTypeInference.inferType(getScope(), assignment.getlValue());
assignment.setrValue2(new StructUnwoundPlaceholder(structType, membersUnwound));
// TODO MAYBE Extend to handle non-variable lvalues
} else {
stmtIt.remove();
}
return true;
} else if(assignment.getOperator() == null) {
} else {
if(assignment.getrValue2() instanceof StructUnwoundPlaceholder)
return false;
SymbolTypeStruct structType = (SymbolTypeStruct) SymbolTypeInference.inferType(getScope(), assignment.getlValue());
SymbolType sourceType = SymbolTypeInference.inferType(getScope(), assignment.getrValue2());
if(sourceType.equals(structType)) {
// Copying a struct - unwind to assigning each member!
StructUnwinding.StructMemberUnwinding sourceMemberUnwinding = getStructMemberUnwinding((LValue) assignment.getrValue2(), assignment, stmtIt, currentBlock);
StructUnwinding.StructMemberUnwinding sourceMemberUnwinding = getStructMemberUnwinding(assignment.getrValue2(), assignment, stmtIt, currentBlock);
if(sourceMemberUnwinding == null) {
throw new CompileError("Incompatible struct assignment " + assignment.toString(getProgram(), false), assignment);
} else if(sourceMemberUnwinding == POSTPONE_UNWINDING) {
@ -335,7 +315,6 @@ public class Pass1UnwindStructValues extends Pass1Base {
}
stmtIt.next();
if(assignment.getlValue() instanceof VariableRef) {
// TODO MAYBE Extend to handle non-variable lvalues
assignment.setrValue2(new StructUnwoundPlaceholder(structType, membersUnwound));
} else {
stmtIt.remove();
@ -345,10 +324,10 @@ public class Pass1UnwindStructValues extends Pass1Base {
} else {
throw new CompileError("Incompatible struct assignment " + assignment.toString(getProgram(), false), assignment);
}
} else {
throw new CompileError("Incompatible struct assignment " + assignment.toString(getProgram(), false), assignment);
}
}
throw new CompileError("Incompatible struct assignment " + assignment.toString(getProgram(), false), assignment);
}
/**
* Examine a value - and if it represents a struct get the unwinding information for the struct members
@ -360,6 +339,7 @@ public class Pass1UnwindStructValues extends Pass1Base {
* @return null if the value is not a struct. Unwinding for the passed value if it is a struct. {@link #POSTPONE_UNWINDING} if the struct is not ready for unwinding yet.
*/
private StructUnwinding.StructMemberUnwinding getStructMemberUnwinding(RValue value, Statement currentStmt, ListIterator<Statement> stmtIt, ControlFlowBlock currentBlock) {
if(value != null) {
SymbolType lValueType = SymbolTypeInference.inferType(getScope(), value);
if(lValueType instanceof SymbolTypeStruct) {
SymbolTypeStruct structType = (SymbolTypeStruct) lValueType;
@ -375,12 +355,12 @@ public class Pass1UnwindStructValues extends Pass1Base {
} else {
throw new InternalError("Struct unwinding not implemented for " + value.toString(getProgram()));
}
} else {
}
}
return null;
}
}
/** Singleton signalling that unwinding should be postponed. */
/** Singleton signaling that unwinding should be postponed. */
private static final StructUnwinding.StructMemberUnwinding POSTPONE_UNWINDING = new StructUnwinding.StructMemberUnwinding() {
@Override
public List<String> getMemberNames() {

View File

@ -90,6 +90,16 @@ public class TestPrograms {
compileAndCompare("problem-array-struct-param");
}
@Test
public void testProblemStructReturnToPointer() throws IOException, URISyntaxException {
compileAndCompare("problem-struct-return-to-pointer");
}
@Test
public void testProblemStructReturnPointerDeref() throws IOException, URISyntaxException {
compileAndCompare("problem-struct-return-pointer-deref");
}
/*
@Test
public void testProblemArrayStructInit() throws IOException, URISyntaxException {
@ -100,11 +110,10 @@ public class TestPrograms {
/*
@Test
public void testProblemInlineStructReturn() throws IOException, URISyntaxException {
compileAndCompare("problem-inline-struct-return");
compileAndCompare("problem-inline-struct-return", log().verboseCreateSsa());
}
*/
@Test
public void testTrueTypeSplines() throws IOException, URISyntaxException {
compileAndCompare("complex/splines/truetype-splines");

View File

@ -0,0 +1,30 @@
// Demonstrates problem with returning a dereferenced pointer to a struct
struct Point {
char x;
char y;
};
const struct Point* SCREEN = 0x0400;
char idx = 0;
void main() {
*SCREEN = get(0);
for ( char i: 1..2) {
SCREEN[i] = get(i);
}
}
struct Point* p0 = 0xa000;
struct Point* p1 = 0xb000;
struct Point* p2 = 0xe000;
struct Point get(char i) {
if(i==0) {
return *p0;
} else if(i==1) {
return *p1;
} else {
return *p2;
}
}

View File

@ -0,0 +1,21 @@
// Demonstrates problem with returning a struct into a dereferenced pointer to a struct
struct Point {
char x;
char y;
};
const struct Point* SCREEN = 0x0400;
char idx = 0;
void main() {
*SCREEN = get(0);
for ( char i: 1..2) {
SCREEN[i] = get(i);
}
}
struct Point get(char i) {
struct Point p = { i, 7 };
return p;
}

View File

@ -38,7 +38,7 @@ Created struct value member variable (byte) startProcessing::center_x
Created struct value member variable (byte) startProcessing::center_y
Created struct value member variable (byte) startProcessing::center_dist
Converted struct value to member variables (struct ProcessingChar) startProcessing::center
Converted procedure struct value parameter to member variables (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (byte) startProcessing::center_dist)
Converted procedure struct value parameter to member unwinding (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (byte) startProcessing::center_dist)
Adding struct value list initializer *((word*) main::$17 + (byte~) main::$16) ← (number) 0
Adding struct value list initializer *((word*) main::$18 + (byte~) main::$16) ← (number) 0
Adding struct value list initializer *((word*) main::$19 + (byte~) main::$16) ← (number) 0
@ -48,11 +48,11 @@ Adding struct value list initializer *((byte*) main::$22 + (byte~) main::$16)
Adding struct value list initializer *((byte*) main::$23 + (byte~) main::$16) ← (number) 0
Adding struct value list initializer *((byte*) main::$24 + (byte~) main::$16) ← (const byte) STATUS_FREE
Adding struct value list initializer *((byte**) main::$25 + (byte~) main::$16) ← (number) 0
Converted procedure call LValue to member variables { (byte) main::$9_x, (byte) main::$9_y, (byte) main::$9_dist } ← call getCharToProcess
Converted procedure call LValue to member unwinding { (byte) main::$9_x, (byte) main::$9_y, (byte) main::$9_dist } ← call getCharToProcess
Adding struct value member variable copy (byte) main::center_x ← (byte) main::$9_x
Adding struct value member variable copy (byte) main::center_y ← (byte) main::$9_y
Adding struct value member variable copy (byte) main::center_dist ← (byte) main::$9_dist
Converted procedure struct value parameter to member variables in call (void~) main::$12 ← call startProcessing (byte) main::center_x (byte) main::center_y (byte) main::center_dist
Converted procedure struct value parameter to member unwinding in call (void~) main::$12 ← call startProcessing (byte) main::center_x (byte) main::center_y (byte) main::center_dist
Adding struct value list initializer (byte) getCharToProcess::closest_x ← (number) 0
Adding struct value list initializer (byte) getCharToProcess::closest_y ← (number) 0
Adding struct value list initializer (byte) getCharToProcess::closest_dist ← (byte) NOT_FOUND
@ -65,7 +65,7 @@ Adding struct value member variable copy (byte) getCharToProcess::return_dist
Adding struct value member variable copy (byte) getCharToProcess::return_x ← (byte) getCharToProcess::return_x
Adding struct value member variable copy (byte) getCharToProcess::return_y ← (byte) getCharToProcess::return_y
Adding struct value member variable copy (byte) getCharToProcess::return_dist ← (byte) getCharToProcess::return_dist
Converted procedure struct return value to member variables return { (byte) getCharToProcess::return_x, (byte) getCharToProcess::return_y, (byte) getCharToProcess::return_dist }
Converted procedure struct return value to member unwinding return { (byte) getCharToProcess::return_x, (byte) getCharToProcess::return_y, (byte) getCharToProcess::return_dist }
Adding struct value list initializer *((word*) startProcessing::$32 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteX
Adding struct value list initializer *((word*) startProcessing::$33 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteY
Adding struct value list initializer *((word*) startProcessing::$34 + (byte~) startProcessing::$31) ← (word~) startProcessing::$23
@ -75,15 +75,15 @@ Adding struct value list initializer *((byte*) startProcessing::$37 + (byte~) st
Adding struct value list initializer *((byte*) startProcessing::$38 + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteCol
Adding struct value list initializer *((byte*) startProcessing::$39 + (byte~) startProcessing::$31) ← (const byte) STATUS_NEW
Adding struct value list initializer *((byte**) startProcessing::$40 + (byte~) startProcessing::$31) ← (byte*) startProcessing::screenPtr
Replacing struct member reference (struct ProcessingChar) main::center.dist with member variable reference (byte) main::center_dist
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member variable reference (byte) getCharToProcess::closest_dist
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member variable reference (byte) getCharToProcess::closest_dist
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.y with member variable reference (byte) getCharToProcess::closest_y
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.x with member variable reference (byte) getCharToProcess::closest_x
Replacing struct member reference (struct ProcessingChar) startProcessing::center.y with member variable reference (byte) startProcessing::center_y
Replacing struct member reference (struct ProcessingChar) startProcessing::center.x with member variable reference (byte) startProcessing::center_x
Replacing struct member reference (struct ProcessingChar) startProcessing::center.x with member variable reference (byte) startProcessing::center_x
Replacing struct member reference (struct ProcessingChar) startProcessing::center.y with member variable reference (byte) startProcessing::center_y
Replacing struct member reference (struct ProcessingChar) main::center.dist with member unwinding reference (byte) main::center_dist
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member unwinding reference (byte) getCharToProcess::closest_dist
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member unwinding reference (byte) getCharToProcess::closest_dist
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.y with member unwinding reference (byte) getCharToProcess::closest_y
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.x with member unwinding reference (byte) getCharToProcess::closest_x
Replacing struct member reference (struct ProcessingChar) startProcessing::center.y with member unwinding reference (byte) startProcessing::center_y
Replacing struct member reference (struct ProcessingChar) startProcessing::center.x with member unwinding reference (byte) startProcessing::center_x
Replacing struct member reference (struct ProcessingChar) startProcessing::center.x with member unwinding reference (byte) startProcessing::center_x
Replacing struct member reference (struct ProcessingChar) startProcessing::center.y with member unwinding reference (byte) startProcessing::center_y
Rewriting struct pointer member access *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte~) startProcessing::$30).status
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).id
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status

View File

@ -143,10 +143,10 @@ Converted struct value to member variables (struct SplineVector16) rotate::vecto
Created struct value member variable (signed word) rotate::rotated_x
Created struct value member variable (signed word) rotate::rotated_y
Converted struct value to member variables (struct SplineVector16) rotate::rotated
Converted procedure struct value parameter to member variables (void()) spline_16seg((signed word) spline_16seg::p0_x , (signed word) spline_16seg::p0_y , (signed word) spline_16seg::p1_x , (signed word) spline_16seg::p1_y , (signed word) spline_16seg::p2_x , (signed word) spline_16seg::p2_y)
Converted procedure struct value parameter to member variables (void()) spline_8seg((signed word) spline_8seg::p0_x , (signed word) spline_8seg::p0_y , (signed word) spline_8seg::p1_x , (signed word) spline_8seg::p1_y , (signed word) spline_8seg::p2_x , (signed word) spline_8seg::p2_y)
Converted procedure struct value parameter to member variables (void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y)
Converted procedure struct value parameter to member variables (struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle)
Converted procedure struct value parameter to member unwinding (void()) spline_16seg((signed word) spline_16seg::p0_x , (signed word) spline_16seg::p0_y , (signed word) spline_16seg::p1_x , (signed word) spline_16seg::p1_y , (signed word) spline_16seg::p2_x , (signed word) spline_16seg::p2_y)
Converted procedure struct value parameter to member unwinding (void()) spline_8seg((signed word) spline_8seg::p0_x , (signed word) spline_8seg::p0_y , (signed word) spline_8seg::p1_x , (signed word) spline_8seg::p1_y , (signed word) spline_8seg::p2_x , (signed word) spline_8seg::p2_y)
Converted procedure struct value parameter to member unwinding (void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y)
Converted procedure struct value parameter to member unwinding (struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle)
Adding struct value list initializer (signed word) spline_16seg::a_x ← (number~) spline_16seg::$2
Adding struct value list initializer (signed word) spline_16seg::a_y ← (number~) spline_16seg::$5
Adding struct value list initializer (signed word) spline_16seg::b_x ← (number~) spline_16seg::$7
@ -273,8 +273,8 @@ Adding struct value list initializer (signed word) show_letter::to_x ← *((stru
Adding struct value list initializer (signed word) show_letter::to_y ← *((struct Segment[$16]) letter_c + (byte~) show_letter::$20).to.y
Adding struct value list initializer (signed word) show_letter::to_x ← (number~) show_letter::$0
Adding struct value list initializer (signed word) show_letter::to_y ← (number~) show_letter::$1
Converted procedure call LValue to member variables { (signed word) show_letter::$2_x, (signed word) show_letter::$2_y } ← call rotate (struct SplineVector16) show_letter::to (byte) show_letter::angle
Converted procedure struct value parameter to member variables in call { (signed word) show_letter::$2_x, (signed word) show_letter::$2_y } ← call rotate (signed word) show_letter::to_x (signed word) show_letter::to_y (byte) show_letter::angle
Converted procedure call LValue to member unwinding { (signed word) show_letter::$2_x, (signed word) show_letter::$2_y } ← call rotate (struct SplineVector16) show_letter::to (byte) show_letter::angle
Converted procedure struct value parameter to member unwinding in call { (signed word) show_letter::$2_x, (signed word) show_letter::$2_y } ← call rotate (signed word) show_letter::to_x (signed word) show_letter::to_y (byte) show_letter::angle
Adding struct value member variable copy (signed word) show_letter::to_x ← (signed word) show_letter::$2_x
Adding struct value member variable copy (signed word) show_letter::to_y ← (signed word) show_letter::$2_y
Adding struct value list initializer (signed word) show_letter::to_x ← (number~) show_letter::$3
@ -283,8 +283,8 @@ Adding struct value list initializer (signed word) show_letter::via_x ← *((str
Adding struct value list initializer (signed word) show_letter::via_y ← *((struct Segment[$16]) letter_c + (byte~) show_letter::$21).via.y
Adding struct value list initializer (signed word) show_letter::via_x ← (number~) show_letter::$5
Adding struct value list initializer (signed word) show_letter::via_y ← (number~) show_letter::$6
Converted procedure call LValue to member variables { (signed word) show_letter::$7_x, (signed word) show_letter::$7_y } ← call rotate (struct SplineVector16) show_letter::via (byte) show_letter::angle
Converted procedure struct value parameter to member variables in call { (signed word) show_letter::$7_x, (signed word) show_letter::$7_y } ← call rotate (signed word) show_letter::via_x (signed word) show_letter::via_y (byte) show_letter::angle
Converted procedure call LValue to member unwinding { (signed word) show_letter::$7_x, (signed word) show_letter::$7_y } ← call rotate (struct SplineVector16) show_letter::via (byte) show_letter::angle
Converted procedure struct value parameter to member unwinding in call { (signed word) show_letter::$7_x, (signed word) show_letter::$7_y } ← call rotate (signed word) show_letter::via_x (signed word) show_letter::via_y (byte) show_letter::angle
Adding struct value member variable copy (signed word) show_letter::via_x ← (signed word) show_letter::$7_x
Adding struct value member variable copy (signed word) show_letter::via_y ← (signed word) show_letter::$7_y
Adding struct value list initializer (signed word) show_letter::via_x ← (number~) show_letter::$8
@ -292,7 +292,7 @@ Adding struct value list initializer (signed word) show_letter::via_y ← (numbe
Adding struct value list initializer (byte) show_letter::segment_type ← *((struct Segment[$16]) letter_c + (byte~) show_letter::$22).type
Adding struct value list initializer (struct SplineVector16) show_letter::segment_to ← (struct SplineVector16) show_letter::to
Adding struct value list initializer (struct SplineVector16) show_letter::segment_via ← (struct SplineVector16) show_letter::via
Converted procedure struct value parameter to member variables in call (void~) show_letter::$17 ← call spline_8segB (signed word) show_letter::current_x (signed word) show_letter::current_y (struct Segment) show_letter::segment.via (struct Segment) show_letter::segment.to
Converted procedure struct value parameter to member unwinding in call (void~) show_letter::$17 ← call spline_8segB (signed word) show_letter::current_x (signed word) show_letter::current_y (struct Segment) show_letter::segment.via (struct Segment) show_letter::segment.to
Adding struct value member variable copy (signed word) bitmap_plot_spline_8seg::current_x ← *((signed word*) bitmap_plot_spline_8seg::$10 + (number~) bitmap_plot_spline_8seg::$6)
Adding struct value member variable copy (signed word) bitmap_plot_spline_8seg::current_y ← *((signed word*) bitmap_plot_spline_8seg::$11 + (number~) bitmap_plot_spline_8seg::$6)
Adding struct value member variable copy (signed word) bitmap_plot_spline_8seg::current_x ← *((signed word*) bitmap_plot_spline_8seg::$12 + (byte~) bitmap_plot_spline_8seg::$9)
@ -303,122 +303,122 @@ Adding struct value member variable copy (signed word) rotate::return_x ← (sig
Adding struct value member variable copy (signed word) rotate::return_y ← (signed word) rotate::rotated_y
Adding struct value member variable copy (signed word) rotate::return_x ← (signed word) rotate::return_x
Adding struct value member variable copy (signed word) rotate::return_y ← (signed word) rotate::return_y
Converted procedure struct return value to member variables return { (signed word) rotate::return_x, (signed word) rotate::return_y }
Replacing struct member reference (struct SplineVector16) spline_16seg::p1.x with member variable reference (signed word) spline_16seg::p1_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p2.x with member variable reference (signed word) spline_16seg::p2_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.x with member variable reference (signed word) spline_16seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p1.y with member variable reference (signed word) spline_16seg::p1_y
Replacing struct member reference (struct SplineVector16) spline_16seg::p2.y with member variable reference (signed word) spline_16seg::p2_y
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.y with member variable reference (signed word) spline_16seg::p0_y
Replacing struct member reference (struct SplineVector16) spline_16seg::p1.x with member variable reference (signed word) spline_16seg::p1_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.x with member variable reference (signed word) spline_16seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p1.y with member variable reference (signed word) spline_16seg::p1_y
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.y with member variable reference (signed word) spline_16seg::p0_y
Replacing struct member reference (struct SplineVector16) spline_16seg::a.x with member variable reference (signed word) spline_16seg::a_x
Replacing struct member reference (struct SplineVector16) spline_16seg::b.x with member variable reference (signed word) spline_16seg::b_x
Replacing struct member reference (struct SplineVector16) spline_16seg::a.y with member variable reference (signed word) spline_16seg::a_y
Replacing struct member reference (struct SplineVector16) spline_16seg::b.y with member variable reference (signed word) spline_16seg::b_y
Replacing struct member reference (struct SplineVector16) spline_16seg::a.x with member variable reference (signed word) spline_16seg::a_x
Replacing struct member reference (struct SplineVector16) spline_16seg::a.y with member variable reference (signed word) spline_16seg::a_y
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.x with member variable reference (signed word) spline_16seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.y with member variable reference (signed word) spline_16seg::p0_y
Replacing struct member reference (struct SplineVector32) spline_16seg::p.x with member variable reference (signed dword) spline_16seg::p_x
Replacing struct member reference (struct SplineVector32) spline_16seg::p.y with member variable reference (signed dword) spline_16seg::p_y
Replacing struct member reference (struct SplineVector32) spline_16seg::p.x with member variable reference (signed dword) spline_16seg::p_x
Replacing struct member reference (struct SplineVector32) spline_16seg::i.x with member variable reference (signed dword) spline_16seg::i_x
Replacing struct member reference (struct SplineVector32) spline_16seg::p.y with member variable reference (signed dword) spline_16seg::p_y
Replacing struct member reference (struct SplineVector32) spline_16seg::i.y with member variable reference (signed dword) spline_16seg::i_y
Replacing struct member reference (struct SplineVector32) spline_16seg::i.x with member variable reference (signed dword) spline_16seg::i_x
Replacing struct member reference (struct SplineVector32) spline_16seg::j.x with member variable reference (signed dword) spline_16seg::j_x
Replacing struct member reference (struct SplineVector32) spline_16seg::i.y with member variable reference (signed dword) spline_16seg::i_y
Replacing struct member reference (struct SplineVector32) spline_16seg::j.y with member variable reference (signed dword) spline_16seg::j_y
Replacing struct member reference (struct SplineVector32) spline_16seg::p.x with member variable reference (signed dword) spline_16seg::p_x
Replacing struct member reference (struct SplineVector32) spline_16seg::p.y with member variable reference (signed dword) spline_16seg::p_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p1.x with member variable reference (signed word) spline_8seg::p1_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p2.x with member variable reference (signed word) spline_8seg::p2_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.x with member variable reference (signed word) spline_8seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p1.y with member variable reference (signed word) spline_8seg::p1_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p2.y with member variable reference (signed word) spline_8seg::p2_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.y with member variable reference (signed word) spline_8seg::p0_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p1.x with member variable reference (signed word) spline_8seg::p1_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.x with member variable reference (signed word) spline_8seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p1.y with member variable reference (signed word) spline_8seg::p1_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.y with member variable reference (signed word) spline_8seg::p0_y
Replacing struct member reference (struct SplineVector16) spline_8seg::a.x with member variable reference (signed word) spline_8seg::a_x
Replacing struct member reference (struct SplineVector16) spline_8seg::b.x with member variable reference (signed word) spline_8seg::b_x
Replacing struct member reference (struct SplineVector16) spline_8seg::a.y with member variable reference (signed word) spline_8seg::a_y
Replacing struct member reference (struct SplineVector16) spline_8seg::b.y with member variable reference (signed word) spline_8seg::b_y
Replacing struct member reference (struct SplineVector16) spline_8seg::a.x with member variable reference (signed word) spline_8seg::a_x
Replacing struct member reference (struct SplineVector16) spline_8seg::a.y with member variable reference (signed word) spline_8seg::a_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.x with member variable reference (signed word) spline_8seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.y with member variable reference (signed word) spline_8seg::p0_y
Replacing struct member reference (struct SplineVector32) spline_8seg::p.x with member variable reference (signed dword) spline_8seg::p_x
Replacing struct member reference (struct SplineVector32) spline_8seg::p.y with member variable reference (signed dword) spline_8seg::p_y
Replacing struct member reference (struct SplineVector32) spline_8seg::p.x with member variable reference (signed dword) spline_8seg::p_x
Replacing struct member reference (struct SplineVector32) spline_8seg::i.x with member variable reference (signed dword) spline_8seg::i_x
Replacing struct member reference (struct SplineVector32) spline_8seg::p.y with member variable reference (signed dword) spline_8seg::p_y
Replacing struct member reference (struct SplineVector32) spline_8seg::i.y with member variable reference (signed dword) spline_8seg::i_y
Replacing struct member reference (struct SplineVector32) spline_8seg::i.x with member variable reference (signed dword) spline_8seg::i_x
Replacing struct member reference (struct SplineVector32) spline_8seg::j.x with member variable reference (signed dword) spline_8seg::j_x
Replacing struct member reference (struct SplineVector32) spline_8seg::i.y with member variable reference (signed dword) spline_8seg::i_y
Replacing struct member reference (struct SplineVector32) spline_8seg::j.y with member variable reference (signed dword) spline_8seg::j_y
Replacing struct member reference (struct SplineVector32) spline_8seg::p.x with member variable reference (signed dword) spline_8seg::p_x
Replacing struct member reference (struct SplineVector32) spline_8seg::p.y with member variable reference (signed dword) spline_8seg::p_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p1.x with member variable reference (signed word) spline_8segB::p1_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p2.x with member variable reference (signed word) spline_8segB::p2_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.x with member variable reference (signed word) spline_8segB::p0_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p1.y with member variable reference (signed word) spline_8segB::p1_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p2.y with member variable reference (signed word) spline_8segB::p2_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.y with member variable reference (signed word) spline_8segB::p0_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p1.x with member variable reference (signed word) spline_8segB::p1_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.x with member variable reference (signed word) spline_8segB::p0_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p1.y with member variable reference (signed word) spline_8segB::p1_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.y with member variable reference (signed word) spline_8segB::p0_y
Replacing struct member reference (struct SplineVector16) spline_8segB::b.x with member variable reference (signed word) spline_8segB::b_x
Replacing struct member reference (struct SplineVector16) spline_8segB::a.x with member variable reference (signed word) spline_8segB::a_x
Replacing struct member reference (struct SplineVector16) spline_8segB::b.y with member variable reference (signed word) spline_8segB::b_y
Replacing struct member reference (struct SplineVector16) spline_8segB::a.y with member variable reference (signed word) spline_8segB::a_y
Replacing struct member reference (struct SplineVector16) spline_8segB::a.x with member variable reference (signed word) spline_8segB::a_x
Replacing struct member reference (struct SplineVector16) spline_8segB::a.y with member variable reference (signed word) spline_8segB::a_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.x with member variable reference (signed word) spline_8segB::p0_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.y with member variable reference (signed word) spline_8segB::p0_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p.x with member variable reference (signed word) spline_8segB::p_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p.y with member variable reference (signed word) spline_8segB::p_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p.x with member variable reference (signed word) spline_8segB::p_x
Replacing struct member reference (struct SplineVector16) spline_8segB::i.x with member variable reference (signed word) spline_8segB::i_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p.y with member variable reference (signed word) spline_8segB::p_y
Replacing struct member reference (struct SplineVector16) spline_8segB::i.y with member variable reference (signed word) spline_8segB::i_y
Replacing struct member reference (struct SplineVector16) spline_8segB::i.x with member variable reference (signed word) spline_8segB::i_x
Replacing struct member reference (struct SplineVector16) spline_8segB::j.x with member variable reference (signed word) spline_8segB::j_x
Replacing struct member reference (struct SplineVector16) spline_8segB::i.y with member variable reference (signed word) spline_8segB::i_y
Replacing struct member reference (struct SplineVector16) spline_8segB::j.y with member variable reference (signed word) spline_8segB::j_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p.x with member variable reference (signed word) spline_8segB::p_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p.y with member variable reference (signed word) spline_8segB::p_y
Replacing struct member reference (struct SplineVector16) show_letter::to.x with member variable reference (signed word) show_letter::to_x
Replacing struct member reference (struct SplineVector16) show_letter::to.y with member variable reference (signed word) show_letter::to_y
Replacing struct member reference (struct SplineVector16) show_letter::to.x with member variable reference (signed word) show_letter::to_x
Replacing struct member reference (struct SplineVector16) show_letter::to.y with member variable reference (signed word) show_letter::to_y
Replacing struct member reference (struct SplineVector16) show_letter::via.x with member variable reference (signed word) show_letter::via_x
Replacing struct member reference (struct SplineVector16) show_letter::via.y with member variable reference (signed word) show_letter::via_y
Replacing struct member reference (struct SplineVector16) show_letter::via.x with member variable reference (signed word) show_letter::via_x
Replacing struct member reference (struct SplineVector16) show_letter::via.y with member variable reference (signed word) show_letter::via_y
Replacing struct member reference (struct Segment) show_letter::segment.type with member variable reference (byte) show_letter::segment_type
Replacing struct member reference (struct Segment) show_letter::segment.to with member variable reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct Segment) show_letter::segment.type with member variable reference (byte) show_letter::segment_type
Replacing struct member reference (struct Segment) show_letter::segment.via with member variable reference (struct SplineVector16) show_letter::segment_via
Replacing struct member reference (struct Segment) show_letter::segment.to with member variable reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct Segment) show_letter::segment.to with member variable reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct SplineVector16) show_letter::current.x with member variable reference (signed word) show_letter::current_x
Replacing struct member reference (struct SplineVector16) show_letter::current.y with member variable reference (signed word) show_letter::current_y
Replacing struct member reference (struct Segment) show_letter::segment.to with member variable reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct Segment) show_letter::segment.to with member variable reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct Segment) show_letter::segment.to with member variable reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct SplineVector16) bitmap_plot_spline_8seg::current.x with member variable reference (signed word) bitmap_plot_spline_8seg::current_x
Replacing struct member reference (struct SplineVector16) bitmap_plot_spline_8seg::current.y with member variable reference (signed word) bitmap_plot_spline_8seg::current_y
Replacing struct member reference (struct SplineVector16) rotate::vector.x with member variable reference (signed word) rotate::vector_x
Replacing struct member reference (struct SplineVector16) rotate::vector.y with member variable reference (signed word) rotate::vector_y
Replacing struct member reference (struct SplineVector16) rotate::vector.y with member variable reference (signed word) rotate::vector_y
Replacing struct member reference (struct SplineVector16) rotate::vector.x with member variable reference (signed word) rotate::vector_x
Converted procedure struct return value to member unwinding return { (signed word) rotate::return_x, (signed word) rotate::return_y }
Replacing struct member reference (struct SplineVector16) spline_16seg::p1.x with member unwinding reference (signed word) spline_16seg::p1_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p2.x with member unwinding reference (signed word) spline_16seg::p2_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.x with member unwinding reference (signed word) spline_16seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p1.y with member unwinding reference (signed word) spline_16seg::p1_y
Replacing struct member reference (struct SplineVector16) spline_16seg::p2.y with member unwinding reference (signed word) spline_16seg::p2_y
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.y with member unwinding reference (signed word) spline_16seg::p0_y
Replacing struct member reference (struct SplineVector16) spline_16seg::p1.x with member unwinding reference (signed word) spline_16seg::p1_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.x with member unwinding reference (signed word) spline_16seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p1.y with member unwinding reference (signed word) spline_16seg::p1_y
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.y with member unwinding reference (signed word) spline_16seg::p0_y
Replacing struct member reference (struct SplineVector16) spline_16seg::a.x with member unwinding reference (signed word) spline_16seg::a_x
Replacing struct member reference (struct SplineVector16) spline_16seg::b.x with member unwinding reference (signed word) spline_16seg::b_x
Replacing struct member reference (struct SplineVector16) spline_16seg::a.y with member unwinding reference (signed word) spline_16seg::a_y
Replacing struct member reference (struct SplineVector16) spline_16seg::b.y with member unwinding reference (signed word) spline_16seg::b_y
Replacing struct member reference (struct SplineVector16) spline_16seg::a.x with member unwinding reference (signed word) spline_16seg::a_x
Replacing struct member reference (struct SplineVector16) spline_16seg::a.y with member unwinding reference (signed word) spline_16seg::a_y
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.x with member unwinding reference (signed word) spline_16seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_16seg::p0.y with member unwinding reference (signed word) spline_16seg::p0_y
Replacing struct member reference (struct SplineVector32) spline_16seg::p.x with member unwinding reference (signed dword) spline_16seg::p_x
Replacing struct member reference (struct SplineVector32) spline_16seg::p.y with member unwinding reference (signed dword) spline_16seg::p_y
Replacing struct member reference (struct SplineVector32) spline_16seg::p.x with member unwinding reference (signed dword) spline_16seg::p_x
Replacing struct member reference (struct SplineVector32) spline_16seg::i.x with member unwinding reference (signed dword) spline_16seg::i_x
Replacing struct member reference (struct SplineVector32) spline_16seg::p.y with member unwinding reference (signed dword) spline_16seg::p_y
Replacing struct member reference (struct SplineVector32) spline_16seg::i.y with member unwinding reference (signed dword) spline_16seg::i_y
Replacing struct member reference (struct SplineVector32) spline_16seg::i.x with member unwinding reference (signed dword) spline_16seg::i_x
Replacing struct member reference (struct SplineVector32) spline_16seg::j.x with member unwinding reference (signed dword) spline_16seg::j_x
Replacing struct member reference (struct SplineVector32) spline_16seg::i.y with member unwinding reference (signed dword) spline_16seg::i_y
Replacing struct member reference (struct SplineVector32) spline_16seg::j.y with member unwinding reference (signed dword) spline_16seg::j_y
Replacing struct member reference (struct SplineVector32) spline_16seg::p.x with member unwinding reference (signed dword) spline_16seg::p_x
Replacing struct member reference (struct SplineVector32) spline_16seg::p.y with member unwinding reference (signed dword) spline_16seg::p_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p1.x with member unwinding reference (signed word) spline_8seg::p1_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p2.x with member unwinding reference (signed word) spline_8seg::p2_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.x with member unwinding reference (signed word) spline_8seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p1.y with member unwinding reference (signed word) spline_8seg::p1_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p2.y with member unwinding reference (signed word) spline_8seg::p2_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.y with member unwinding reference (signed word) spline_8seg::p0_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p1.x with member unwinding reference (signed word) spline_8seg::p1_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.x with member unwinding reference (signed word) spline_8seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p1.y with member unwinding reference (signed word) spline_8seg::p1_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.y with member unwinding reference (signed word) spline_8seg::p0_y
Replacing struct member reference (struct SplineVector16) spline_8seg::a.x with member unwinding reference (signed word) spline_8seg::a_x
Replacing struct member reference (struct SplineVector16) spline_8seg::b.x with member unwinding reference (signed word) spline_8seg::b_x
Replacing struct member reference (struct SplineVector16) spline_8seg::a.y with member unwinding reference (signed word) spline_8seg::a_y
Replacing struct member reference (struct SplineVector16) spline_8seg::b.y with member unwinding reference (signed word) spline_8seg::b_y
Replacing struct member reference (struct SplineVector16) spline_8seg::a.x with member unwinding reference (signed word) spline_8seg::a_x
Replacing struct member reference (struct SplineVector16) spline_8seg::a.y with member unwinding reference (signed word) spline_8seg::a_y
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.x with member unwinding reference (signed word) spline_8seg::p0_x
Replacing struct member reference (struct SplineVector16) spline_8seg::p0.y with member unwinding reference (signed word) spline_8seg::p0_y
Replacing struct member reference (struct SplineVector32) spline_8seg::p.x with member unwinding reference (signed dword) spline_8seg::p_x
Replacing struct member reference (struct SplineVector32) spline_8seg::p.y with member unwinding reference (signed dword) spline_8seg::p_y
Replacing struct member reference (struct SplineVector32) spline_8seg::p.x with member unwinding reference (signed dword) spline_8seg::p_x
Replacing struct member reference (struct SplineVector32) spline_8seg::i.x with member unwinding reference (signed dword) spline_8seg::i_x
Replacing struct member reference (struct SplineVector32) spline_8seg::p.y with member unwinding reference (signed dword) spline_8seg::p_y
Replacing struct member reference (struct SplineVector32) spline_8seg::i.y with member unwinding reference (signed dword) spline_8seg::i_y
Replacing struct member reference (struct SplineVector32) spline_8seg::i.x with member unwinding reference (signed dword) spline_8seg::i_x
Replacing struct member reference (struct SplineVector32) spline_8seg::j.x with member unwinding reference (signed dword) spline_8seg::j_x
Replacing struct member reference (struct SplineVector32) spline_8seg::i.y with member unwinding reference (signed dword) spline_8seg::i_y
Replacing struct member reference (struct SplineVector32) spline_8seg::j.y with member unwinding reference (signed dword) spline_8seg::j_y
Replacing struct member reference (struct SplineVector32) spline_8seg::p.x with member unwinding reference (signed dword) spline_8seg::p_x
Replacing struct member reference (struct SplineVector32) spline_8seg::p.y with member unwinding reference (signed dword) spline_8seg::p_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p1.x with member unwinding reference (signed word) spline_8segB::p1_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p2.x with member unwinding reference (signed word) spline_8segB::p2_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.x with member unwinding reference (signed word) spline_8segB::p0_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p1.y with member unwinding reference (signed word) spline_8segB::p1_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p2.y with member unwinding reference (signed word) spline_8segB::p2_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.y with member unwinding reference (signed word) spline_8segB::p0_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p1.x with member unwinding reference (signed word) spline_8segB::p1_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.x with member unwinding reference (signed word) spline_8segB::p0_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p1.y with member unwinding reference (signed word) spline_8segB::p1_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.y with member unwinding reference (signed word) spline_8segB::p0_y
Replacing struct member reference (struct SplineVector16) spline_8segB::b.x with member unwinding reference (signed word) spline_8segB::b_x
Replacing struct member reference (struct SplineVector16) spline_8segB::a.x with member unwinding reference (signed word) spline_8segB::a_x
Replacing struct member reference (struct SplineVector16) spline_8segB::b.y with member unwinding reference (signed word) spline_8segB::b_y
Replacing struct member reference (struct SplineVector16) spline_8segB::a.y with member unwinding reference (signed word) spline_8segB::a_y
Replacing struct member reference (struct SplineVector16) spline_8segB::a.x with member unwinding reference (signed word) spline_8segB::a_x
Replacing struct member reference (struct SplineVector16) spline_8segB::a.y with member unwinding reference (signed word) spline_8segB::a_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.x with member unwinding reference (signed word) spline_8segB::p0_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p0.y with member unwinding reference (signed word) spline_8segB::p0_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p.x with member unwinding reference (signed word) spline_8segB::p_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p.y with member unwinding reference (signed word) spline_8segB::p_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p.x with member unwinding reference (signed word) spline_8segB::p_x
Replacing struct member reference (struct SplineVector16) spline_8segB::i.x with member unwinding reference (signed word) spline_8segB::i_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p.y with member unwinding reference (signed word) spline_8segB::p_y
Replacing struct member reference (struct SplineVector16) spline_8segB::i.y with member unwinding reference (signed word) spline_8segB::i_y
Replacing struct member reference (struct SplineVector16) spline_8segB::i.x with member unwinding reference (signed word) spline_8segB::i_x
Replacing struct member reference (struct SplineVector16) spline_8segB::j.x with member unwinding reference (signed word) spline_8segB::j_x
Replacing struct member reference (struct SplineVector16) spline_8segB::i.y with member unwinding reference (signed word) spline_8segB::i_y
Replacing struct member reference (struct SplineVector16) spline_8segB::j.y with member unwinding reference (signed word) spline_8segB::j_y
Replacing struct member reference (struct SplineVector16) spline_8segB::p.x with member unwinding reference (signed word) spline_8segB::p_x
Replacing struct member reference (struct SplineVector16) spline_8segB::p.y with member unwinding reference (signed word) spline_8segB::p_y
Replacing struct member reference (struct SplineVector16) show_letter::to.x with member unwinding reference (signed word) show_letter::to_x
Replacing struct member reference (struct SplineVector16) show_letter::to.y with member unwinding reference (signed word) show_letter::to_y
Replacing struct member reference (struct SplineVector16) show_letter::to.x with member unwinding reference (signed word) show_letter::to_x
Replacing struct member reference (struct SplineVector16) show_letter::to.y with member unwinding reference (signed word) show_letter::to_y
Replacing struct member reference (struct SplineVector16) show_letter::via.x with member unwinding reference (signed word) show_letter::via_x
Replacing struct member reference (struct SplineVector16) show_letter::via.y with member unwinding reference (signed word) show_letter::via_y
Replacing struct member reference (struct SplineVector16) show_letter::via.x with member unwinding reference (signed word) show_letter::via_x
Replacing struct member reference (struct SplineVector16) show_letter::via.y with member unwinding reference (signed word) show_letter::via_y
Replacing struct member reference (struct Segment) show_letter::segment.type with member unwinding reference (byte) show_letter::segment_type
Replacing struct member reference (struct Segment) show_letter::segment.to with member unwinding reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct Segment) show_letter::segment.type with member unwinding reference (byte) show_letter::segment_type
Replacing struct member reference (struct Segment) show_letter::segment.via with member unwinding reference (struct SplineVector16) show_letter::segment_via
Replacing struct member reference (struct Segment) show_letter::segment.to with member unwinding reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct Segment) show_letter::segment.to with member unwinding reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct SplineVector16) show_letter::current.x with member unwinding reference (signed word) show_letter::current_x
Replacing struct member reference (struct SplineVector16) show_letter::current.y with member unwinding reference (signed word) show_letter::current_y
Replacing struct member reference (struct Segment) show_letter::segment.to with member unwinding reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct Segment) show_letter::segment.to with member unwinding reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct Segment) show_letter::segment.to with member unwinding reference (struct SplineVector16) show_letter::segment_to
Replacing struct member reference (struct SplineVector16) bitmap_plot_spline_8seg::current.x with member unwinding reference (signed word) bitmap_plot_spline_8seg::current_x
Replacing struct member reference (struct SplineVector16) bitmap_plot_spline_8seg::current.y with member unwinding reference (signed word) bitmap_plot_spline_8seg::current_y
Replacing struct member reference (struct SplineVector16) rotate::vector.x with member unwinding reference (signed word) rotate::vector_x
Replacing struct member reference (struct SplineVector16) rotate::vector.y with member unwinding reference (signed word) rotate::vector_y
Replacing struct member reference (struct SplineVector16) rotate::vector.y with member unwinding reference (signed word) rotate::vector_y
Replacing struct member reference (struct SplineVector16) rotate::vector.x with member unwinding reference (signed word) rotate::vector_x
Created struct value member variable (signed word) show_letter::segment_to_x
Created struct value member variable (signed word) show_letter::segment_to_y
Converted struct value to member variables (struct SplineVector16) show_letter::segment_to
@ -519,13 +519,13 @@ Adding struct value member variable copy (signed word) show_letter::segment_via_
Adding struct value member variable copy (signed word) show_letter::segment_via_y ← (signed word) show_letter::via_y
Adding struct value member variable copy (signed word) show_letter::current_x ← (signed word) show_letter::segment_to_x
Adding struct value member variable copy (signed word) show_letter::current_y ← (signed word) show_letter::segment_to_y
Converted procedure struct value parameter to member variables in call (void~) show_letter::$17 ← call spline_8segB (signed word) show_letter::current_x (signed word) show_letter::current_y (signed word) show_letter::segment_via_x (signed word) show_letter::segment_via_y (signed word) show_letter::segment_to_x (signed word) show_letter::segment_to_y
Converted procedure struct value parameter to member unwinding in call (void~) show_letter::$17 ← call spline_8segB (signed word) show_letter::current_x (signed word) show_letter::current_y (signed word) show_letter::segment_via_x (signed word) show_letter::segment_via_y (signed word) show_letter::segment_to_x (signed word) show_letter::segment_to_y
Adding struct value member variable copy (signed word) show_letter::current_x ← (signed word) show_letter::segment_to_x
Adding struct value member variable copy (signed word) show_letter::current_y ← (signed word) show_letter::segment_to_y
Adding struct value member variable copy (signed word) show_letter::current_x ← (signed word) show_letter::segment_to_x
Adding struct value member variable copy (signed word) show_letter::current_y ← (signed word) show_letter::segment_to_y
Replacing struct member reference (struct SplineVector16) show_letter::segment_to.x with member variable reference (signed word) show_letter::segment_to_x
Replacing struct member reference (struct SplineVector16) show_letter::segment_to.y with member variable reference (signed word) show_letter::segment_to_y
Replacing struct member reference (struct SplineVector16) show_letter::segment_to.x with member unwinding reference (signed word) show_letter::segment_to_x
Replacing struct member reference (struct SplineVector16) show_letter::segment_to.y with member unwinding reference (signed word) show_letter::segment_to_y
Rewriting struct pointer member access *((struct Segment[$16]) letter_c + (byte~) show_letter::$20).to
Rewriting struct pointer member access *((struct Segment[$16]) letter_c + (byte~) show_letter::$20).to
Rewriting struct pointer member access *((struct Segment[$16]) letter_c + (byte~) show_letter::$21).via

View File

@ -3,8 +3,8 @@ Created struct value member variable (byte) main::button_size
Converted struct value to member variables (struct Button) main::button
Adding struct value list initializer (byte) main::button_color ← (const byte) RED
Adding struct value list initializer (byte) main::button_size ← (number) $18
Replacing struct member reference (struct Button) main::button.color with member variable reference (byte) main::button_color
Replacing struct member reference (struct Button) main::button.size with member variable reference (byte) main::button_size
Replacing struct member reference (struct Button) main::button.color with member unwinding reference (byte) main::button_color
Replacing struct member reference (struct Button) main::button.size with member unwinding reference (byte) main::button_size
Identified constant variable (byte) main::button_color
Identified constant variable (byte) main::button_size

View File

@ -3,8 +3,8 @@ Created struct value member variable (byte) main::button_size
Converted struct value to member variables (struct Button) main::button
Adding struct value list initializer (byte) main::button_color ← (const byte) RED
Adding struct value list initializer (byte) main::button_size ← (number) $18
Replacing struct member reference (struct Button) main::button.color with member variable reference (byte) main::button_color
Replacing struct member reference (struct Button) main::button.size with member variable reference (byte) main::button_size
Replacing struct member reference (struct Button) main::button.color with member unwinding reference (byte) main::button_color
Replacing struct member reference (struct Button) main::button.size with member unwinding reference (byte) main::button_size
Identified constant variable (byte) main::button_color
Identified constant variable (byte) main::button_size

View File

@ -4,14 +4,14 @@ Fixing pointer array-indexing *((struct Point[2]) points + (byte) main::i)
Created struct value member variable (byte) print::p_x
Created struct value member variable (byte) print::p_y
Converted struct value to member variables (struct Point) print::p
Converted procedure struct value parameter to member variables (void()) print((byte) print::p_x , (byte) print::p_y)
Converted procedure struct value parameter to member unwinding (void()) print((byte) print::p_x , (byte) print::p_y)
Adding struct value list initializer *((byte*) main::$5 + (number~) main::$2) ← (number) 1
Adding struct value list initializer *((byte*) main::$6 + (number~) main::$2) ← (number) 2
Adding struct value list initializer *((byte*) main::$7 + (number~) main::$3) ← (number) 3
Adding struct value list initializer *((byte*) main::$8 + (number~) main::$3) ← (number) 4
Converted procedure struct value parameter to member variables in call (void~) main::$0 ← call print *((byte*) main::$9 + (byte~) main::$4) *((byte*) main::$10 + (byte~) main::$4)
Replacing struct member reference (struct Point) print::p.x with member variable reference (byte) print::p_x
Replacing struct member reference (struct Point) print::p.y with member variable reference (byte) print::p_y
Converted procedure struct value parameter to member unwinding in call (void~) main::$0 ← call print *((byte*) main::$9 + (byte~) main::$4) *((byte*) main::$10 + (byte~) main::$4)
Replacing struct member reference (struct Point) print::p.x with member unwinding reference (byte) print::p_x
Replacing struct member reference (struct Point) print::p.y with member unwinding reference (byte) print::p_y
Culled Empty Block (label) main::@2
Culled Empty Block (label) @1

View File

@ -5,7 +5,7 @@ Fixing pointer array-indexing *((word*) main::SCREEN + (number) 1)
Created struct value member variable (word*) main::info_values
Converted struct value to member variables (struct RadixInfo) main::info
Adding struct value list initializer (word*) main::info_values ← (word[]) RADIX_DECIMAL_VALUES
Replacing struct member reference (struct RadixInfo) main::info.values with member variable reference (word*) main::info_values
Replacing struct member reference (struct RadixInfo) main::info.values with member unwinding reference (word*) main::info_values
CONTROL FLOW GRAPH SSA
@begin: scope:[] from

View File

@ -5,13 +5,13 @@ Converted struct value to member variables (struct Point) main::point
Created struct value member variable (byte) print::p_x
Created struct value member variable (byte) print::p_y
Converted struct value to member variables (struct Point) print::p
Converted procedure struct value parameter to member variables (void()) print((byte) print::p_x , (byte) print::p_y)
Converted procedure struct value parameter to member unwinding (void()) print((byte) print::p_x , (byte) print::p_y)
Adding struct value list initializer (byte) main::point_x ← (number) 1
Adding struct value list initializer (byte) main::point_y ← (number) 2
Converted procedure struct value parameter to member variables in call (void~) main::$1 ← call print (byte) main::point_x (byte) main::point_y
Converted procedure struct value parameter to member variables in call (void~) main::$2 ← call print *((byte*) main::$3) *((byte*) main::$4)
Replacing struct member reference (struct Point) print::p.x with member variable reference (byte) print::p_x
Replacing struct member reference (struct Point) print::p.y with member variable reference (byte) print::p_y
Converted procedure struct value parameter to member unwinding in call (void~) main::$1 ← call print (byte) main::point_x (byte) main::point_y
Converted procedure struct value parameter to member unwinding in call (void~) main::$2 ← call print *((byte*) main::$3) *((byte*) main::$4)
Replacing struct member reference (struct Point) print::p.x with member unwinding reference (byte) print::p_x
Replacing struct member reference (struct Point) print::p.y with member unwinding reference (byte) print::p_y
Culled Empty Block (label) @1
Adding versioned struct unwinding for (struct Point) main::point#0

View File

@ -3,10 +3,10 @@ Created struct value member variable (byte) point_y
Converted struct value to member variables (struct Point) point
Adding struct value member variable default initializer (byte) point_x ← (byte) 0
Adding struct value member variable default initializer (byte) point_y ← (byte) 0
Replacing struct member reference (struct Point) point.x with member variable reference (byte) point_x
Replacing struct member reference (struct Point) point.y with member variable reference (byte) point_y
Replacing struct member reference (struct Point) point.x with member variable reference (byte) point_x
Replacing struct member reference (struct Point) point.y with member variable reference (byte) point_y
Replacing struct member reference (struct Point) point.x with member unwinding reference (byte) point_x
Replacing struct member reference (struct Point) point.y with member unwinding reference (byte) point_y
Replacing struct member reference (struct Point) point.x with member unwinding reference (byte) point_x
Replacing struct member reference (struct Point) point.y with member unwinding reference (byte) point_y
CONTROL FLOW GRAPH SSA
@begin: scope:[] from

View File

@ -8,14 +8,14 @@ Adding struct value member variable default initializer (byte) point1_x ← (byt
Adding struct value member variable default initializer (byte) point1_y ← (byte) 0
Adding struct value member variable default initializer (byte) point2_x ← (byte) 0
Adding struct value member variable default initializer (byte) point2_y ← (byte) 0
Replacing struct member reference (struct Point) point1.x with member variable reference (byte) point1_x
Replacing struct member reference (struct Point) point1.y with member variable reference (byte) point1_y
Replacing struct member reference (struct Point) point1.y with member variable reference (byte) point1_y
Replacing struct member reference (struct Point) point2.x with member variable reference (byte) point2_x
Replacing struct member reference (struct Point) point1.x with member variable reference (byte) point1_x
Replacing struct member reference (struct Point) point2.y with member variable reference (byte) point2_y
Replacing struct member reference (struct Point) point2.x with member variable reference (byte) point2_x
Replacing struct member reference (struct Point) point2.y with member variable reference (byte) point2_y
Replacing struct member reference (struct Point) point1.x with member unwinding reference (byte) point1_x
Replacing struct member reference (struct Point) point1.y with member unwinding reference (byte) point1_y
Replacing struct member reference (struct Point) point1.y with member unwinding reference (byte) point1_y
Replacing struct member reference (struct Point) point2.x with member unwinding reference (byte) point2_x
Replacing struct member reference (struct Point) point1.x with member unwinding reference (byte) point1_x
Replacing struct member reference (struct Point) point2.y with member unwinding reference (byte) point2_y
Replacing struct member reference (struct Point) point2.x with member unwinding reference (byte) point2_x
Replacing struct member reference (struct Point) point2.y with member unwinding reference (byte) point2_y
CONTROL FLOW GRAPH SSA
@begin: scope:[] from

View File

@ -10,13 +10,13 @@ Adding struct value member variable default initializer (byte) point2_x ← (byt
Adding struct value member variable default initializer (byte) point2_y ← (byte) 0
Adding struct value member variable copy (byte) point2_x ← (byte) point1_x
Adding struct value member variable copy (byte) point2_y ← (byte) point1_y
Replacing struct member reference (struct Point) point1.x with member variable reference (byte) point1_x
Replacing struct member reference (struct Point) point1.y with member variable reference (byte) point1_y
Replacing struct member reference (struct Point) point2.x with member variable reference (byte) point2_x
Replacing struct member reference (struct Point) point1.x with member variable reference (byte) point1_x
Replacing struct member reference (struct Point) point1.y with member variable reference (byte) point1_y
Replacing struct member reference (struct Point) point2.x with member variable reference (byte) point2_x
Replacing struct member reference (struct Point) point2.y with member variable reference (byte) point2_y
Replacing struct member reference (struct Point) point1.x with member unwinding reference (byte) point1_x
Replacing struct member reference (struct Point) point1.y with member unwinding reference (byte) point1_y
Replacing struct member reference (struct Point) point2.x with member unwinding reference (byte) point2_x
Replacing struct member reference (struct Point) point1.x with member unwinding reference (byte) point1_x
Replacing struct member reference (struct Point) point1.y with member unwinding reference (byte) point1_y
Replacing struct member reference (struct Point) point2.x with member unwinding reference (byte) point2_x
Replacing struct member reference (struct Point) point2.y with member unwinding reference (byte) point2_y
CONTROL FLOW GRAPH SSA
@begin: scope:[] from

View File

@ -4,16 +4,16 @@ Converted struct value to member variables (struct Point) main::p1
Created struct value member variable (byte) print::p_x
Created struct value member variable (byte) print::p_y
Converted struct value to member variables (struct Point) print::p
Converted procedure struct value parameter to member variables (void()) print((byte) print::p_x , (byte) print::p_y)
Converted procedure struct value parameter to member unwinding (void()) print((byte) print::p_x , (byte) print::p_y)
Adding struct value member variable default initializer (byte) main::p1_x ← (byte) 0
Adding struct value member variable default initializer (byte) main::p1_y ← (byte) 0
Converted procedure struct value parameter to member variables in call (void~) main::$0 ← call print (byte) main::p1_x (byte) main::p1_y
Converted procedure struct value parameter to member variables in call (void~) main::$1 ← call print (byte) main::p1_x (byte) main::p1_y
Replacing struct member reference (struct Point) main::p1.x with member variable reference (byte) main::p1_x
Replacing struct member reference (struct Point) main::p1.y with member variable reference (byte) main::p1_y
Replacing struct member reference (struct Point) main::p1.x with member variable reference (byte) main::p1_x
Replacing struct member reference (struct Point) print::p.x with member variable reference (byte) print::p_x
Replacing struct member reference (struct Point) print::p.y with member variable reference (byte) print::p_y
Converted procedure struct value parameter to member unwinding in call (void~) main::$0 ← call print (byte) main::p1_x (byte) main::p1_y
Converted procedure struct value parameter to member unwinding in call (void~) main::$1 ← call print (byte) main::p1_x (byte) main::p1_y
Replacing struct member reference (struct Point) main::p1.x with member unwinding reference (byte) main::p1_x
Replacing struct member reference (struct Point) main::p1.y with member unwinding reference (byte) main::p1_y
Replacing struct member reference (struct Point) main::p1.x with member unwinding reference (byte) main::p1_x
Replacing struct member reference (struct Point) print::p.x with member unwinding reference (byte) print::p_x
Replacing struct member reference (struct Point) print::p.y with member unwinding reference (byte) print::p_y
CONTROL FLOW GRAPH SSA
@begin: scope:[] from

View File

@ -3,8 +3,8 @@ Created struct value member variable (byte) main::p_y
Converted struct value to member variables (struct Point) main::p
Adding struct value list initializer (byte) main::p_x ← (byte) main::x
Adding struct value list initializer (byte) main::p_y ← (number~) main::$0
Replacing struct member reference (struct Point) main::p.x with member variable reference (byte) main::p_x
Replacing struct member reference (struct Point) main::p.y with member variable reference (byte) main::p_y
Replacing struct member reference (struct Point) main::p.x with member unwinding reference (byte) main::p_x
Replacing struct member reference (struct Point) main::p.y with member unwinding reference (byte) main::p_y
Identified constant variable (byte) main::x
Identified constant variable (byte) main::y

View File

@ -12,7 +12,7 @@ Created struct value member variable (byte) point::p_y
Converted struct value to member variables (struct Point) point::p
Adding struct value member variable default initializer (byte) main::q_x ← (byte) 0
Adding struct value member variable default initializer (byte) main::q_y ← (byte) 0
Converted procedure call LValue to member variables { (byte) main::$0_x, (byte) main::$0_y } ← call point
Converted procedure call LValue to member unwinding { (byte) main::$0_x, (byte) main::$0_y } ← call point
Adding struct value member variable copy (byte) main::q_x ← (byte) main::$0_x
Adding struct value member variable copy (byte) main::q_y ← (byte) main::$0_y
Adding struct value list initializer (byte) point::p_x ← (number) 2
@ -21,9 +21,9 @@ Adding struct value member variable copy (byte) point::return_x ← (byte) point
Adding struct value member variable copy (byte) point::return_y ← (byte) point::p_y
Adding struct value member variable copy (byte) point::return_x ← (byte) point::return_x
Adding struct value member variable copy (byte) point::return_y ← (byte) point::return_y
Converted procedure struct return value to member variables return { (byte) point::return_x, (byte) point::return_y }
Replacing struct member reference (struct Point) main::q.x with member variable reference (byte) main::q_x
Replacing struct member reference (struct Point) main::q.y with member variable reference (byte) main::q_y
Converted procedure struct return value to member unwinding return { (byte) point::return_x, (byte) point::return_y }
Replacing struct member reference (struct Point) main::q.x with member unwinding reference (byte) main::q_x
Replacing struct member reference (struct Point) main::q.y with member unwinding reference (byte) main::q_y
Identified constant variable (byte) point::p_x
Identified constant variable (byte) point::p_y
Culled Empty Block (label) @1

View File

@ -8,16 +8,16 @@ Adding struct value list initializer (byte) main::p_x ← (number) $a
Adding struct value list initializer (byte) main::p_y ← (number) $a
Adding struct value list initializer (struct Point) main::c_center ← (struct Point) main::p
Adding struct value list initializer (byte) main::c_radius ← (number) 5
Replacing struct member reference (struct Circle) main::c.center with member variable reference (struct Point) main::c_center
Replacing struct member reference (struct Circle) main::c.center with member variable reference (struct Point) main::c_center
Replacing struct member reference (struct Circle) main::c.radius with member variable reference (byte) main::c_radius
Replacing struct member reference (struct Circle) main::c.center with member unwinding reference (struct Point) main::c_center
Replacing struct member reference (struct Circle) main::c.center with member unwinding reference (struct Point) main::c_center
Replacing struct member reference (struct Circle) main::c.radius with member unwinding reference (byte) main::c_radius
Created struct value member variable (byte) main::c_center_x
Created struct value member variable (byte) main::c_center_y
Converted struct value to member variables (struct Point) main::c_center
Adding struct value member variable copy (byte) main::c_center_x ← (byte) main::p_x
Adding struct value member variable copy (byte) main::c_center_y ← (byte) main::p_y
Replacing struct member reference (struct Point) main::c_center.x with member variable reference (byte) main::c_center_x
Replacing struct member reference (struct Point) main::c_center.y with member variable reference (byte) main::c_center_y
Replacing struct member reference (struct Point) main::c_center.x with member unwinding reference (byte) main::c_center_x
Replacing struct member reference (struct Point) main::c_center.y with member unwinding reference (byte) main::c_center_y
Identified constant variable (byte) main::p_x
Identified constant variable (byte) main::p_y
Identified constant variable (byte) main::c_radius

View File

@ -3,12 +3,12 @@ Created struct value member variable (struct Circle) main::t_c2
Converted struct value to member variables (struct TwoCircles) main::t
Adding struct value list initializer (struct Circle) main::t_c1 ← { { (number) 1, (number) 2 }, (number) 3 }
Adding struct value list initializer (struct Circle) main::t_c2 ← { { (number) 4, (number) 5 }, (number) 6 }
Replacing struct member reference (struct TwoCircles) main::t.c1 with member variable reference (struct Circle) main::t_c1
Replacing struct member reference (struct TwoCircles) main::t.c1 with member variable reference (struct Circle) main::t_c1
Replacing struct member reference (struct TwoCircles) main::t.c1 with member variable reference (struct Circle) main::t_c1
Replacing struct member reference (struct TwoCircles) main::t.c2 with member variable reference (struct Circle) main::t_c2
Replacing struct member reference (struct TwoCircles) main::t.c2 with member variable reference (struct Circle) main::t_c2
Replacing struct member reference (struct TwoCircles) main::t.c2 with member variable reference (struct Circle) main::t_c2
Replacing struct member reference (struct TwoCircles) main::t.c1 with member unwinding reference (struct Circle) main::t_c1
Replacing struct member reference (struct TwoCircles) main::t.c1 with member unwinding reference (struct Circle) main::t_c1
Replacing struct member reference (struct TwoCircles) main::t.c1 with member unwinding reference (struct Circle) main::t_c1
Replacing struct member reference (struct TwoCircles) main::t.c2 with member unwinding reference (struct Circle) main::t_c2
Replacing struct member reference (struct TwoCircles) main::t.c2 with member unwinding reference (struct Circle) main::t_c2
Replacing struct member reference (struct TwoCircles) main::t.c2 with member unwinding reference (struct Circle) main::t_c2
Created struct value member variable (struct Point) main::t_c1_center
Created struct value member variable (byte) main::t_c1_radius
Converted struct value to member variables (struct Circle) main::t_c1
@ -19,12 +19,12 @@ Adding struct value list initializer (struct Point) main::t_c1_center ← { (num
Adding struct value list initializer (byte) main::t_c1_radius ← (number) 3
Adding struct value list initializer (struct Point) main::t_c2_center ← { (number) 4, (number) 5 }
Adding struct value list initializer (byte) main::t_c2_radius ← (number) 6
Replacing struct member reference (struct Circle) main::t_c1.center with member variable reference (struct Point) main::t_c1_center
Replacing struct member reference (struct Circle) main::t_c1.center with member variable reference (struct Point) main::t_c1_center
Replacing struct member reference (struct Circle) main::t_c1.radius with member variable reference (byte) main::t_c1_radius
Replacing struct member reference (struct Circle) main::t_c2.center with member variable reference (struct Point) main::t_c2_center
Replacing struct member reference (struct Circle) main::t_c2.center with member variable reference (struct Point) main::t_c2_center
Replacing struct member reference (struct Circle) main::t_c2.radius with member variable reference (byte) main::t_c2_radius
Replacing struct member reference (struct Circle) main::t_c1.center with member unwinding reference (struct Point) main::t_c1_center
Replacing struct member reference (struct Circle) main::t_c1.center with member unwinding reference (struct Point) main::t_c1_center
Replacing struct member reference (struct Circle) main::t_c1.radius with member unwinding reference (byte) main::t_c1_radius
Replacing struct member reference (struct Circle) main::t_c2.center with member unwinding reference (struct Point) main::t_c2_center
Replacing struct member reference (struct Circle) main::t_c2.center with member unwinding reference (struct Point) main::t_c2_center
Replacing struct member reference (struct Circle) main::t_c2.radius with member unwinding reference (byte) main::t_c2_radius
Created struct value member variable (byte) main::t_c1_center_x
Created struct value member variable (byte) main::t_c1_center_y
Converted struct value to member variables (struct Point) main::t_c1_center
@ -35,10 +35,10 @@ Adding struct value list initializer (byte) main::t_c1_center_x ← (number) 1
Adding struct value list initializer (byte) main::t_c1_center_y ← (number) 2
Adding struct value list initializer (byte) main::t_c2_center_x ← (number) 4
Adding struct value list initializer (byte) main::t_c2_center_y ← (number) 5
Replacing struct member reference (struct Point) main::t_c1_center.x with member variable reference (byte) main::t_c1_center_x
Replacing struct member reference (struct Point) main::t_c1_center.y with member variable reference (byte) main::t_c1_center_y
Replacing struct member reference (struct Point) main::t_c2_center.x with member variable reference (byte) main::t_c2_center_x
Replacing struct member reference (struct Point) main::t_c2_center.y with member variable reference (byte) main::t_c2_center_y
Replacing struct member reference (struct Point) main::t_c1_center.x with member unwinding reference (byte) main::t_c1_center_x
Replacing struct member reference (struct Point) main::t_c1_center.y with member unwinding reference (byte) main::t_c1_center_y
Replacing struct member reference (struct Point) main::t_c2_center.x with member unwinding reference (byte) main::t_c2_center_x
Replacing struct member reference (struct Point) main::t_c2_center.y with member unwinding reference (byte) main::t_c2_center_y
Identified constant variable (byte) main::t_c1_radius
Identified constant variable (byte) main::t_c2_radius
Identified constant variable (byte) main::t_c1_center_x

View File

@ -11,10 +11,10 @@ Adding struct value list initializer (byte) main::p_x ← (number) $a
Adding struct value list initializer (byte) main::p_y ← (number) $a
Adding struct value list initializer (struct Point) main::c_center ← (struct Point) main::p
Adding struct value list initializer (byte) main::c_radius ← (number) 5
Replacing struct member reference (struct Circle) main::c.center with member variable reference (struct Point) main::c_center
Replacing struct member reference (struct Point) main::point.x with member variable reference (byte) main::point_x
Replacing struct member reference (struct Point) main::point.y with member variable reference (byte) main::point_y
Replacing struct member reference (struct Circle) main::c.radius with member variable reference (byte) main::c_radius
Replacing struct member reference (struct Circle) main::c.center with member unwinding reference (struct Point) main::c_center
Replacing struct member reference (struct Point) main::point.x with member unwinding reference (byte) main::point_x
Replacing struct member reference (struct Point) main::point.y with member unwinding reference (byte) main::point_y
Replacing struct member reference (struct Circle) main::c.radius with member unwinding reference (byte) main::c_radius
Created struct value member variable (byte) main::c_center_x
Created struct value member variable (byte) main::c_center_y
Converted struct value to member variables (struct Point) main::c_center

View File

@ -8,11 +8,11 @@ Adding struct value list initializer (byte) main::p_x ← (number) $a
Adding struct value list initializer (byte) main::p_y ← (number) $a
Adding struct value member variable default initializer (struct Point) main::c_center ← {}
Adding struct value member variable default initializer (byte) main::c_radius ← (byte) 0
Replacing struct member reference (struct Circle) main::c.center with member variable reference (struct Point) main::c_center
Replacing struct member reference (struct Circle) main::c.radius with member variable reference (byte) main::c_radius
Replacing struct member reference (struct Circle) main::c.center with member variable reference (struct Point) main::c_center
Replacing struct member reference (struct Circle) main::c.center with member variable reference (struct Point) main::c_center
Replacing struct member reference (struct Circle) main::c.radius with member variable reference (byte) main::c_radius
Replacing struct member reference (struct Circle) main::c.center with member unwinding reference (struct Point) main::c_center
Replacing struct member reference (struct Circle) main::c.radius with member unwinding reference (byte) main::c_radius
Replacing struct member reference (struct Circle) main::c.center with member unwinding reference (struct Point) main::c_center
Replacing struct member reference (struct Circle) main::c.center with member unwinding reference (struct Point) main::c_center
Replacing struct member reference (struct Circle) main::c.radius with member unwinding reference (byte) main::c_radius
Created struct value member variable (byte) main::c_center_x
Created struct value member variable (byte) main::c_center_y
Converted struct value to member variables (struct Point) main::c_center
@ -20,8 +20,8 @@ Adding struct value member variable default initializer (byte) main::c_center_x
Adding struct value member variable default initializer (byte) main::c_center_y ← (byte) 0
Adding struct value member variable copy (byte) main::c_center_x ← (byte) main::p_x
Adding struct value member variable copy (byte) main::c_center_y ← (byte) main::p_y
Replacing struct member reference (struct Point) main::c_center.x with member variable reference (byte) main::c_center_x
Replacing struct member reference (struct Point) main::c_center.y with member variable reference (byte) main::c_center_y
Replacing struct member reference (struct Point) main::c_center.x with member unwinding reference (byte) main::c_center_x
Replacing struct member reference (struct Point) main::c_center.y with member unwinding reference (byte) main::c_center_y
Identified constant variable (byte) main::p_x
Identified constant variable (byte) main::p_y