https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70321

--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
or and xor have the same issue:

[hjl@gnu-tools-1 bitwise-1]$ cat or.i 
extern long long x;

void
foo (long long ixi)
{
  x = ixi | 14348907;
}
[hjl@gnu-tools-1 bitwise-1]$ make or.s
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -fno-asynchronous-unwind-tables
-O2 -m32 -S -o or.s or.i
[hjl@gnu-tools-1 bitwise-1]$ make or1.s
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -fno-asynchronous-unwind-tables
-O2 -m32 -mno-stv -S -o or1.s or.i
[hjl@gnu-tools-1 bitwise-1]$ cat or.s
        .file   "or.i"
        .text
        .p2align 4,,15
        .globl  foo
        .type   foo, @function
foo:
        movl    4(%esp), %eax
        movl    8(%esp), %edx
        orl     $14348907, %eax
        orb     $0, %dh
        movl    %eax, x
        movl    %edx, x+4
        ret
        .size   foo, .-foo
        .ident  "GCC: (GNU) 6.0.0 20160318 (experimental)"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-tools-1 bitwise-1]$ cat or1.s
        .file   "or.i"
        .text
        .p2align 4,,15
        .globl  foo
        .type   foo, @function
foo:
        movl    4(%esp), %eax
        orl     $14348907, %eax
        movl    %eax, x
        movl    8(%esp), %eax
        movl    %eax, x+4
        ret
        .size   foo, .-foo
        .ident  "GCC: (GNU) 6.0.0 20160318 (experimental)"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-tools-1 bitwise-1]$

Reply via email to