Цитата(aaarrr @ Aug 12 2011, 15:36)

Звучит почти невероятно. Всякое бывает, конечно, но не верится как-то, чтобы не всплыл такой косяк.
Ничего невероятного. Я находил баг даже в Visual Studio 7.1, правда не критичный - переменная const не воспринималась компилятором как const. А уж Кейл - не самая передовая фирма.
Цитата(aaarrr @ Aug 12 2011, 15:36)

777777, можете озвучить версию компилятора?
µVision V4.00u
Toolchain: RealView MDK-ARM Version: 4.03a
Toolchain Path: BIN40\
C Compiler: Armcc.Exe V4.0.0.524
Assembler: Armasm.Exe V4.0.0.524
Linker/Locator: ArmLink.Exe V4.0.0.524
Librarian: ArmAr.Exe V4.0.0.524
Hex Converter: FromElf.Exe V4.0.0.524
CPU DLL: SARMCM3.DLL V4.03a
Dialog DLL: DARMSTM.DLL V1.45b
Target DLL: BIN\UL2CM3.DLL V1.62
Dialog DLL: TARMSTM.DLL V1.43
Цитата(zltigo @ Aug 12 2011, 15:39)

Сдается мне, что там дело вовсе не в volatile. Просто тыкая volatile куда не поподя удалось сломать оптимизацию компилятору настолько, что изначально мутный код что-то начал делать.
А вы не любите пролетариат!
Цитата(Aaron @ Aug 12 2011, 16:06)

Или же ещё вариант: если у вас только одна такая структура, то объявите её сразу:
struct {
volatile ...
volatile ...
} our_struct;
Именно так и пришлось поступить - все члены сделал volatile