public inbox for cygwin-developers@cygwin.com
 help / color / mirror / Atom feed
From: Jon Turney <jon.turney@dronecode.org.uk>
To: cygwin-developers@cygwin.com
Subject: Re: automake issue
Date: Thu, 21 Oct 2021 14:08:02 +0100	[thread overview]
Message-ID: <d05aedc0-9a3b-6e13-69ff-ba9cf5fa351e@dronecode.org.uk> (raw)
In-Reply-To: <YXFFhhCCKguP6i7u@calimero.vinschen.de>

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

  reply	other threads:[~2021-10-21 13:08 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 [this message]
2021-10-21 19:33     ` Ken Brown
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=d05aedc0-9a3b-6e13-69ff-ba9cf5fa351e@dronecode.org.uk \
    --to=jon.turney@dronecode.org.uk \
    --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).