Product: CODESYS Code Generator ARM

Key Issue Type Summary Resolution Release Note

Compiler: Wrong code using 64-bit enum return type for c++ compatible method


Internal error: Expression too complex + NullRefException

R4 is reserved in the TargetSettings in this case ("codegenerator\\reserved-registers").
The 64-bit integer data types are loaded atomically (TargetSetting "codegenerator\\atomic-read-write-64-bit"). For this purpose, an even register number and the following register number must be used for load/store operations. There are only 8 registers in total available for code generation.
=> There are only a few register pairs for the use of atomic load/store operations. The error message can also be issued in the future for somewhat more complex expressions.

ARM: Multicore Operator TEST_AND_SET causes an exception

Fixed [[GENERAL]]
If the targetsetting "codegenerator\\load-store-register-exclusive" is set to true the TEST_AND_SET operator is implemented with the LDREX (load register exclusive) and STREX (store register exclusive) instructions instead of the deprecated SWP instruction.
CGARM-1 Improvement

ARM32 codegeneration: Support Clang compiler for direct calls of C++ functions

Fixed [[GENERAL]]
New target setting: "codegenerator\\clang"