diff -r 0008ccd16016 -r 13fbfa31d2ba kernel/eka/euser/us_func.cpp --- a/kernel/eka/euser/us_func.cpp Fri Sep 17 08:37:04 2010 +0300 +++ b/kernel/eka/euser/us_func.cpp Mon Oct 04 02:35:35 2010 +0300 @@ -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