From: Ken Brown <kbrown@cornell.edu>
To: cygwin-developers@cygwin.com
Subject: Re: automake issue
Date: Thu, 21 Oct 2021 15:33:56 -0400 [thread overview]
Message-ID: <6ebe96b4-e9a7-1607-23e8-524c7560aadf@cornell.edu> (raw)
In-Reply-To: <d05aedc0-9a3b-6e13-69ff-ba9cf5fa351e@dronecode.org.uk>
On 10/21/2021 9:08 AM, Jon Turney wrote:
> On 21/10/2021 11:48, Corinna Vinschen wrote:
>> On Oct 20 16:58, Ken Brown wrote:
>>> I was debugging with what I thought was an unoptimized build of cygwin1.dll
>>> (with -O0 in CXXFLAGS), but then I discovered that malloc.cc was actually
>>> compiled with -O3. This is because of the following snippet from
>>> winsup/cygwin/Makefile.am:
>>>
>>> # If an optimization level is explicitly set in CXXFLAGS, set -O3 for these
>>> files
>>> # XXX: this seems to assume it's not -O0?
>
> Note that this is my observation of a pre-existing issue, not something that's
> introduced by the automake conversion.
>
>>> #
>>> # (the indentation here prevents automake trying to process this as an automake
>>> # conditional)
>>> ifneq "${filter -O%,$(CXXFLAGS)}" ""
>>> malloc_CFLAGS=-O3
>>> sync_CFLAGS=-O3
>>> endif
>>>
>>> I thought I could fix this by changing the snippet to
>>>
>>> ifneq "${filter -O%,$(CXXFLAGS)}" ""
>>> ifeq "${filter -O0,$(CXXFLAGS)}" ""
>>> malloc_CFLAGS=-O3
>>> sync_CFLAGS=-O3
>>> endif
>>> endif
>
> Clever. It didn't occur to me to write something like this.
>
>>> but this didn't work. After running winsup/autogen.sh,
>>> winsup/cygwin/Makefile.in contained
>>>
>>> malloc_CFLAGS = -O3
>>> sync_CFLAGS = -O3
>>>
>>> unconditionally.
>
> Hmm.. yes. That's disappointing. I think it was working at some stage, so idk
> if this is a automake change?
>
>>> So in spite of the comment above about indentation, it seems that the
>>> conditional is being treated as an automake conditional.
>>>
>>> Does anyone know how to fix this so that -O0 really produces an unoptimized
>>> build?
>>
>> I workaround this by setting CFLAGS=-g on the command line. There's no
>> -O then and it should work as desired. The save thing would probably
>> be something like this, though:
>>
>> https://stackoverflow.com/questions/4256609/makefile-conditional-with-automake-autoconf
>>
>
> Using an automake conditional isn't good, because that can't consider the value
> of CXXFLAGS if it's overriden on the 'make' command line.
>
> Really, I'm not sure if this block is a good idea at all. I did consider
> removing it when converting to automake.
>
> I couldn't find any history which suggests these flags are here due to evidence
> ('using -O3 makes this benchmark faster'), rather than guesswork ('these files
> probably contain hotspots, so use -O3 to make it go faster!').
It's too bad we don't know why this was done. In the meantime, I'll work around
the problem by using a private branch in which that block is removed. I tried
Corinna's suggestion of setting CFLAGS=-g, but that didn't produce an
unoptimized build. I still saw '-O2 -g' when building newlib and '-O2 -g -g
-O2' when building cygwin.
Ken
next prev parent reply other threads:[~2021-10-21 19:33 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-20 20:58 Ken Brown
2021-10-21 10:48 ` Corinna Vinschen
2021-10-21 13:08 ` Jon Turney
2021-10-21 19:33 ` Ken Brown [this message]
2021-10-22 8:44 ` Corinna Vinschen
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=6ebe96b4-e9a7-1607-23e8-524c7560aadf@cornell.edu \
--to=kbrown@cornell.edu \
--cc=cygwin-developers@cygwin.com \
/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).