diff -r c7e97f847492 -r 2b433474f2ba kernel/eka/euser/us_func.cpp --- a/kernel/eka/euser/us_func.cpp Tue Sep 28 15:14:12 2010 +0100 +++ b/kernel/eka/euser/us_func.cpp Tue Sep 28 15:28:31 2010 +0100 @@ -2017,6 +2017,12 @@ 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; +/* RVCT 3.1 and 4.0 read past the end of arrays when unrolling loops. + * This only happens when using -O3 -Otime, so force to -O2. + */ +#pragma push +#pragma O2 + /** Performs a CCITT CRC-32 checksum on the specified data. @@ -2036,3 +2042,4 @@ crc = (crc >> 8) ^ CrcTab32[(crc ^ *p++) & 0xff]; aCrc = crc; } +#pragma pop