-
Type:
Bug
-
Resolution: Fixed
-
Priority:
High
-
Code Generation Tools
-
CODEGEN-13728
-
C29_1.0.0.LTS
-
-
F29x
-
Protected calls to affected functions do not issue the correct PRESERVE instruction upon return, leading to the return value register being cleared instead of passed back to the caller with the correctly calculated value.
Most notably impacted is 64-bit floating point subtraction operations in code compiled with the `-mfpu=none` option. These become calls to library functions, which are impacted if those calls must be protected.
User code compiled with -O0 and -O1 are unaffected.
This issue can be identified in disassembly by inspecting each RET.PROT instruction. If it is not in parallel with a PRESERVE instruction or in parallel with a PRESERVE instruction with a zero-valued mask, and the function returns a value, that function is affected.