mirror of
https://github.com/irmen/prog8.git
synced 2024-12-24 16:29:21 +00:00
remove the 'addmissingrts' compiler option
This commit is contained in:
parent
fb0d9b46b0
commit
ea1daa97d3
@ -28,7 +28,6 @@ class CompilationOptions(val output: OutputType,
|
|||||||
var slabsHighBank: Int? = null,
|
var slabsHighBank: Int? = null,
|
||||||
var slabsGolden: Boolean = false,
|
var slabsGolden: Boolean = false,
|
||||||
var splitWordArrays: Boolean = false,
|
var splitWordArrays: Boolean = false,
|
||||||
var addMissingRts: Boolean = false, // deprecated, will likely go way in future version
|
|
||||||
var breakpointCpuInstruction: String? = null,
|
var breakpointCpuInstruction: String? = null,
|
||||||
var outputDir: Path = Path(""),
|
var outputDir: Path = Path(""),
|
||||||
var symbolDefs: Map<String, String> = emptyMap()
|
var symbolDefs: Map<String, String> = emptyMap()
|
||||||
|
@ -41,7 +41,6 @@ fun pathFrom(stringPath: String, vararg rest: String): Path = FileSystems.getDe
|
|||||||
|
|
||||||
private fun compileMain(args: Array<String>): Boolean {
|
private fun compileMain(args: Array<String>): Boolean {
|
||||||
val cli = ArgParser("prog8c", prefixStyle = ArgParser.OptionPrefixStyle.JVM)
|
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 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 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!")
|
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,
|
slabsGolden == true,
|
||||||
compilationTarget!!,
|
compilationTarget!!,
|
||||||
splitWordArrays == true,
|
splitWordArrays == true,
|
||||||
addMissingRts == true,
|
|
||||||
breakpointCpuInstruction,
|
breakpointCpuInstruction,
|
||||||
printAst1 == true,
|
printAst1 == true,
|
||||||
printAst2 == true,
|
printAst2 == true,
|
||||||
@ -261,7 +259,6 @@ private fun compileMain(args: Array<String>): Boolean {
|
|||||||
slabsGolden == true,
|
slabsGolden == true,
|
||||||
compilationTarget!!,
|
compilationTarget!!,
|
||||||
splitWordArrays == true,
|
splitWordArrays == true,
|
||||||
addMissingRts == true,
|
|
||||||
breakpointCpuInstruction,
|
breakpointCpuInstruction,
|
||||||
printAst1 == true,
|
printAst1 == true,
|
||||||
printAst2 == true,
|
printAst2 == true,
|
||||||
|
@ -49,7 +49,6 @@ class CompilerArguments(val filepath: Path,
|
|||||||
val slabsGolden: Boolean,
|
val slabsGolden: Boolean,
|
||||||
val compilationTarget: String,
|
val compilationTarget: String,
|
||||||
val splitWordArrays: Boolean,
|
val splitWordArrays: Boolean,
|
||||||
val addMissingRts: Boolean,
|
|
||||||
val breakpointCpuInstruction: String?,
|
val breakpointCpuInstruction: String?,
|
||||||
val printAst1: Boolean,
|
val printAst1: Boolean,
|
||||||
val printAst2: Boolean,
|
val printAst2: Boolean,
|
||||||
@ -87,7 +86,6 @@ fun compileProgram(args: CompilerArguments): CompilationResult? {
|
|||||||
slabsHighBank = args.slabsHighBank
|
slabsHighBank = args.slabsHighBank
|
||||||
slabsGolden = args.slabsGolden
|
slabsGolden = args.slabsGolden
|
||||||
splitWordArrays = args.splitWordArrays
|
splitWordArrays = args.splitWordArrays
|
||||||
addMissingRts = args.addMissingRts
|
|
||||||
outputDir = args.outputDir.normalize()
|
outputDir = args.outputDir.normalize()
|
||||||
symbolDefs = args.symbolDefs
|
symbolDefs = args.symbolDefs
|
||||||
}
|
}
|
||||||
|
@ -83,21 +83,10 @@ internal class BeforeAsmAstChanger(val program: Program, private val options: Co
|
|||||||
|
|
||||||
if (!subroutine.inline) {
|
if (!subroutine.inline) {
|
||||||
if (subroutine.isAsmSubroutine && subroutine.asmAddress==null) {
|
if (subroutine.isAsmSubroutine && subroutine.asmAddress==null) {
|
||||||
if(!options.addMissingRts && !subroutine.hasRtsInAsm(true)) {
|
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, or use -addmissingrts", subroutine.position)
|
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))
|
||||||
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)
|
||||||
// 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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,6 @@ private fun compileTheThing(filepath: Path, optimize: Boolean, target: ICompilat
|
|||||||
slabsGolden = false,
|
slabsGolden = false,
|
||||||
compilationTarget = target.name,
|
compilationTarget = target.name,
|
||||||
splitWordArrays = false,
|
splitWordArrays = false,
|
||||||
addMissingRts = false,
|
|
||||||
breakpointCpuInstruction = null,
|
breakpointCpuInstruction = null,
|
||||||
printAst1 = false,
|
printAst1 = false,
|
||||||
printAst2 = false,
|
printAst2 = false,
|
||||||
|
@ -38,7 +38,6 @@ class TestCompilerOptionSourcedirs: FunSpec({
|
|||||||
slabsGolden = false,
|
slabsGolden = false,
|
||||||
compilationTarget = Cx16Target.NAME,
|
compilationTarget = Cx16Target.NAME,
|
||||||
splitWordArrays = false,
|
splitWordArrays = false,
|
||||||
addMissingRts = false,
|
|
||||||
breakpointCpuInstruction = null,
|
breakpointCpuInstruction = null,
|
||||||
printAst1 = false,
|
printAst1 = false,
|
||||||
printAst2 = false,
|
printAst2 = false,
|
||||||
|
@ -40,7 +40,6 @@ internal fun compileFile(
|
|||||||
outputDir = outputDir,
|
outputDir = outputDir,
|
||||||
errors = errors ?: ErrorReporterForTests(),
|
errors = errors ?: ErrorReporterForTests(),
|
||||||
splitWordArrays = false,
|
splitWordArrays = false,
|
||||||
addMissingRts = false,
|
|
||||||
breakpointCpuInstruction = null,
|
breakpointCpuInstruction = null,
|
||||||
printAst1 = false,
|
printAst1 = false,
|
||||||
printAst2 = false,
|
printAst2 = false,
|
||||||
|
@ -133,12 +133,6 @@ One or more .p8 module files
|
|||||||
``-help``, ``-h``
|
``-help``, ``-h``
|
||||||
Prints short command line usage information.
|
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``
|
``-asmlist``
|
||||||
Also generate an assembler listing file <program>.list
|
Also generate an assembler listing file <program>.list
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user