Technical information

Operating Precautions for CPDW9X/NT-CDR-V85X, Y-GHS-MULTI-V800
TM
Customer Notification r20tu0003ed1812 77
No. a66
The compiler dereferences the wrong register in certain places due to an incorrect
optimization.
Version Information
V3.5.1
Details:
Under some conditions the compiler dereferences the wrong register causing the code to break.
In the example below the register R2 was dereferenced.
_test:
prepare {r26,r27,r28,r29,r31},0
--171: if(((FALSE == Var1_bt)&&(FALSE != Var2_ft))||(FALSE != Var3_bt))
movhi hi(_Var3_bt),zero,r2
movea lo(_Var3_bt),r2,r29
add 5,r29
movea sdaoff(_Var1_bt),gp,r19
tst1 0,0[r19]
bne .L7
tst1 0,0[r2] // error should be using -5[r29]
bne .L6
/*.....*/
Command Line
ccv850 -c -cpu=v850e -Ospace test.c
Workaround
A patch for the V3.5.1 is available on Renesas website:
http://www.renesas.eu/updates?id=443