public inbox for cygwin-developers@cygwin.com
 help / color / mirror / Atom feed
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

  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).