Add -DD option to LOCALOPT
if FPC_VERSION is equal to PACKAGE_VERSION
This is to avoid get different dates for
native compiler generated using 'make cycle'
versus cross-compilers.
loongarch64 compiler has a specific routine,
called fixupref that generates some instructions that are
stored into a tasmlist given as an input parameter.
This function returns a boolean,
if the return value is false, the populated list gets
sometimes discarded.
This can lead to a later crash, because the unused
and freed instructions might have been stored
in live and live_end fields of the reginfo record
used inside rgobj unit.
The fix checks if any of the to be discarded instructions
has been stored inside reginfo records,
and resets the field in that case.
The fix might need to be more general,
because other parts of the compiler,
like all optimization code, also remove
instructions...
Add mainsourcefile to all messages when V_Parallel verbosity option is set
Flatten out -vX options in help message to make changes easier
Add -vj option in help message
first 16 registers in RISC-V RVE and RVEC modes. However, there was still
code in tcpuparamanager.create_paraloc_info_intern that allowed the allocation
of up to register X17 in RVE and RVEC modes. Modified this function to
take the processor mode into account and restrict it to X0..X15 in RVE and RVEC modes.
Also put conditional code in setjump.inc assembler code to only set the first
16 registers in RVE and RVEC modes.
The entire embedded-riscv32 RTL can now compile successfuly in RVEC mode.
Modified low-level startup code for RISCV32 embedded microcontrollers to
allow user code override of reset handlers for non-power-up reset events
as well as enabling user code override handlers for all 255 possible
interrupt vectors.
Separated out the low-level startup memory init into a callable procedure
to allow users that have caught reset events to init memory again if needed.
Signed-off-by: Interferon <brspm2@pinnaclesimulation.com>
Previously, they were stored as localvarsyms in either the localsymtable
(for procedures/functions) or as localvarsyms in the staticsymtable (for
init/fini code of units/main programs). The latter was a hack (staticsymtables
normally cannot contain localvarsyms) and caused the temp allocator to also
allocate them as a local in fini code even if the default was only in the init
code.
The new approach ensures at most one copy gets allocated per unit, it doesn't
require explicit initialisation (since staticvarsyms are in bss -> zeroed by
default), gets rid of the localvarsyms in staticsymtables, and as a bonus
solves an issue with inconsistent LLVM debug information for the localvarsym
in init/fini code (since the staticsymtable is shared between the init and
fini code, so was the local, and therefore we generated debug info stating
it was defined in the fini code but within the scope of the init code).
Resolves#40395