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

Mikael Pettersson <mikpelinux at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |thomas.preudhomme at arm dot 
com

--- Comment #4 from Mikael Pettersson <mikpelinux at gmail dot com> ---
A bisection using a cross to sparc64-linux identified r210843 as the starting
point of this wrong-code regression.  The code generation difference at that
revision for this test case is:

--- shift.s-r210842     2015-12-12 18:39:22.878875236 +0100
+++ shift.s-r210843     2015-12-12 18:36:37.938974547 +0100
@@ -15,12 +15,8 @@
        sethi   %hi(.LC0), %o0
        lduw    [%g1+%lo(s)], %o1
        or      %o0, %lo(.LC0), %o0
-       mov     0, %i0
-       ldub    [%g1+%lo(s)+4], %g1
-       sll     %o1, 8, %o1
-       or      %g1, %o1, %o1
        call    printf, 0
-        srl    %o1, 0, %o1
+        mov    0, %i0
        return  %i7+8
         nop
        .size   main, .-main

that is, the "<< 8" and "| s.b" parts of the expression were lost.

Adding author to CC.

Reply via email to