From 5e3cbe1f3a329153e4483ebcd9c62ef337fd9ad4 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Fri, 20 Apr 2018 23:09:18 +0200 Subject: [PATCH] Added a const inline case --- .../dk/camelot64/kickc/test/TestPrograms.java | 4 +- .../test/kc/{bool-min.kc => bool-const.kc} | 11 + .../test/ref/{bool-min.asm => bool-const.asm} | 6 + .../camelot64/kickc/test/ref/bool-const.cfg | 51 ++ .../test/ref/{bool-min.log => bool-const.log} | 488 +++++++++++++----- .../test/ref/{bool-min.sym => bool-const.sym} | 7 +- .../dk/camelot64/kickc/test/ref/bool-min.cfg | 38 -- 7 files changed, 446 insertions(+), 159 deletions(-) rename src/test/java/dk/camelot64/kickc/test/kc/{bool-min.kc => bool-const.kc} (74%) rename src/test/java/dk/camelot64/kickc/test/ref/{bool-min.asm => bool-const.asm} (75%) create mode 100644 src/test/java/dk/camelot64/kickc/test/ref/bool-const.cfg rename src/test/java/dk/camelot64/kickc/test/ref/{bool-min.log => bool-const.log} (56%) rename src/test/java/dk/camelot64/kickc/test/ref/{bool-min.sym => bool-const.sym} (76%) delete mode 100644 src/test/java/dk/camelot64/kickc/test/ref/bool-min.cfg diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index e861728e6..be1516656 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -52,8 +52,8 @@ public class TestPrograms { @Test - public void testBoolMin() throws IOException, URISyntaxException { - compileAndCompare("bool-min"); + public void testBoolConst() throws IOException, URISyntaxException { + compileAndCompare("bool-const"); } @Test diff --git a/src/test/java/dk/camelot64/kickc/test/kc/bool-min.kc b/src/test/java/dk/camelot64/kickc/test/kc/bool-const.kc similarity index 74% rename from src/test/java/dk/camelot64/kickc/test/kc/bool-min.kc rename to src/test/java/dk/camelot64/kickc/test/kc/bool-const.kc index 341addd12..08053e665 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/bool-min.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/bool-const.kc @@ -7,6 +7,7 @@ const byte* SCREEN = $400; void main() { bool_const_if(); bool_const_vars(); + bool_const_inline(); } // A constant boolean inside an if() @@ -30,4 +31,14 @@ void bool_const_vars() { } else { SCREEN[1] = 'f'; } +} + +// A constant boolean inside an if() +void bool_const_inline() { + byte a = 23; + if((a!=44) || (a>=-8) && (a==15) || !(21=-8) && (a==15) || !(21= (signed byte/signed word/signed dword~) bool_const_inline::$1 + (boolean~) bool_const_inline::$3 ← (byte) bool_const_inline::a == (byte/signed byte/word/signed word/dword/signed dword) 15 + (boolean~) bool_const_inline::$4 ← (boolean~) bool_const_inline::$2 && (boolean~) bool_const_inline::$3 + (boolean~) bool_const_inline::$5 ← (boolean~) bool_const_inline::$0 || (boolean~) bool_const_inline::$4 + (boolean~) bool_const_inline::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 21 < (byte) bool_const_inline::a + (boolean~) bool_const_inline::$7 ← ! (boolean~) bool_const_inline::$6 + (boolean~) bool_const_inline::$8 ← (boolean~) bool_const_inline::$5 || (boolean~) bool_const_inline::$7 + (boolean~) bool_const_inline::$9 ← ! (boolean~) bool_const_inline::$8 + if((boolean~) bool_const_inline::$9) goto bool_const_inline::@1 + *((byte*) SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' + goto bool_const_inline::@2 +bool_const_inline::@1: + *((byte*) SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 'f' +bool_const_inline::@2: +bool_const_inline::@return: + return +endproc // bool_const_inline() call main SYMBOLS @@ -89,6 +122,21 @@ SYMBOLS (label) bool_const_if::@2 (label) bool_const_if::@return (boolean) bool_const_if::b +(void()) bool_const_inline() +(boolean~) bool_const_inline::$0 +(signed byte/signed word/signed dword~) bool_const_inline::$1 +(boolean~) bool_const_inline::$2 +(boolean~) bool_const_inline::$3 +(boolean~) bool_const_inline::$4 +(boolean~) bool_const_inline::$5 +(boolean~) bool_const_inline::$6 +(boolean~) bool_const_inline::$7 +(boolean~) bool_const_inline::$8 +(boolean~) bool_const_inline::$9 +(label) bool_const_inline::@1 +(label) bool_const_inline::@2 +(label) bool_const_inline::@return +(byte) bool_const_inline::a (void()) bool_const_vars() (boolean~) bool_const_vars::$0 (boolean~) bool_const_vars::$1 @@ -112,6 +160,7 @@ SYMBOLS (void()) main() (void~) main::$0 (void~) main::$1 +(void~) main::$2 (label) main::@return Promoting word/signed word/dword/signed dword to byte* in SCREEN ← ((byte*)) 1024 @@ -122,6 +171,7 @@ INITIAL CONTROL FLOW GRAPH main: scope:[main] from (void~) main::$0 ← call bool_const_if (void~) main::$1 ← call bool_const_vars + (void~) main::$2 ← call bool_const_inline to:main::@return main::@return: scope:[main] from main return @@ -181,18 +231,51 @@ bool_const_vars::@return: scope:[bool_const_vars] from bool_const_vars::@2 return to:@return @3: scope:[] from @2 + to:@4 +bool_const_inline: scope:[bool_const_inline] from + (byte) bool_const_inline::a ← (byte/signed byte/word/signed word/dword/signed dword) 23 + (boolean~) bool_const_inline::$0 ← (byte) bool_const_inline::a != (byte/signed byte/word/signed word/dword/signed dword) 44 + (signed byte/signed word/signed dword~) bool_const_inline::$1 ← - (byte/signed byte/word/signed word/dword/signed dword) 8 + (boolean~) bool_const_inline::$2 ← (byte) bool_const_inline::a >= (signed byte/signed word/signed dword~) bool_const_inline::$1 + (boolean~) bool_const_inline::$3 ← (byte) bool_const_inline::a == (byte/signed byte/word/signed word/dword/signed dword) 15 + (boolean~) bool_const_inline::$4 ← (boolean~) bool_const_inline::$2 && (boolean~) bool_const_inline::$3 + (boolean~) bool_const_inline::$5 ← (boolean~) bool_const_inline::$0 || (boolean~) bool_const_inline::$4 + (boolean~) bool_const_inline::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 21 < (byte) bool_const_inline::a + (boolean~) bool_const_inline::$7 ← ! (boolean~) bool_const_inline::$6 + (boolean~) bool_const_inline::$8 ← (boolean~) bool_const_inline::$5 || (boolean~) bool_const_inline::$7 + (boolean~) bool_const_inline::$9 ← ! (boolean~) bool_const_inline::$8 + if((boolean~) bool_const_inline::$9) goto bool_const_inline::@1 + to:bool_const_inline::@3 +bool_const_inline::@1: scope:[bool_const_inline] from bool_const_inline bool_const_inline::@4 + *((byte*) SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 'f' + to:bool_const_inline::@2 +bool_const_inline::@3: scope:[bool_const_inline] from bool_const_inline + *((byte*) SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' + to:bool_const_inline::@2 +bool_const_inline::@2: scope:[bool_const_inline] from bool_const_inline::@1 bool_const_inline::@3 + to:bool_const_inline::@return +bool_const_inline::@4: scope:[bool_const_inline] from + to:bool_const_inline::@1 +bool_const_inline::@return: scope:[bool_const_inline] from bool_const_inline::@2 + return + to:@return +@4: scope:[] from @3 call main to:@end -@end: scope:[] from @3 +@end: scope:[] from @4 Eliminating unused variable - keeping the call (void~) main::$0 Eliminating unused variable - keeping the call (void~) main::$1 +Eliminating unused variable - keeping the call (void~) main::$2 Removing empty block @1 Removing empty block bool_const_if::@2 Removing empty block bool_const_if::@4 Removing empty block @2 Removing empty block bool_const_vars::@2 Removing empty block bool_const_vars::@4 +Removing empty block @3 +Removing empty block bool_const_inline::@2 +Removing empty block bool_const_inline::@4 PROCEDURE MODIFY VARIABLE ANALYSIS Completing Phi functions... @@ -200,16 +283,19 @@ Completing Phi functions... CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@3 -main: scope:[main] from @3 + to:@4 +main: scope:[main] from @4 call bool_const_if param-assignment to:main::@1 main::@1: scope:[main] from main call bool_const_vars param-assignment to:main::@2 main::@2: scope:[main] from main::@1 + call bool_const_inline param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 to:main::@return -main::@return: scope:[main] from main::@2 +main::@return: scope:[main] from main::@3 return to:@return bool_const_if: scope:[bool_const_if] from main @@ -254,16 +340,39 @@ bool_const_vars::@3: scope:[bool_const_vars] from bool_const_vars bool_const_vars::@return: scope:[bool_const_vars] from bool_const_vars::@1 bool_const_vars::@3 return to:@return -@3: scope:[] from @begin +bool_const_inline: scope:[bool_const_inline] from main::@2 + (byte) bool_const_inline::a#0 ← (byte/signed byte/word/signed word/dword/signed dword) 23 + (boolean~) bool_const_inline::$0 ← (byte) bool_const_inline::a#0 != (byte/signed byte/word/signed word/dword/signed dword) 44 + (signed byte/signed word/signed dword~) bool_const_inline::$1 ← - (byte/signed byte/word/signed word/dword/signed dword) 8 + (boolean~) bool_const_inline::$2 ← (byte) bool_const_inline::a#0 >= (signed byte/signed word/signed dword~) bool_const_inline::$1 + (boolean~) bool_const_inline::$3 ← (byte) bool_const_inline::a#0 == (byte/signed byte/word/signed word/dword/signed dword) 15 + (boolean~) bool_const_inline::$4 ← (boolean~) bool_const_inline::$2 && (boolean~) bool_const_inline::$3 + (boolean~) bool_const_inline::$5 ← (boolean~) bool_const_inline::$0 || (boolean~) bool_const_inline::$4 + (boolean~) bool_const_inline::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 21 < (byte) bool_const_inline::a#0 + (boolean~) bool_const_inline::$7 ← ! (boolean~) bool_const_inline::$6 + (boolean~) bool_const_inline::$8 ← (boolean~) bool_const_inline::$5 || (boolean~) bool_const_inline::$7 + (boolean~) bool_const_inline::$9 ← ! (boolean~) bool_const_inline::$8 + if((boolean~) bool_const_inline::$9) goto bool_const_inline::@1 + to:bool_const_inline::@3 +bool_const_inline::@1: scope:[bool_const_inline] from bool_const_inline + *((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 'f' + to:bool_const_inline::@return +bool_const_inline::@3: scope:[bool_const_inline] from bool_const_inline + *((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' + to:bool_const_inline::@return +bool_const_inline::@return: scope:[bool_const_inline] from bool_const_inline::@1 bool_const_inline::@3 + return + to:@return +@4: scope:[] from @begin call main param-assignment - to:@4 -@4: scope:[] from @3 + to:@5 +@5: scope:[] from @4 to:@end -@end: scope:[] from @4 +@end: scope:[] from @5 SYMBOL TABLE SSA -(label) @3 (label) @4 +(label) @5 (label) @begin (label) @end (byte*) SCREEN @@ -275,6 +384,22 @@ SYMBOL TABLE SSA (label) bool_const_if::@return (boolean) bool_const_if::b (boolean) bool_const_if::b#0 +(void()) bool_const_inline() +(boolean~) bool_const_inline::$0 +(signed byte/signed word/signed dword~) bool_const_inline::$1 +(boolean~) bool_const_inline::$2 +(boolean~) bool_const_inline::$3 +(boolean~) bool_const_inline::$4 +(boolean~) bool_const_inline::$5 +(boolean~) bool_const_inline::$6 +(boolean~) bool_const_inline::$7 +(boolean~) bool_const_inline::$8 +(boolean~) bool_const_inline::$9 +(label) bool_const_inline::@1 +(label) bool_const_inline::@3 +(label) bool_const_inline::@return +(byte) bool_const_inline::a +(byte) bool_const_inline::a#0 (void()) bool_const_vars() (boolean~) bool_const_vars::$0 (boolean~) bool_const_vars::$1 @@ -302,13 +427,15 @@ SYMBOL TABLE SSA (void()) main() (label) main::@1 (label) main::@2 +(label) main::@3 (label) main::@return OPTIMIZING CONTROL FLOW GRAPH -Culled Empty Block (label) main::@2 -Culled Empty Block (label) @4 +Culled Empty Block (label) main::@3 +Culled Empty Block (label) @5 Succesful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (boolean~) bool_const_vars::$2 ← (byte/signed byte/word/signed word/dword/signed dword) 21 >= (byte) bool_const_vars::a#0 from (boolean~) bool_const_vars::$1 ← (byte/signed byte/word/signed word/dword/signed dword) 21 < (byte) bool_const_vars::a#0 +Inversing boolean not (boolean~) bool_const_inline::$7 ← (byte/signed byte/word/signed word/dword/signed dword) 21 >= (byte) bool_const_inline::a#0 from (boolean~) bool_const_inline::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 21 < (byte) bool_const_inline::a#0 Succesful SSA optimization Pass2UnaryNotSimplification Alias (boolean) bool_const_vars::b1#0 = (boolean~) bool_const_vars::$3 Alias (boolean) bool_const_vars::b2#0 = (boolean~) bool_const_vars::$7 @@ -318,21 +445,31 @@ Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const boolean) bool_const_if::b#0 = true Constant (const byte) bool_const_vars::a#0 = 14 Constant (const signed byte/signed word/signed dword) bool_const_vars::$5 = -8 +Constant (const byte) bool_const_inline::a#0 = 23 +Constant (const signed byte/signed word/signed dword) bool_const_inline::$1 = -8 Succesful SSA optimization Pass2ConstantIdentification Constant (const boolean) bool_const_if::$0 = !bool_const_if::b#0 Constant (const boolean) bool_const_vars::$0 = bool_const_vars::a#0==15 Constant (const boolean) bool_const_vars::$2 = 21>=bool_const_vars::a#0 Constant (const boolean) bool_const_vars::$4 = bool_const_vars::a#0!=44 Constant (const boolean) bool_const_vars::$6 = bool_const_vars::a#0>=bool_const_vars::$5 +Constant (const boolean) bool_const_inline::$0 = bool_const_inline::a#0!=44 +Constant (const boolean) bool_const_inline::$2 = bool_const_inline::a#0>=bool_const_inline::$1 +Constant (const boolean) bool_const_inline::$3 = bool_const_inline::a#0==15 +Constant (const boolean) bool_const_inline::$7 = 21>=bool_const_inline::a#0 Succesful SSA optimization Pass2ConstantIdentification Constant (const boolean) bool_const_vars::b1#0 = bool_const_vars::$0||bool_const_vars::$2 Constant (const boolean) bool_const_vars::b2#0 = bool_const_vars::$4||bool_const_vars::$6 +Constant (const boolean) bool_const_inline::$4 = bool_const_inline::$2&&bool_const_inline::$3 Succesful SSA optimization Pass2ConstantIdentification Constant (const boolean) bool_const_vars::$8 = !bool_const_vars::b2#0 +Constant (const boolean) bool_const_inline::$5 = bool_const_inline::$0||bool_const_inline::$4 Succesful SSA optimization Pass2ConstantIdentification Constant (const boolean) bool_const_vars::$9 = bool_const_vars::b1#0&&bool_const_vars::$8 +Constant (const boolean) bool_const_inline::$8 = bool_const_inline::$5||bool_const_inline::$7 Succesful SSA optimization Pass2ConstantIdentification Constant (const boolean) bool_const_vars::b#0 = bool_const_vars::$9||false +Constant (const boolean) bool_const_inline::$9 = !bool_const_inline::$8 Succesful SSA optimization Pass2ConstantIdentification Constant (const boolean) bool_const_vars::$11 = !bool_const_vars::b#0 Succesful SSA optimization Pass2ConstantIdentification @@ -340,57 +477,75 @@ Consolidated array index constant in *(SCREEN#0+0) Consolidated array index constant in *(SCREEN#0+0) Consolidated array index constant in *(SCREEN#0+1) Consolidated array index constant in *(SCREEN#0+1) +Consolidated array index constant in *(SCREEN#0+2) +Consolidated array index constant in *(SCREEN#0+2) Succesful SSA optimization Pass2ConstantAdditionElimination if() condition always false - eliminating if if((const boolean) bool_const_if::$0) goto bool_const_if::@1 if() condition always true - replacing block destination if((const boolean) bool_const_vars::$11) goto bool_const_vars::@1 +if() condition always false - eliminating if if((const boolean) bool_const_inline::$9) goto bool_const_inline::@1 Succesful SSA optimization Pass2ConstantIfs Removing unused block bool_const_if::@1 Removing unused block bool_const_vars::@3 +Removing unused block bool_const_inline::@1 Succesful SSA optimization Pass2EliminateUnusedBlocks Eliminating unused constant (const boolean) bool_const_if::$0 Eliminating unused constant (const boolean) bool_const_vars::$11 +Eliminating unused constant (const boolean) bool_const_inline::$9 Succesful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const boolean) bool_const_if::b#0 Eliminating unused constant (const boolean) bool_const_vars::b#0 +Eliminating unused constant (const boolean) bool_const_inline::$8 Succesful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const boolean) bool_const_vars::$9 +Eliminating unused constant (const boolean) bool_const_inline::$7 +Eliminating unused constant (const boolean) bool_const_inline::$5 Succesful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const boolean) bool_const_vars::b1#0 Eliminating unused constant (const boolean) bool_const_vars::$8 +Eliminating unused constant (const boolean) bool_const_inline::$0 +Eliminating unused constant (const boolean) bool_const_inline::$4 Succesful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const boolean) bool_const_vars::$0 Eliminating unused constant (const boolean) bool_const_vars::$2 Eliminating unused constant (const boolean) bool_const_vars::b2#0 +Eliminating unused constant (const boolean) bool_const_inline::$2 +Eliminating unused constant (const boolean) bool_const_inline::$3 Succesful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const boolean) bool_const_vars::$4 Eliminating unused constant (const boolean) bool_const_vars::$6 +Eliminating unused constant (const byte) bool_const_inline::a#0 +Eliminating unused constant (const signed byte/signed word/signed dword) bool_const_inline::$1 Succesful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const byte) bool_const_vars::a#0 Eliminating unused constant (const signed byte/signed word/signed dword) bool_const_vars::$5 Succesful SSA optimization PassNEliminateUnusedVars OPTIMIZING CONTROL FLOW GRAPH -Block Sequence Planned @begin @3 @end main main::@1 main::@return bool_const_vars bool_const_vars::@1 bool_const_vars::@return bool_const_if bool_const_if::@3 bool_const_if::@return -Block Sequence Planned @begin @3 @end main main::@1 main::@return bool_const_vars bool_const_vars::@1 bool_const_vars::@return bool_const_if bool_const_if::@3 bool_const_if::@return +Block Sequence Planned @begin @4 @end main main::@1 main::@2 main::@return bool_const_inline bool_const_inline::@3 bool_const_inline::@return bool_const_vars bool_const_vars::@1 bool_const_vars::@return bool_const_if bool_const_if::@3 bool_const_if::@return +Block Sequence Planned @begin @4 @end main main::@1 main::@2 main::@return bool_const_inline bool_const_inline::@3 bool_const_inline::@return bool_const_vars bool_const_vars::@1 bool_const_vars::@return bool_const_if bool_const_if::@3 bool_const_if::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @3 +Adding NOP phi() at start of @4 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@1 +Adding NOP phi() at start of main::@2 +Adding NOP phi() at start of bool_const_inline Adding NOP phi() at start of bool_const_vars Adding NOP phi() at start of bool_const_if CALL GRAPH Calls in [] to main:2 -Calls in [main] to bool_const_if:5 bool_const_vars:7 +Calls in [main] to bool_const_if:5 bool_const_vars:7 bool_const_inline:9 Propagating live ranges... Created 0 initial phi equivalence classes Coalesced down to 0 phi equivalence classes -Block Sequence Planned @begin @3 @end main main::@1 main::@return bool_const_vars bool_const_vars::@1 bool_const_vars::@return bool_const_if bool_const_if::@3 bool_const_if::@return +Block Sequence Planned @begin @4 @end main main::@1 main::@2 main::@return bool_const_inline bool_const_inline::@3 bool_const_inline::@return bool_const_vars bool_const_vars::@1 bool_const_vars::@return bool_const_if bool_const_if::@3 bool_const_if::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @3 +Adding NOP phi() at start of @4 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@1 +Adding NOP phi() at start of main::@2 +Adding NOP phi() at start of bool_const_inline Adding NOP phi() at start of bool_const_vars Adding NOP phi() at start of bool_const_if Propagating live ranges... @@ -398,56 +553,73 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@3 -@3: scope:[] from @begin + to:@4 +@4: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @3 +@end: scope:[] from @4 [3] phi() [ ] ( ) -main: scope:[main] from @3 +main: scope:[main] from @4 [4] phi() [ ] ( main:2 [ ] ) [5] call bool_const_if param-assignment [ ] ( main:2 [ ] ) to:main::@1 main::@1: scope:[main] from main [6] phi() [ ] ( main:2 [ ] ) [7] call bool_const_vars param-assignment [ ] ( main:2 [ ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] phi() [ ] ( main:2 [ ] ) + [9] call bool_const_inline param-assignment [ ] ( main:2 [ ] ) to:main::@return -main::@return: scope:[main] from main::@1 - [8] return [ ] ( main:2 [ ] ) +main::@return: scope:[main] from main::@2 + [10] return [ ] ( main:2 [ ] ) + to:@return +bool_const_inline: scope:[bool_const_inline] from main::@2 + [11] phi() [ ] ( main:2::bool_const_inline:9 [ ] ) + to:bool_const_inline::@3 +bool_const_inline::@3: scope:[bool_const_inline] from bool_const_inline + [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' [ ] ( main:2::bool_const_inline:9 [ ] ) + to:bool_const_inline::@return +bool_const_inline::@return: scope:[bool_const_inline] from bool_const_inline::@3 + [13] return [ ] ( main:2::bool_const_inline:9 [ ] ) to:@return bool_const_vars: scope:[bool_const_vars] from main::@1 - [9] phi() [ ] ( main:2::bool_const_vars:7 [ ] ) + [14] phi() [ ] ( main:2::bool_const_vars:7 [ ] ) to:bool_const_vars::@1 bool_const_vars::@1: scope:[bool_const_vars] from bool_const_vars - [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) + [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) to:bool_const_vars::@return bool_const_vars::@return: scope:[bool_const_vars] from bool_const_vars::@1 - [11] return [ ] ( main:2::bool_const_vars:7 [ ] ) + [16] return [ ] ( main:2::bool_const_vars:7 [ ] ) to:@return bool_const_if: scope:[bool_const_if] from main - [12] phi() [ ] ( main:2::bool_const_if:5 [ ] ) + [17] phi() [ ] ( main:2::bool_const_if:5 [ ] ) to:bool_const_if::@3 bool_const_if::@3: scope:[bool_const_if] from bool_const_if - [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) + [18] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) to:bool_const_if::@return bool_const_if::@return: scope:[bool_const_if] from bool_const_if::@3 - [14] return [ ] ( main:2::bool_const_if:5 [ ] ) + [19] return [ ] ( main:2::bool_const_if:5 [ ] ) to:@return DOMINATORS @begin dominated by @begin -@3 dominated by @begin @3 -@end dominated by @begin @3 @end -main dominated by @begin @3 main -main::@1 dominated by @begin @3 main::@1 main -main::@return dominated by main::@return @begin @3 main::@1 main -bool_const_vars dominated by bool_const_vars @begin @3 main::@1 main -bool_const_vars::@1 dominated by bool_const_vars @begin @3 bool_const_vars::@1 main::@1 main -bool_const_vars::@return dominated by bool_const_vars @begin @3 bool_const_vars::@1 main::@1 bool_const_vars::@return main -bool_const_if dominated by @begin @3 main bool_const_if -bool_const_if::@3 dominated by bool_const_if::@3 @begin @3 main bool_const_if -bool_const_if::@return dominated by bool_const_if::@3 @begin @3 bool_const_if::@return main bool_const_if +@4 dominated by @begin @4 +@end dominated by @begin @end @4 +main dominated by @begin main @4 +main::@1 dominated by @begin main @4 main::@1 +main::@2 dominated by @begin main @4 main::@1 main::@2 +main::@return dominated by main::@return @begin main @4 main::@1 main::@2 +bool_const_inline dominated by bool_const_inline @begin main @4 main::@1 main::@2 +bool_const_inline::@3 dominated by bool_const_inline @begin bool_const_inline::@3 main @4 main::@1 main::@2 +bool_const_inline::@return dominated by bool_const_inline @begin bool_const_inline::@3 main @4 main::@1 main::@2 bool_const_inline::@return +bool_const_vars dominated by @begin main bool_const_vars @4 main::@1 +bool_const_vars::@1 dominated by @begin bool_const_vars::@1 main bool_const_vars @4 main::@1 +bool_const_vars::@return dominated by @begin bool_const_vars::@1 bool_const_vars::@return main bool_const_vars @4 main::@1 +bool_const_if dominated by @begin main bool_const_if @4 +bool_const_if::@3 dominated by bool_const_if::@3 @begin main bool_const_if @4 +bool_const_if::@return dominated by bool_const_if::@3 @begin bool_const_if::@return main bool_const_if @4 NATURAL LOOPS @@ -456,12 +628,15 @@ Found 0 loops in scope [] Found 0 loops in scope [main] Found 0 loops in scope [bool_const_if] Found 0 loops in scope [bool_const_vars] +Found 0 loops in scope [bool_const_inline] VARIABLE REGISTER WEIGHTS (byte*) SCREEN (void()) bool_const_if() (boolean) bool_const_if::b +(void()) bool_const_inline() +(byte) bool_const_inline::a (void()) bool_const_vars() (byte) bool_const_vars::a (boolean) bool_const_vars::b @@ -481,24 +656,24 @@ INITIAL ASM .label SCREEN = $400 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -b3_from_bbegin: - jmp b3 -//SEG4 @3 -b3: +//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] +b4_from_bbegin: + jmp b4 +//SEG4 @4 +b4: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @3 to main [phi:@3->main] -main_from_b3: +//SEG6 [4] phi from @4 to main [phi:@4->main] +main_from_b4: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -bend_from_b3: +//SEG7 [3] phi from @4 to @end [phi:@4->@end] +bend_from_b4: jmp bend //SEG8 @end bend: //SEG9 main main: { //SEG10 [5] call bool_const_if param-assignment [ ] ( main:2 [ ] ) - //SEG11 [12] phi from main to bool_const_if [phi:main->bool_const_if] + //SEG11 [17] phi from main to bool_const_if [phi:main->bool_const_if] bool_const_if_from_main: jsr bool_const_if //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -507,58 +682,84 @@ main: { //SEG13 main::@1 b1: //SEG14 [7] call bool_const_vars param-assignment [ ] ( main:2 [ ] ) - //SEG15 [9] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] + //SEG15 [14] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] bool_const_vars_from_b1: jsr bool_const_vars + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + jmp b2 + //SEG17 main::@2 + b2: + //SEG18 [9] call bool_const_inline param-assignment [ ] ( main:2 [ ] ) + //SEG19 [11] phi from main::@2 to bool_const_inline [phi:main::@2->bool_const_inline] + bool_const_inline_from_b2: + jsr bool_const_inline jmp breturn - //SEG16 main::@return + //SEG20 main::@return breturn: - //SEG17 [8] return [ ] ( main:2 [ ] ) + //SEG21 [10] return [ ] ( main:2 [ ] ) rts } -//SEG18 bool_const_vars +//SEG22 bool_const_inline +bool_const_inline: { + jmp b3 + //SEG23 bool_const_inline::@3 + b3: + //SEG24 [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' [ ] ( main:2::bool_const_inline:9 [ ] ) -- _deref_pbuc1=vbuc2 + lda #'t' + sta SCREEN+2 + jmp breturn + //SEG25 bool_const_inline::@return + breturn: + //SEG26 [13] return [ ] ( main:2::bool_const_inline:9 [ ] ) + rts +} +//SEG27 bool_const_vars bool_const_vars: { jmp b1 - //SEG19 bool_const_vars::@1 + //SEG28 bool_const_vars::@1 b1: - //SEG20 [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG29 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) -- _deref_pbuc1=vbuc2 lda #'f' sta SCREEN+1 jmp breturn - //SEG21 bool_const_vars::@return + //SEG30 bool_const_vars::@return breturn: - //SEG22 [11] return [ ] ( main:2::bool_const_vars:7 [ ] ) + //SEG31 [16] return [ ] ( main:2::bool_const_vars:7 [ ] ) rts } -//SEG23 bool_const_if +//SEG32 bool_const_if bool_const_if: { jmp b3 - //SEG24 bool_const_if::@3 + //SEG33 bool_const_if::@3 b3: - //SEG25 [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG34 [18] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #'t' sta SCREEN+0 jmp breturn - //SEG26 bool_const_if::@return + //SEG35 bool_const_if::@return breturn: - //SEG27 [14] return [ ] ( main:2::bool_const_if:5 [ ] ) + //SEG36 [19] return [ ] ( main:2::bool_const_if:5 [ ] ) rts } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' [ ] ( main:2::bool_const_inline:9 [ ] ) always clobbers reg byte a +Statement [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) always clobbers reg byte a +Statement [18] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] Uplift Scope [bool_const_if] Uplift Scope [bool_const_vars] +Uplift Scope [bool_const_inline] Uplift Scope [] -Uplifting [main] best 126 combination -Uplifting [bool_const_if] best 126 combination -Uplifting [bool_const_vars] best 126 combination -Uplifting [] best 126 combination +Uplifting [main] best 180 combination +Uplifting [bool_const_if] best 180 combination +Uplifting [bool_const_vars] best 180 combination +Uplifting [bool_const_inline] best 180 combination +Uplifting [] best 180 combination ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -569,24 +770,24 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -b3_from_bbegin: - jmp b3 -//SEG4 @3 -b3: +//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] +b4_from_bbegin: + jmp b4 +//SEG4 @4 +b4: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @3 to main [phi:@3->main] -main_from_b3: +//SEG6 [4] phi from @4 to main [phi:@4->main] +main_from_b4: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -bend_from_b3: +//SEG7 [3] phi from @4 to @end [phi:@4->@end] +bend_from_b4: jmp bend //SEG8 @end bend: //SEG9 main main: { //SEG10 [5] call bool_const_if param-assignment [ ] ( main:2 [ ] ) - //SEG11 [12] phi from main to bool_const_if [phi:main->bool_const_if] + //SEG11 [17] phi from main to bool_const_if [phi:main->bool_const_if] bool_const_if_from_main: jsr bool_const_if //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -595,48 +796,74 @@ main: { //SEG13 main::@1 b1: //SEG14 [7] call bool_const_vars param-assignment [ ] ( main:2 [ ] ) - //SEG15 [9] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] + //SEG15 [14] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] bool_const_vars_from_b1: jsr bool_const_vars + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + jmp b2 + //SEG17 main::@2 + b2: + //SEG18 [9] call bool_const_inline param-assignment [ ] ( main:2 [ ] ) + //SEG19 [11] phi from main::@2 to bool_const_inline [phi:main::@2->bool_const_inline] + bool_const_inline_from_b2: + jsr bool_const_inline jmp breturn - //SEG16 main::@return + //SEG20 main::@return breturn: - //SEG17 [8] return [ ] ( main:2 [ ] ) + //SEG21 [10] return [ ] ( main:2 [ ] ) rts } -//SEG18 bool_const_vars +//SEG22 bool_const_inline +bool_const_inline: { + jmp b3 + //SEG23 bool_const_inline::@3 + b3: + //SEG24 [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' [ ] ( main:2::bool_const_inline:9 [ ] ) -- _deref_pbuc1=vbuc2 + lda #'t' + sta SCREEN+2 + jmp breturn + //SEG25 bool_const_inline::@return + breturn: + //SEG26 [13] return [ ] ( main:2::bool_const_inline:9 [ ] ) + rts +} +//SEG27 bool_const_vars bool_const_vars: { jmp b1 - //SEG19 bool_const_vars::@1 + //SEG28 bool_const_vars::@1 b1: - //SEG20 [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG29 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) -- _deref_pbuc1=vbuc2 lda #'f' sta SCREEN+1 jmp breturn - //SEG21 bool_const_vars::@return + //SEG30 bool_const_vars::@return breturn: - //SEG22 [11] return [ ] ( main:2::bool_const_vars:7 [ ] ) + //SEG31 [16] return [ ] ( main:2::bool_const_vars:7 [ ] ) rts } -//SEG23 bool_const_if +//SEG32 bool_const_if bool_const_if: { jmp b3 - //SEG24 bool_const_if::@3 + //SEG33 bool_const_if::@3 b3: - //SEG25 [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG34 [18] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #'t' sta SCREEN+0 jmp breturn - //SEG26 bool_const_if::@return + //SEG35 bool_const_if::@return breturn: - //SEG27 [14] return [ ] ( main:2::bool_const_if:5 [ ] ) + //SEG36 [19] return [ ] ( main:2::bool_const_if:5 [ ] ) rts } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b3 +Removing instruction jmp b4 Removing instruction jmp bend Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b3 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn @@ -644,16 +871,21 @@ Removing instruction jmp b3 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: -Removing instruction b3_from_bbegin: -Removing instruction main_from_b3: -Removing instruction bend_from_b3: +Removing instruction b4_from_bbegin: +Removing instruction main_from_b4: +Removing instruction bend_from_b4: Removing instruction b1_from_main: Removing instruction bool_const_vars_from_b1: +Removing instruction b2_from_b1: +Removing instruction bool_const_inline_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b3: +Removing instruction b4: Removing instruction bend: Removing instruction bool_const_if_from_main: Removing instruction b1: +Removing instruction b2: +Removing instruction breturn: +Removing instruction b3: Removing instruction breturn: Removing instruction b1: Removing instruction breturn: @@ -662,7 +894,7 @@ Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @3 +(label) @4 (label) @begin (label) @end (byte*) SCREEN @@ -671,6 +903,10 @@ FINAL SYMBOL TABLE (label) bool_const_if::@3 (label) bool_const_if::@return (boolean) bool_const_if::b +(void()) bool_const_inline() +(label) bool_const_inline::@3 +(label) bool_const_inline::@return +(byte) bool_const_inline::a (void()) bool_const_vars() (label) bool_const_vars::@1 (label) bool_const_vars::@return @@ -680,12 +916,13 @@ FINAL SYMBOL TABLE (boolean) bool_const_vars::b2 (void()) main() (label) main::@1 +(label) main::@2 (label) main::@return FINAL ASSEMBLER -Score: 48 +Score: 66 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -694,45 +931,60 @@ Score: 48 //SEG1 Global Constants & labels .label SCREEN = $400 //SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 +//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] +//SEG4 @4 //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [4] phi from @4 to main [phi:@4->main] jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG7 [3] phi from @4 to @end [phi:@4->@end] //SEG8 @end //SEG9 main main: { //SEG10 [5] call bool_const_if param-assignment [ ] ( main:2 [ ] ) - //SEG11 [12] phi from main to bool_const_if [phi:main->bool_const_if] + //SEG11 [17] phi from main to bool_const_if [phi:main->bool_const_if] jsr bool_const_if //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] //SEG13 main::@1 //SEG14 [7] call bool_const_vars param-assignment [ ] ( main:2 [ ] ) - //SEG15 [9] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] + //SEG15 [14] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] jsr bool_const_vars - //SEG16 main::@return - //SEG17 [8] return [ ] ( main:2 [ ] ) + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 main::@2 + //SEG18 [9] call bool_const_inline param-assignment [ ] ( main:2 [ ] ) + //SEG19 [11] phi from main::@2 to bool_const_inline [phi:main::@2->bool_const_inline] + jsr bool_const_inline + //SEG20 main::@return + //SEG21 [10] return [ ] ( main:2 [ ] ) rts } -//SEG18 bool_const_vars +//SEG22 bool_const_inline +bool_const_inline: { + //SEG23 bool_const_inline::@3 + //SEG24 [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' [ ] ( main:2::bool_const_inline:9 [ ] ) -- _deref_pbuc1=vbuc2 + lda #'t' + sta SCREEN+2 + //SEG25 bool_const_inline::@return + //SEG26 [13] return [ ] ( main:2::bool_const_inline:9 [ ] ) + rts +} +//SEG27 bool_const_vars bool_const_vars: { - //SEG19 bool_const_vars::@1 - //SEG20 [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG28 bool_const_vars::@1 + //SEG29 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) -- _deref_pbuc1=vbuc2 lda #'f' sta SCREEN+1 - //SEG21 bool_const_vars::@return - //SEG22 [11] return [ ] ( main:2::bool_const_vars:7 [ ] ) + //SEG30 bool_const_vars::@return + //SEG31 [16] return [ ] ( main:2::bool_const_vars:7 [ ] ) rts } -//SEG23 bool_const_if +//SEG32 bool_const_if bool_const_if: { - //SEG24 bool_const_if::@3 - //SEG25 [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG33 bool_const_if::@3 + //SEG34 [18] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #'t' sta SCREEN+0 - //SEG26 bool_const_if::@return - //SEG27 [14] return [ ] ( main:2::bool_const_if:5 [ ] ) + //SEG35 bool_const_if::@return + //SEG36 [19] return [ ] ( main:2::bool_const_if:5 [ ] ) rts } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/bool-min.sym b/src/test/java/dk/camelot64/kickc/test/ref/bool-const.sym similarity index 76% rename from src/test/java/dk/camelot64/kickc/test/ref/bool-min.sym rename to src/test/java/dk/camelot64/kickc/test/ref/bool-const.sym index 95dec48da..a0cb93a5d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/bool-min.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/bool-const.sym @@ -1,4 +1,4 @@ -(label) @3 +(label) @4 (label) @begin (label) @end (byte*) SCREEN @@ -7,6 +7,10 @@ (label) bool_const_if::@3 (label) bool_const_if::@return (boolean) bool_const_if::b +(void()) bool_const_inline() +(label) bool_const_inline::@3 +(label) bool_const_inline::@return +(byte) bool_const_inline::a (void()) bool_const_vars() (label) bool_const_vars::@1 (label) bool_const_vars::@return @@ -16,5 +20,6 @@ (boolean) bool_const_vars::b2 (void()) main() (label) main::@1 +(label) main::@2 (label) main::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/bool-min.cfg b/src/test/java/dk/camelot64/kickc/test/ref/bool-min.cfg deleted file mode 100644 index bedefc802..000000000 --- a/src/test/java/dk/camelot64/kickc/test/ref/bool-min.cfg +++ /dev/null @@ -1,38 +0,0 @@ -@begin: scope:[] from - [0] phi() [ ] ( ) - to:@3 -@3: scope:[] from @begin - [1] phi() [ ] ( ) - [2] call main param-assignment [ ] ( ) - to:@end -@end: scope:[] from @3 - [3] phi() [ ] ( ) -main: scope:[main] from @3 - [4] phi() [ ] ( main:2 [ ] ) - [5] call bool_const_if param-assignment [ ] ( main:2 [ ] ) - to:main::@1 -main::@1: scope:[main] from main - [6] phi() [ ] ( main:2 [ ] ) - [7] call bool_const_vars param-assignment [ ] ( main:2 [ ] ) - to:main::@return -main::@return: scope:[main] from main::@1 - [8] return [ ] ( main:2 [ ] ) - to:@return -bool_const_vars: scope:[bool_const_vars] from main::@1 - [9] phi() [ ] ( main:2::bool_const_vars:7 [ ] ) - to:bool_const_vars::@1 -bool_const_vars::@1: scope:[bool_const_vars] from bool_const_vars - [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) - to:bool_const_vars::@return -bool_const_vars::@return: scope:[bool_const_vars] from bool_const_vars::@1 - [11] return [ ] ( main:2::bool_const_vars:7 [ ] ) - to:@return -bool_const_if: scope:[bool_const_if] from main - [12] phi() [ ] ( main:2::bool_const_if:5 [ ] ) - to:bool_const_if::@3 -bool_const_if::@3: scope:[bool_const_if] from bool_const_if - [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) - to:bool_const_if::@return -bool_const_if::@return: scope:[bool_const_if] from bool_const_if::@3 - [14] return [ ] ( main:2::bool_const_if:5 [ ] ) - to:@return