https://sourceware.org/bugzilla/show_bug.cgi?id=25438
--- Comment #2 from Jan Beulich <jbeulich at suse dot com> ---
(In reply to H.J. Lu from comment #1)
> movz* with incorrect operands should be rejected, not silently changed
> to something else:
>
> [hjl@gnu-snb-1 tmp]$ cat x.s
> movzbw %al, %ecx
> movzbw %al, %rcx
> movzbl %al, %cx
> movzbl %al, %rcx
> movzbq %al, %cx
> movzbq %al, %ecx
> [hjl@gnu-snb-1 tmp]$ gcc -c x.s
> [hjl@gnu-snb-1 tmp]$ objdump -dw x.o
>
> x.o: file format elf64-x86-64
>
>
> Disassembly of section .text:
>
> 0000000000000000 <.text>:
> 0: 0f b6 c8 movzbl %al,%ecx
> 3: 48 0f b6 c8 movzbq %al,%rcx
> 7: 66 0f b6 c8 movzbw %al,%cx
> b: 48 0f b6 c8 movzbq %al,%rcx
> f: 66 0f b6 c8 movzbw %al,%cx
> 13: 0f b6 c8 movzbl %al,%ecx
> [hjl@gnu-snb-1 tmp]$
Indeed that's what the patch is doing, for 64-bit code.
For 32-bit (and 16-bit) code though this isn't the way to go, as long as e.g.
movl %al, %al
movl %ax, %ax
produce an error on the first line, but only two warnings on the second one.
Behavior for MOVZ* simply gets brought in line with this by the proposed patch.
--
You are receiving this mail because:
You are on the CC list for the bug.