the compiler correctly marks it as unsigned int and uses the correct shift operator and types in the resulting tree, but it goes wrong a bit later.