Why doesn’t GCC use partial registers?
Yes, GCC generally avoids writing to partial registers, unless optimizing for size (-Os) instead of purely speed (-O3). Some cases require writing at least the 32-bit register for correctness, so a better example would be something like: char foo(char *p) { return *p; } compiles to movzx eax, byte ptr [rdi] instead of mov al, … Read more