https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70321
Bug ID: 70321 Summary: [6 Regression] STV generates less optimized code Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: enkovich.gnu at gmail dot com, ubizjak at gmail dot com Target Milestone: --- Target: i386 [hjl@gnu-tools-1 bitwise-1]$ cat z.i void foo (long long ixi) { if (ixi != 14348907) __builtin_abort (); } [hjl@gnu-tools-1 bitwise-1]$ make z.s z1.s /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -O2 -m32 -S -o z.s z.i /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -O2 -m32 -mno-stv -S -o z1.s z.i [hjl@gnu-tools-1 bitwise-1]$ cat z.s .file "z.i" .text .p2align 4,,15 .globl foo .type foo, @function foo: .LFB0: .cfi_startproc subl $12, %esp .cfi_def_cfa_offset 16 movl 20(%esp), %edx movl 16(%esp), %eax xorb $0, %dh xorl $14348907, %eax movl %edx, %ecx orl %eax, %ecx jne .L5 addl $12, %esp .cfi_remember_state .cfi_def_cfa_offset 4 ret .L5: .cfi_restore_state call abort .cfi_endproc .LFE0: .size foo, .-foo .ident "GCC: (GNU) 6.0.0 20160318 (experimental)" .section .note.GNU-stack,"",@progbits [hjl@gnu-tools-1 bitwise-1]$ cat z1.s .file "z.i" .text .p2align 4,,15 .globl foo .type foo, @function foo: .LFB0: .cfi_startproc subl $12, %esp .cfi_def_cfa_offset 16 movl 16(%esp), %eax xorl $14348907, %eax orl 20(%esp), %eax jne .L5 addl $12, %esp .cfi_remember_state .cfi_def_cfa_offset 4 ret .L5: .cfi_restore_state call abort .cfi_endproc .LFE0: .size foo, .-foo .ident "GCC: (GNU) 6.0.0 20160318 (experimental)" .section .note.GNU-stack,"",@progbits [hjl@gnu-tools-1 bitwise-1]$ STV generates: movl 20(%esp), %edx movl 16(%esp), %eax xorb $0, %dh xorl $14348907, %eax movl %edx, %ecx orl %eax, %ecx vs movl 16(%esp), %eax xorl $14348907, %eax orl 20(%esp), %eax