diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java index a3ca227ea..688115fcf 100644 --- a/src/main/java/dk/camelot64/kickc/Compiler.java +++ b/src/main/java/dk/camelot64/kickc/Compiler.java @@ -56,6 +56,10 @@ public class Compiler { this.enableLoopHeadConstant = true; } + void disableLoopHeadConstant() { + this.enableLoopHeadConstant = false; + } + void setTargetPlatform(TargetPlatform targetPlatform) { program.setTargetPlatform(targetPlatform); } diff --git a/src/main/java/dk/camelot64/kickc/KickC.java b/src/main/java/dk/camelot64/kickc/KickC.java index c8e769d27..900834021 100644 --- a/src/main/java/dk/camelot64/kickc/KickC.java +++ b/src/main/java/dk/camelot64/kickc/KickC.java @@ -69,6 +69,9 @@ public class KickC implements Callable { @CommandLine.Option(names = {"-Oloophead"}, description = "Optimization Option. Enabled experimental loop-head constant pass which identifies loops where the condition is constant on the first iteration.") private boolean optimizeLoopHeadConstant = false; + @CommandLine.Option(names = {"-Onoloophead"}, description = "Optimization Option. Disabled experimental loop-head constant pass which identifies loops where the condition is constant on the first iteration.") + private boolean optimizeNoLoopHeadConstant = false; + @CommandLine.Option(names = {"-Ocache"}, description = "Optimization Option. Enables a fragment cache file.") private boolean optimizeFragmentCache = false; @@ -220,6 +223,8 @@ public class KickC implements Callable { if(optimizeLoopHeadConstant) { compiler.enableLoopHeadConstant(); + } else if(optimizeNoLoopHeadConstant) { + compiler.disableLoopHeadConstant(); } if(linkScript!=null) {