gcc обычно будет использовать логические сдвиги для переменных без знака и для сдвигов влево для переменных со знаком. Арифметическое смещение вправо является действительно важным, потому что оно будет подписывать расширение переменной.
gcc будет использовать это, когда это применимо, как и другие компиляторы.