I have found severe defect inside ARM cor Cortex-M3 compiler. It occurs only in release build.
And this is compilation result. Only 8 bytes is cleared, by using STR.
0x00013F06 F88D5008 STRB r5,[sp,#0x08] 23: UINT8 data[9];
64: continue; 65: } 66: 0x00013F42 E00F B 0x00013F64
67: memset(data,0, sizeof(data)); 70: 0x00013F44 9504 STR r5,[sp,#0x10] 0x00013F46 9505 STR r5,[sp,#0x14]
71: if(ReadBlockFromSRAM(data, addr, sizeof(data))) 72: { 0x00013F48 2209 MOVS r2,#0x09
=============================================================
When I use: x2 = sizeof(data); memset(data,0,x2);
It works fine.