Your message dated Thu, 01 Dec 2016 07:19:52 +0000
with message-id <e1ccleq-0009pm...@fasolo.debian.org>
and subject line Bug#843979: fixed in uqm 0.6.2.dfsg-9.4
has caused the Debian Bug report #843979,
regarding uqm: FTBFS with gcc-6 on i386: scalemmx.h:638: Error: register value 
used as expression
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
843979: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843979
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: uqm
Version: 0.6.2.dfsg-9.3
Severity: serious
Justification: fails to build from source (but built successfully in the past)
Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78311

Hi,

uqm started to FTBFS after the switch of the default compiler from gcc-5 to 
gcc-6.

gcc -c  -o "obj/release/src/sc2code/libs/graphics/sdl/2xscalers_mmx.c.o" -g -O2 
-fdebug-prefix-map=/build/uqm-0.6.2.dfsg=. -fstack-protector-strong -Wformat 
-Werror=format-security -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT 
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -O3 -DGFXMODULE_SDL 
-DHAVE_OPENGL  -DSOUNDMODULE_SDL   -DNETPLAY=NETPLAY_FULL -DHAVE_JOYSTICK 
-DHAVE_ZIP=1  -DUSE_PLATFORM_ACCEL -I "." -g -Wdate-time -D_FORTIFY_SOURCE=2 -I 
src -I src/sc2code -I src/sc2code/libs 
"src/sc2code/libs/graphics/sdl/2xscalers_mmx.c"
src/sc2code/libs/graphics/sdl/scalemmx.h: Assembler messages:
src/sc2code/libs/graphics/sdl/scalemmx.h:638: Error: register value used as 
expression
src/sc2code/libs/graphics/sdl/scalemmx.h:640: Error: register value used as 
expression
src/sc2code/libs/graphics/sdl/scalemmx.h:638: Error: register value used as 
expression
src/sc2code/libs/graphics/sdl/scalemmx.h:640: Error: register value used as 
expression
[...]

That's in an inline assembly block ... I've marked the
problematic lines with ***

// compare 2 pixels with respect to their YUV representations
// tolerance set by toler arg
// returns true: close; false: distant (-gt toler)
static inline bool
SCALE_(CmpYUV) (Uint32 pix1, Uint32 pix2, int toler)
{
        int delta;

        __asm__ (
                "movd       %1, %%mm1 \n\t"
                "movd       %2, %%mm3 \n\t"

                // convert RGB888 to 555
                // this is somewhat parallelized
                "punpcklbw  %%mm0, %%mm1 \n\t"
                CLR_UPPER32 (A_REG)     "\n\t"
                "psrlw      $3, %%mm1    \n\t"   // 8->5 bit
                "punpcklbw  %%mm0, %%mm3 \n\t"
                "psrlw      $3, %%mm3    \n\t" // 8->5 bit
                "pmaddwd    %4, %%mm1    \n\t" // shuffle into the right 
channel order
                "movq       %%mm1, %%mm2 \n\t"  // finish shuffling
                "pmaddwd    %4, %%mm3    \n\t" // shuffle into the right 
channel order
                CLR_UPPER32 (D_REG)     "\n\t"
                "movq       %%mm3, %%mm4 \n\t"  // finish shuffling
                "punpckhdq  %%mm0, %%mm2 \n\t"  //   ditto
                "por        %%mm2, %%mm1 \n\t"  //   ditto
                "punpckhdq  %%mm0, %%mm4 \n\t"  //   ditto
                "por        %%mm4, %%mm3 \n\t"  //   ditto

                // lookup the YUV vector
                "movd       %%mm1, %%eax \n\t"
                "movd       %%mm3, %%edx \n\t"
                //movd      (%3, %%eax, 4), %%mm1
***             MOVD_WMO    (%3, "%%" A_REG, 4, %%mm1) "\n\t"
                "movq       %%mm1, %%mm4 \n\t"
                //movd      (%3, %%edx, 4), %%mm2
***             MOVD_WMO    (%3, "%%" D_REG, 4, %%mm2) "\n\t"

                // get abs difference between YUV components
#ifdef USE_PSADBW
                // we can use PSADBW and save us some grief
                "psadbw     %%mm2, %%mm1 \n\t"
                "movd       %%mm1, %0    \n\t"
#else
                // no PSADBW -- have to do it the hard way
                "psubusb    %%mm2, %%mm1 \n\t"
                "psubusb    %%mm4, %%mm2 \n\t"
                "por        %%mm2, %%mm1 \n\t"

                // sum the differences
                //  technically, this produces a MAX diff of 510
                //  but we do not need anything bigger, currently
                "movq       %%mm1, %%mm2 \n\t"
                "psrlq      $8, %%mm2    \n\t"
                "paddusb    %%mm2, %%mm1 \n\t"
                "psrlq      $8, %%mm2    \n\t"
                "paddusb    %%mm2, %%mm1 \n\t"
                // store intermediate delta
                "movd       %%mm1, %0    \n\t"
                "andl       $0xff, %0    \n\t"
#endif /* USE_PSADBW */
        : /*0*/"=r" (delta)
        : /*1*/"rm" (pix1), /*2*/"rm" (pix2),
                /*3*/OFFSETABLE_PTR(RGB15_to_YUV),
                /*4*/"m" (mmx_888to555_mult)
        : "%" A_REG, "%" D_REG
        );

        return (delta << 1) <= toler;
}

