[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#810819: marked as done (gcc-5: misoptimization, "goto out" removed)



Your message dated Wed, 23 Jan 2019 10:00:21 +0000
with message-id <E1gmFKX-000B2o-7A@fasolo.debian.org>
and subject line Bug#920166: Removed package(s) from unstable
has caused the Debian Bug report #810819,
regarding gcc-5: misoptimization, "goto out" removed
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 owner@bugs.debian.org
immediately.)


-- 
810819: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=810819
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: gcc-5
Version: 5.3.1-5
Severity: normal

During debugging for some strange behaviour in DRBD I got upon this.

 * DRBD 8.4 from GIT head (http://git.drbd.org/drbd-8.4.git/)
 * compiling for linux-headers-4.3.0-1-amd64=4.3.3-5
 * drbd_send_dblock(), in drbd/drbd_main.c

For reference: the codeblock is around line 1759, and looks like this:

    if (dp_flags & DP_DISCARD) {
        struct p_trim *t = (struct p_trim*)p;
        t->size = cpu_to_be32(req->i.size);
        err = __send_command(peer_device->connection, device->vnr, sock, P_TRIM, sizeof(*t), NULL, 0);
        goto out;
    }
    if (dp_flags & DP_WSAME) {

Now, when I look at the generated disassembly, the "goto out" instruction 
is simply missing:

   0x0000000000028626 <+358>:   mov    %eax,0x18(%rdi)
   0x0000000000028629 <+361>:   mov    0x10(%rsp),%rax
   0x000000000002862e <+366>:   mov    0x18(%r10),%rdi
   0x0000000000028632 <+370>:   mov    0x68(%rax),%esi
   0x0000000000028635 <+373>:   movl   $0x0,0x8(%rsp)
   0x000000000002863d <+381>:   movq   $0x0,(%rsp)
   0x0000000000028645 <+389>:   callq  0x267d0 <__send_command>
   0x000000000002864a <+394>:   mov    %eax,0x20(%rsp)  # store result
   0x000000000002864e <+398>:   mov    0x40(%rsp),%rdi  # load for DP_WSAME
   0x0000000000028653 <+403>:   callq  0x28658 <drbd_send_dblock+408>

When I insert

    #pragma GCC push_options
    #pragma GCC optimize ("O0")

above the function definition, the result is this:

    0x0000000000027aad <+605>:   movl   $0x0,0x8(%rsp)
    0x0000000000027ab5 <+613>:   movq   $0x0,(%rsp)
    0x0000000000027abd <+621>:   mov    $0x1c,%r9d
    0x0000000000027ac3 <+627>:   mov    $0x31,%r8d
    0x0000000000027ac9 <+633>:   mov    %rax,%rdi
    0x0000000000027acc <+636>:   callq  0x2cc00 <__send_command>
    0x0000000000027ad1 <+641>:   mov    %eax,0x30(%rsp)
    0x0000000000027ad5 <+645>:   jmpq   0x27de0 <drbd_send_dblock+1424>
    0x0000000000027ada <+650>:   mov    0x2c(%rsp),%eax

Hooray, the jump is back!


-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 4.3.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_AT.UTF-8, LC_CTYPE=de_AT.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages gcc-5 depends on:
ii  binutils      2.25.90.20160101-1
ii  cpp-5         5.3.1-5
ii  gcc-5-base    5.3.1-5
ii  libc6         2.21-6
ii  libcc1-0      5.3.1-5
ii  libgcc-5-dev  5.3.1-5
ii  libgcc1       1:5.3.1-5
ii  libgmp10      2:6.1.0+dfsg-2
ii  libisl15      0.15-3
ii  libmpc3       1.0.3-1
ii  libmpfr4      3.1.3-2
ii  libstdc++6    5.3.1-5
ii  zlib1g        1:1.2.8.dfsg-2+b1

Versions of packages gcc-5 recommends:
ii  libc6-dev  2.21-6

Versions of packages gcc-5 suggests:
pn  gcc-5-doc         <none>
pn  gcc-5-locales     <none>
pn  gcc-5-multilib    <none>
pn  libasan2-dbg      <none>
pn  libatomic1-dbg    <none>
pn  libcilkrts5-dbg   <none>
pn  libgcc1-dbg       <none>
pn  libgomp1-dbg      <none>
pn  libitm1-dbg       <none>
pn  liblsan0-dbg      <none>
pn  libmpx0-dbg       <none>
pn  libquadmath0-dbg  <none>
pn  libtsan0-dbg      <none>
pn  libubsan0-dbg     <none>

-- no debconf information

--- End Message ---
--- Begin Message ---
Version: 5.5.0-12+rm

Dear submitter,

as the package gcc-5 has just been removed from the Debian archive
unstable we hereby close the associated bug reports.  We are sorry
that we couldn't deal with your issue properly.

For details on the removal, please see https://bugs.debian.org/920166

The version of this package that was in Debian prior to this removal
can still be found using http://snapshot.debian.org/.

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

Debian distribution maintenance software
pp.
Scott Kitterman (the ftpmaster behind the curtain)

--- End Message ---

Reply to: