GCC 8.1 дает:
$ gcc rega89.c
rega89.c: In function ‘main’:
rega89.c:7:9: error: address of register variable ‘arr’ requested
printf("arr[9] %d\n", *((arr) + 9)); // working fine
^~~~~~
$
Это без каких-либо дополнительных опций. На самом деле, даже GCC 4.8.1 жалуется без вариантов. (GCC 8.1 по умолчанию C11; GCC 4.8.1 по умолчанию C90; указание -std=c99
или -std=gnu99
не имеет значения.)
Итак, если вы используете GCC, вы должны использовать более старую версию GCC, чем 4.8.1. Или вы используете какой-то другой компилятор, который не так совместим со стандартами, как GCC.