Technical information

Operating Precautions for CPDW9X/NT-CDR-V85X, Y-GHS-MULTI-V800
TM
Customer Notification r20tu0003ed1812 65
No. a52
V850e1f (Floating point unit): Wrong code generation for floating point comparisons
Version Information
V3.5, V4.0.5, V4.0.5c,V4.0.7
Details
When the CPU V850e1f (Floating Point Unit) is selected, the compiler generates code using the
floating point instructions SUBF, ADDF, MULF and DIVF, which do not affect the OV-flag. But the
compiler is using the OVERFLOW flag 'OV' for the evaluation of the result.
int fcmp( float fSat)
{
if( fSat < 0.0f)
return -1;
return 0;
}
if( fSat < 0.0f)
// mov 0,r17
// subf.s r17,r6,zero
// trff
// movea 0,r1,r1
// bge .L4 <== should be 'BL'-instruction
return -1;
// mov -1,r2
// br .L2
...
Command Line
ccv850e -cpu=v850e1f -c -list -passsource test.c
Workaround
Download a compiler update from the internet http://www.renesas.eu/updates?id=443
This patch will update all compiler versions to new 4.07A. The patch does not change the GUI
portions of the compiler, but underlying compilers and libraries.