This was preprocessed with gcc-5:

static __inline__ bool
Scale_MMX_CmpYUV (Uint32 pix1, Uint32 pix2, int toler)
{
 int delta;

 __asm__ (
  "movd       %1, %%mm1 \n\t"
  "movd       %2, %%mm3 \n\t"



  "punpcklbw  %%mm0, %%mm1 \n\t"
  "\n\t"
  "psrlw      $3, %%mm1    \n\t"
  "punpcklbw  %%mm0, %%mm3 \n\t"
  "psrlw      $3, %%mm3    \n\t"
  "pmaddwd    %4, %%mm1    \n\t"
  "movq       %%mm1, %%mm2 \n\t"
  "pmaddwd    %4, %%mm3    \n\t"
  "\n\t"
  "movq       %%mm3, %%mm4 \n\t"
  "punpckhdq  %%mm0, %%mm2 \n\t"
  "por        %%mm2, %%mm1 \n\t"
  "punpckhdq  %%mm0, %%mm4 \n\t"
  "por        %%mm4, %%mm3 \n\t"


  "movd       %%mm1, %%eax \n\t"
  "movd       %%mm3, %%edx \n\t"

***  "movd " "%3" "(," "%%" "eax" "," "4" ")," "%%mm1" "\n\t"
  "movq       %%mm1, %%mm4 \n\t"

***  "movd " "%3" "(," "%%" "edx" "," "4" ")," "%%mm2" "\n\t"
# 657 "src/sc2code/libs/graphics/sdl/scalemmx.h"
  "psubusb    %%mm2, %%mm1 \n\t"
  "psubusb    %%mm4, %%mm2 \n\t"
  "por        %%mm2, %%mm1 \n\t"




  "movq       %%mm1, %%mm2 \n\t"
  "psrlq      $8, %%mm2    \n\t"
  "paddusb    %%mm2, %%mm1 \n\t"
  "psrlq      $8, %%mm2    \n\t"
  "paddusb    %%mm2, %%mm1 \n\t"

  "movd       %%mm1, %0    \n\t"
  "andl       $0xff, %0    \n\t"

 : "=r" (delta)
 : "rm" (pix1), "rm" (pix2),
       "o" (*(RGB15_to_YUV)),
       "m" (mmx_888to555_mult)
 : "%" "eax", "%" "edx"
 );

 return (delta << 1) <= toler;
}

This was preprocessed by gcc-6:

