Ну так а тут идёт операция чтение-модификация-запись, что запрошено, то и делается.
Цитата
var op= expression;
это то же самое, что и
Цитата
var = var op (expression);
Т.е. чтение var тут как ни крути, а есть.
Ну, если строго, то за исключением того, что адрес объекта var, в данном случае RCC->CR, вычисляется один раз (тонкость проявляется в случае, если лично сам указатель volatile, например,
int * volatile p;, а как квалифицировано то, на что он указывает - не важно).
Впрочем, это вопрос не по этой теме, а где-то в разъяснениях тонкостей языков С/С++.