public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
From: Nick Savoiu <savoiu@yahoo.com>
To: "gcc-help@gcc.gnu.org" <gcc-help@gcc.gnu.org>
Subject: Does -Og work well?
Date: Mon, 11 Oct 2021 17:47:55 +0000 (UTC)	[thread overview]
Message-ID: <2132295523.836151.1633974475603@mail.yahoo.com> (raw)
In-Reply-To: <2132295523.836151.1633974475603.ref@mail.yahoo.com>

Hi all, I've been trying for some time to use the recommended -Og for the edit/compile/debug/repeat cycle. The hope was to speed up the code.

The code does get a speed-up, however, more often than not, I'm running into issues that affect debugability: variables are marked as optimized when not expecting them to, breakpoints don't work, etc.

Is anyone having such issues? If so, how do you resolve them? I tried -fvar-tracking-assignments and that helps here and there but it's no panacea.

For the code below, here's what I see using Ubuntu 20.04 + GCC 9.3.0 + GDB 9.2:

nick@localhost:~$ g++ -g blah.cpp -o blah
nick@localhost:~$ gdb -quiet blah
Reading symbols from blah...
(gdb) b blah.cpp:33
Breakpoint 1 at 0x29e1: file blah.cpp, line 33.
(gdb) info b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x00000000000029e1 in main(int, char**) at blah.cpp:33
(gdb) quit
nick@localhost:~$ g++ -g -Og blah.cpp -o blah
nick@localhost:~$ gdb -quiet blah
Reading symbols from blah...
(gdb) b blah.cpp:33
Breakpoint 1 at 0x12e9: blah.cpp:33. (2 locations)
(gdb) info b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   <MULTIPLE>
1.1                         y   0x00000000000012e9 in __static_initialization_and_destruction_0(int, int)
                                                   at blah.cpp:40
1.2                         y   0x0000000000001b47 in _GLOBAL__sub_I__Z6get_niB5cxx11ci() at blah.cpp:40
(gdb) quitnick@localhost:~$

How did blah.cpp:33 get transformed into blah.cpp:40?

Also, if I use -Og and step up to line 31 I can still see the value of fnih. However, the moment I move on to line 32, fnih is marked as "optimized out". I can sort of see that fnih is no longer needed after line 31 but that makes it hard to see how 'id' got its value. And this is a simple testcase. For more complicated code it's not always clear why something was marked as "optimized out"

Nick

CODE:

#include <string>
#include <iostream>

std::string get_ni(char const fnih, int const p)
{
    return std::string(1,fnih) + "_" + std::to_string(p);
}

int main(int,char**)
{
    std::string res;
    std::string array[10][10];
    for (auto& a : array)
        for (auto& b : a)
            b="fsahjdsyuufdsiufdsufds";
    auto dx = 0;
    for (auto p = 0; p < 2; ++p)
    {
        auto cx = 0;
        for (auto s = 0; s < 2; ++s)
        {
            for (auto d = 0; d < 4; ++d)
            {
                if (d % 2 != s)
                    continue;

                ++cx;
                int const dci =d;
                auto const &dc = array[p][dci];
                auto const &fnih = dc.at(0);
                std::string const ni = get_ni(fnih, p);
                std::string const id = "ID_" + std::to_string(dx++) + std::to_string(cx++);
                std::cout  << "i " << ni << " <- " << id; //set breakpoint here
                res += res;
            }
        }
    }

    return res.size();
}


       reply	other threads:[~2021-10-11 17:48 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <2132295523.836151.1633974475603.ref@mail.yahoo.com>
2021-10-11 17:47 ` Nick Savoiu [this message]
2021-10-11 18:07   ` Xi Ruoyao
2021-10-11 18:39     ` Jonathan Wakely
2021-10-11 19:15       ` Nick Savoiu
2021-10-11 19:21         ` Xi Ruoyao
2021-10-14  7:09   ` David Brown
2021-10-14 17:10     ` Nick Savoiu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2132295523.836151.1633974475603@mail.yahoo.com \
    --to=savoiu@yahoo.com \
    --cc=gcc-help@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).