[an error occurred while processing this directive]
естественно перегружает - переменная же VOLATILE (уж прости, Керниган, за caps lock) и лежит она не в регистре, вот он и не имеет права тупо сравнивать с регистром, а считывает с памяти постоянно. А насчет попытки сделать её регистровой компилятор (умница однако) четко возразил "a global-scope declaration may not have this storage class"
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)