Added by Pierre-Loïc Garoche over 3 years ago
Pretty serious update:
- a bug in regressio ntest Simulink/integrator_ext_IC_matrix_test revealed the following (serious issue):
when building the list of instruction (in the machine code) the access to variable were hardcoded to LocalVar or StateVAr depending whether the variables was part of the identified memories.
Un fortunately the set of memories is only known after iterating through all definitions. A read access to a memory which was scheduled before its update was generating a non compilable C code:
the access to the memory x which should be written as mem->x was written as a local access "x". But x was not declared as a local variable: hence gcc compile error.
The current commit is pretty involved. It goes through all the code:
- LocalVar and StateVar have been merged in Var in machine instructions (rhs ie expressions)
- any possible print or access to these shall be given access to the machine (ie its memories)
so a lot of functions have been enriched with a machine first argument.
Regression tests performed well showing no additional bug introduced. The only Unstable->Broken changes are the DIFF which could not be run at all before.
- corelang.ml (diff)
- corelang.mli (diff)
- machine_code.ml (diff)
- machine_code_common.ml (diff)
- machine_code_common.mli (diff)
- machine_code_types.ml (diff)
- normalization.ml (diff)
- optimize_machine.ml (diff)