static __inline__ bool
Scale_MMX_CmpYUV (Uint32 pix1, Uint32 pix2, int toler)
{
 int delta;

 __asm__ (
  "movd       %1, %%mm1 \n\t"
  "movd       %2, %%mm3 \n\t"



  "punpcklbw  %%mm0, %%mm1 \n\t"
  "\n\t"
  "psrlw      $3, %%mm1    \n\t"
  "punpcklbw  %%mm0, %%mm3 \n\t"
  "psrlw      $3, %%mm3    \n\t"
  "pmaddwd    %4, %%mm1    \n\t"
  "movq       %%mm1, %%mm2 \n\t"
  "pmaddwd    %4, %%mm3    \n\t"
  "\n\t"
  "movq       %%mm3, %%mm4 \n\t"
  "punpckhdq  %%mm0, %%mm2 \n\t"
  "por        %%mm2, %%mm1 \n\t"
  "punpckhdq  %%mm0, %%mm4 \n\t"
  "por        %%mm4, %%mm3 \n\t"


  "movd       %%mm1, %%eax \n\t"
  "movd       %%mm3, %%edx \n\t"

***  "movd " "%3" "(," "%%" "eax" "," "4" ")," "%%mm1" "\n\t"
  "movq       %%mm1, %%mm4 \n\t"

***  "movd " "%3" "(," "%%" "edx" "," "4" ")," "%%mm2" "\n\t"
# 657 "src/sc2code/libs/graphics/sdl/scalemmx.h"
  "psubusb    %%mm2, %%mm1 \n\t"
  "psubusb    %%mm4, %%mm2 \n\t"
  "por        %%mm2, %%mm1 \n\t"




  "movq       %%mm1, %%mm2 \n\t"
  "psrlq      $8, %%mm2    \n\t"
  "paddusb    %%mm2, %%mm1 \n\t"
  "psrlq      $8, %%mm2    \n\t"
  "paddusb    %%mm2, %%mm1 \n\t"

  "movd       %%mm1, %0    \n\t"
  "andl       $0xff, %0    \n\t"

 : "=r" (delta)
 : "rm" (pix1), "rm" (pix2),
       "o" (*(RGB15_to_YUV)),
       "m" (mmx_888to555_mult)
 : "%" "eax", "%" "edx"
 );

 return (delta << 1) <= toler;
}


This is how it looks after being compiled to .s with gcc-5:

# 620 "src/sc2code/libs/graphics/sdl/scalemmx.h" 1
        movd       %ebx, %mm1
        movd       %ebp, %mm3
        punpcklbw  %mm0, %mm1

        psrlw      $3, %mm1
        punpcklbw  %mm0, %mm3
        psrlw      $3, %mm3
        pmaddwd    mmx_888to555_mult, %mm1
        movq       %mm1, %mm2
        pmaddwd    mmx_888to555_mult, %mm3

        movq       %mm3, %mm4
        punpckhdq  %mm0, %mm2
        por        %mm2, %mm1
        punpckhdq  %mm0, %mm4
        por        %mm4, %mm3
        movd       %mm1, %eax
        movd       %mm3, %edx
***     movd RGB15_to_YUV(,%eax,4),%mm1
        movq       %mm1, %mm4
***     movd RGB15_to_YUV(,%edx,4),%mm2
        psubusb    %mm2, %mm1
        psubusb    %mm4, %mm2
        por        %mm2, %mm1
        movq       %mm1, %mm2
        psrlq      $8, %mm2
        paddusb    %mm2, %mm1
        psrlq      $8, %mm2
        paddusb    %mm2, %mm1
        movd       %mm1, %ebp
        andl       $0xff, %ebp

and this was generated by gcc-6:

# 620 "src/sc2code/libs/graphics/sdl/scalemmx.h" 1
        movd       %ebx, %mm1
        movd       %ebp, %mm3
        punpcklbw  %mm0, %mm1

        psrlw      $3, %mm1
        punpcklbw  %mm0, %mm3
        psrlw      $3, %mm3
        pmaddwd    (%esi), %mm1
        movq       %mm1, %mm2
        pmaddwd    (%esi), %mm3

        movq       %mm3, %mm4
        punpckhdq  %mm0, %mm2
        por        %mm2, %mm1
        punpckhdq  %mm0, %mm4
        por        %mm4, %mm3
        movd       %mm1, %eax
        movd       %mm3, %edx
***     movd (%edi)(,%eax,4),%mm1
        movq       %mm1, %mm4
