[AArch64 (maybe others)] Internal Error 200203272 raised in cross-compiler
## Summary
In some situations, Internal Error 200203272 can be raised when inlining certain subroutines. This seems to occur when combined with internal functions and var parameters under ```-O3 -CriotR``` rules. Notably, the error is triggered when running ```make fullcycle OPT="-O3 -CriotR"``` under aarch64-linux, specifically when it tries to make an ARM cross-compiler.
## System Information
<!-- The more information are provided the easier it is to replicate the bug -->
- **Operating system:** Linux (Raspberry Pi OS)
- **Processor architecture:** AArch64
- **Compiler version:** Trunk, 3.2 (present since at least 2018)
- **Device:** Raspberry Pi
## Steps to reproduce
* For the original triggering example, checkout the trunk on aarch64-linux and attempt to run ```make fullcycle OPT="-O3 -CriotR"```.
* For a simpler, more limited example, attempt to compile the attached project below with the options ```-O3 -CriotR```.
## Example Project
[iecheck1.pp](/uploads/a90d6a9ac8288350f6bc7c079e190fb5/iecheck1.pp)
## What is the current bug behavior?
Internal Error 200203272 is raised, with the file pointer located on the line ```Inc(IncrementVar, align(Input,4));``` and the cursor between the last closing bracket and the semicolon.
The internal error is caused when an assignment node tries to write to a location that isn't a register or reference. Specifically, the following erroneous branch is generated starting on line 383 of iecheck1-node-dump.xml (obtained with a compiler built with DEBUG_NODE_XML):
```
<statementn resultdef="$void" pos="25,37" flags="nf_pass1_done" complexity="255">
<assignn resultdef="$void" pos="25,37" flags="nf_pass1_done" complexity="1">
<ordconstn resultdef="LongInt" pos="25,36" flags="nf_pass1_done" complexity="0" rangecheck="FALSE">
<value>4</value>
</ordconstn>
<ordconstn resultdef="LongInt" pos="25,37" flags="nf_pass1_done" complexity="0" rangecheck="TRUE">
<value>3</value>
</ordconstn>
</assignn>
</statementn>
```
## What is the expected (correct) behavior?
Code should compile and be correctly generated
## Possible fixes
Unsure as to how to fix it, but it seems that the code that inserts an inlined node tree gets confused as to which temporary reference to use when a non-const parameter is overwritten (in the example, parameter ```a``` is initially 4, but is then set to ```a-1``` = 3).
## Additional notes
* This error has been noted in commits dated as early as 2018, so is likely present in many previous releases. Further testing is required.
* The path to this internal error logically does not require any platform-specific code and may be present on other architectures. Further testing is required.
issue