Если у вас не PRO версия - подпишитесь на 60 дней, и обалдеете насколько еще код усохнет. А потом посмотрите в дизассемблере, что он накодил в свободной версии и радости уже не будет никогда. У меня был один проект, который пытался впихнуть в pic16F723a, так вот он перестал влазить. Подписался на PRO - сразу половина памяти стала свободной! Жаль, что эти 60 дней уже давно прошли, а второй раз они их не дают.
Вот с этим сдвигом всё-равно непонятки. В документации на XC написано, что компилятор сам умеет определять операции ротации. И написано, что
c = (c << 1) | (c >> 7);
if c is unsigned and non-volatile, the compiler will detect that the intended
operation is a rotate left of 1 bit and will encode the output using the PIC MCU rotate
instructions.
Но почему-то выдаёт такое же предупреждение.
Хм. глава про integral promotion находится как раз на предыдущей странице. правда, там упоминается, что типа "типа если результат будет одинаков с преобразованием и без, то преобразование не производится". Ну как-то так, если своими словами. поэтому почему-то в певом случае ( a = (a <<1)) преобразование производится и есть предупреждение, а во втором (a <<= 1) не производится.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."