remove the 'addmissingrts' compiler option

This commit is contained in:
Irmen de Jong 2024-11-18 23:08:35 +01:00
parent fb0d9b46b0
commit ea1daa97d3
8 changed files with 4 additions and 30 deletions

View File

@ -28,7 +28,6 @@ class CompilationOptions(val output: OutputType,
var slabsHighBank: Int? = null,
var slabsGolden: Boolean = false,
var splitWordArrays: Boolean = false,
var addMissingRts: Boolean = false, // deprecated, will likely go way in future version
var breakpointCpuInstruction: String? = null,
var outputDir: Path = Path(""),
var symbolDefs: Map<String, String> = emptyMap()

View File

@ -41,7 +41,6 @@ fun pathFrom(stringPath: String, vararg rest: String): Path = FileSystems.getDe
private fun compileMain(args: Array<String>): Boolean {
val cli = ArgParser("prog8c", prefixStyle = ArgParser.OptionPrefixStyle.JVM)
val addMissingRts by cli.option(ArgType.Boolean, fullName = "addmissingrts", description="enable old behavior that silently adds RTS to asmsubs that don't have one (deprecated, may go away in future version)")
val asmListfile by cli.option(ArgType.Boolean, fullName = "asmlist", description = "make the assembler produce a listing file as well")
val breakpointCpuInstruction by cli.option(ArgType.Choice(listOf("brk", "stp"), { it }), fullName = "breakinstr", description = "the CPU instruction to use as well for %breakpoint")
val bytes2float by cli.option(ArgType.String, fullName = "bytes2float", description = "convert a comma separated list of bytes from the target system to a float value. NOTE: you need to supply a target option too, and also still have to supply a dummy module file name as well!")
@ -180,7 +179,6 @@ private fun compileMain(args: Array<String>): Boolean {
slabsGolden == true,
compilationTarget!!,
splitWordArrays == true,
addMissingRts == true,
breakpointCpuInstruction,
printAst1 == true,
printAst2 == true,
@ -261,7 +259,6 @@ private fun compileMain(args: Array<String>): Boolean {
slabsGolden == true,
compilationTarget!!,
splitWordArrays == true,
addMissingRts == true,
breakpointCpuInstruction,
printAst1 == true,
printAst2 == true,

View File

@ -49,7 +49,6 @@ class CompilerArguments(val filepath: Path,
val slabsGolden: Boolean,
val compilationTarget: String,
val splitWordArrays: Boolean,
val addMissingRts: Boolean,
val breakpointCpuInstruction: String?,
val printAst1: Boolean,
val printAst2: Boolean,
@ -87,7 +86,6 @@ fun compileProgram(args: CompilerArguments): CompilationResult? {
slabsHighBank = args.slabsHighBank
slabsGolden = args.slabsGolden
splitWordArrays = args.splitWordArrays
addMissingRts = args.addMissingRts
outputDir = args.outputDir.normalize()
symbolDefs = args.symbolDefs
}

View File

@ -83,21 +83,10 @@ internal class BeforeAsmAstChanger(val program: Program, private val options: Co
if (!subroutine.inline) {
if (subroutine.isAsmSubroutine && subroutine.asmAddress==null) {
if(!options.addMissingRts && !subroutine.hasRtsInAsm(true)) {
errors.err("asmsub seems to never return as it doesn't end with RTS/JMP/branch. If this is intended, add a '; !notreached!' comment at the end, or use -addmissingrts", subroutine.position)
}
else if (!subroutine.hasRtsInAsm(false)) {
// make sure the NOT INLINED asm subroutine actually has a rts at the end
// (non-asm routines get a Return statement as needed, above)
if(options.addMissingRts) {
errors.info("added missing RTS to asmsub", subroutine.position)
mods += if(options.compTarget.name==VMTarget.NAME)
IAstModification.InsertLast(InlineAssembly(" return\n", true, Position.DUMMY), subroutine)
else
IAstModification.InsertLast(InlineAssembly(" rts\n", false, Position.DUMMY), subroutine)
} else
errors.err("asmsub seems to never return as it doesn't end with RTS/JMP/branch. If this is intended, add a '; !notreached!' comment at the end, or use -addmissingrts", subroutine.position)
}
if(!subroutine.hasRtsInAsm(true))
errors.err("asmsub seems to never return as it doesn't end with RTS/JMP/branch. If this is intended, add a '; !notreached!' comment at the end", subroutine.position)
else if (!subroutine.hasRtsInAsm(false))
errors.err("asmsub seems to never return as it doesn't end with RTS/JMP/branch. If this is intended, add a '; !notreached!' comment at the end", subroutine.position)
}
}

View File

@ -40,7 +40,6 @@ private fun compileTheThing(filepath: Path, optimize: Boolean, target: ICompilat
slabsGolden = false,
compilationTarget = target.name,
splitWordArrays = false,
addMissingRts = false,
breakpointCpuInstruction = null,
printAst1 = false,
printAst2 = false,

View File

@ -38,7 +38,6 @@ class TestCompilerOptionSourcedirs: FunSpec({
slabsGolden = false,
compilationTarget = Cx16Target.NAME,
splitWordArrays = false,
addMissingRts = false,
breakpointCpuInstruction = null,
printAst1 = false,
printAst2 = false,

View File

@ -40,7 +40,6 @@ internal fun compileFile(
outputDir = outputDir,
errors = errors ?: ErrorReporterForTests(),
splitWordArrays = false,
addMissingRts = false,
breakpointCpuInstruction = null,
printAst1 = false,
printAst2 = false,

View File

@ -133,12 +133,6 @@ One or more .p8 module files
``-help``, ``-h``
Prints short command line usage information.
``-addmissingrts``
Enables old compiler behavior that silently adds RTS to asmsubs that don't have one.
This was done to fix asmsubs so they return properly to the caller instead of crashing the program.
However the new compiler behavior is to not silently modify the code anymore and instead give an error message
that tells you how to fix the problem. This option may go away in future version.
``-asmlist``
Also generate an assembler listing file <program>.list