***     movd (%edi)(,%edx,4),%mm2
        psubusb    %mm2, %mm1
        psubusb    %mm4, %mm2
        por        %mm2, %mm1
        movq       %mm1, %mm2
        psrlq      $8, %mm2
        paddusb    %mm2, %mm1
        psrlq      $8, %mm2
        paddusb    %mm2, %mm1
        movd       %mm1, %ebp
        andl       $0xff, %ebp


OK, since this looks like a regression in gcc, I've filed
PR78311 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78311

Andreas

--- End Message ---
--- Begin Message ---
Source: uqm
Source-Version: 0.6.2.dfsg-9.4

We believe that the bug you reported is fixed in the latest version of
uqm, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 843...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Stephen Kitt <sk...@debian.org> (supplier of updated uqm package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Thu, 01 Dec 2016 07:57:51 +0100
Source: uqm
Binary: uqm
Architecture: source
Version: 0.6.2.dfsg-9.4
Distribution: unstable
Urgency: medium
Maintainer: Dmitry E. Oboukhov <un...@debian.org>
Changed-By: Stephen Kitt <sk...@debian.org>
Description:
 uqm        - The Ur-Quan Masters - An inter-galactic adventure game
Closes: 843979
Changes:
 uqm (0.6.2.dfsg-9.4) unstable; urgency=medium
 .
   * Non-maintainer upload.
   * Disable PIE, closes: #843979 (see also
     https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78311).
Checksums-Sha1:
 cf460ac286f7832691b604e623913cb244ee821e 1940 uqm_0.6.2.dfsg-9.4.dsc
 af956d7f9e943b73f8ceeda5380b0a45e071ea1d 9504 uqm_0.6.2.dfsg-9.4.debian.tar.xz
Checksums-Sha256:
 676ba11cf81ecf2bb705ce70a7e223c85a25fef6f0b1a6ed25737f62f6f6a94b 1940 
uqm_0.6.2.dfsg-9.4.dsc
 cf91075a305718cb96e751c4e173a5c31f6b959649547708ab61349dde5148b1 9504 
uqm_0.6.2.dfsg-9.4.debian.tar.xz
Files:
 bca8931ac39c45e2e9665373924c56a1 1940 contrib/games optional 
uqm_0.6.2.dfsg-9.4.dsc
 255fcc2bd351b00d043c588b7c35f217 9504 contrib/games optional 
uqm_0.6.2.dfsg-9.4.debian.tar.xz

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEnPVX/hPLkMoq7x0ggNMC9Yhtg5wFAlg/yoUACgkQgNMC9Yht
g5xcaxAAiCf9ERtams+G1Y2O6WnwB7NZ2S29X647Nif7y9A7ST4lrSGXrfQjYc+B
x8iNcFS4DqtktjHFw7i/LbKIf9oCQF9mN21XGKxAtDkDHPecSMZ4mVObsqqWNsEv
c/Rl6u0k1KCwNRHkhZM61Lw8occnoMRtwlM6xk7iiEglZ87ywtKRnSbaEIKQgRxS
23Iq3BPTbTg8wW7bQnEABOumuIJ5QQWhaylxUP9zNFNZPClQfgiQXvbzZppnXxV7
h9IjFbrv/VhRvxP6w4SV8mn0EhT2rLg9fnuh6ILaoxxWDiCjAmVNbz0kFjM14KnR
XaFFqpXHthV039vPxD6prQnZ5NuAkyrLu9QNtY7/Jgi2UWDNHVoVjiDr1OaX9uDS
rXRdSvN54klBbVHd13U3gVknWjMTUHoItBnDAYIh4wnmtJ/6qLg4o+CX/ISYW9YP
qiGLcEeXFDArfGJ8PCT5cObMu9ansST7ByY6H4v96v73kcG/rpBRcKdwPyWUW33m
iOpFMkOWz3f19ebSQDey18Ual1wF6Nl2bSOJRXQjef7L3AjwNd/PwRNyeoy3tYU9
Vg3X6OKYbfb8qmESj1lCD2/a9zMltJdA4CdZTRJlQKn/OclJiWIetylpNJRpi4kA
6KuBVQwXjvlIeBOMAgAibOP/czLiVqFwZo6jCTdNmtDTNv11EV4=
=hQMj
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to