diff --git a/.idea/encodings.xml b/.idea/encodings.xml index c0bce7084..611e7fe78 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -2,6 +2,7 @@ + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 000000000..168626d08 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java index ec4302c75..033720871 100644 --- a/src/main/java/dk/camelot64/kickc/Compiler.java +++ b/src/main/java/dk/camelot64/kickc/Compiler.java @@ -213,7 +213,7 @@ public class Compiler { if(getLog().isVerboseStatementSequence()) { getLog().append("\nSTATEMENTS"); for(Procedure procedure : program.getScope().getAllProcedures(true)) { - final ProcedureCompilation procedureCompilation = program.createProcedureCompilation(procedure.getRef()); + final ProcedureCompilation procedureCompilation = program.getProcedureCompilation(procedure.getRef()); getLog().append(procedureCompilation.getStatementSequence().toString(program)); } } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java b/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java index 9e0643b49..bbc08276d 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java @@ -267,6 +267,10 @@ public class Pass1GenerateSingleStaticAssignmentForm extends Pass1Base { } } } + if(procedure.getRef().equals(program.getStartProcedure())) { + // TODO: Does this handle main() / _start() correctly? + program.getLog().append("Does this handle main() / _start() correctly?"); + } } return predecessors; } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4MemoryCoalesce.java b/src/main/java/dk/camelot64/kickc/passes/Pass4MemoryCoalesce.java index e2d2b3ca1..085dfc83a 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4MemoryCoalesce.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4MemoryCoalesce.java @@ -33,12 +33,19 @@ public abstract class Pass4MemoryCoalesce extends Pass2Base { ArrayList threadHeads = new ArrayList<>(); Collection procedures = program.getScope().getAllProcedures(true); for(Procedure procedure : procedures) { - if(procedure.getFullName().equals(SymbolRef.MAIN_PROC_NAME)) { + if(procedure.getRef().equals(program.getStartProcedure())) { + // TODO: Handles main() correctly? threadHeads.add(procedure.getRef()); continue; } if(Pass2ConstantIdentification.isAddressOfUsed(procedure.getRef(), program)) { threadHeads.add(procedure.getRef()); + continue; + } + if(procedure.getInterruptType()!=null) { + // TODO: Handles Interrupts correctly? + threadHeads.add(procedure.getRef()); + continue; } } return threadHeads; diff --git a/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangesEffectiveCallPaths.java b/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangesEffectiveCallPaths.java index 6c03ade54..93c091832 100644 --- a/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangesEffectiveCallPaths.java +++ b/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangesEffectiveCallPaths.java @@ -70,7 +70,7 @@ public class PassNCalcLiveRangesEffectiveCallPaths extends PassNCalcBase rootPath = new ArrayList<>(); ArrayList rootAlive = new ArrayList<>();