On Tue, Jul 30, 2013 at 3:57 PM, Daniel Shahaf <danie...@elego.de> wrote:

> Stefan Fuhrmann wrote on Tue, Jul 30, 2013 at 01:04:43 +0200:
> > On Mon, Jul 29, 2013 at 9:06 PM, Daniel Shahaf <danie...@elego.de>
> wrote:
> >
> > > danie...@apache.org wrote on Mon, Jul 29, 2013 at 18:35:26 -0000:
> > > > Author: danielsh
> > > > Date: Mon Jul 29 18:35:25 2013
> > > > New Revision: 1508170
> > > >
> > > > URL: http://svn.apache.org/r1508170
> > > > Log:
> > > > Follow-up to r1507366: svn_hash_gets: compute the length of string
> > > literal
> > > > keys (common case) at compile-time, without multiply-evaluating
> > > dynamically-
> > > > computed keys.
> > > >
> > > > Review by: philip
> > > >            breser
> > >
> > > Oddly enough, the optimization doesn't seem to kick in for me in
> > > a '--enable-maintainer-mode' '-C' '--enable-optimize' build.  For some
> > > reason my non-maintainer build fails.  Can someone try the following on
> > > a release build, please, and report what value they get for klen?
> > >
> > > % ./libtool --mode=execute gdb -silent -ex r -args subversion/svn/svn
> > > update
> > > (gdb) b update_internal
> > > (gdb) r
> > > (gdb) b apr_hash_get
> > > Breakpoint 2 at 0x7ffff6b25ac0: file tables/apr_hash.c, line 342.
> > > (gdb) c
> > > Continuing.
> > >
> > > Breakpoint 2, apr_hash_get (ht=0x65c698, key=0x7ffff7bcf86c, klen=-1)
> > >     at tables/apr_hash.c:342
> > > 342     {
> > > (gdb) up
> > > #1  0x00007ffff7bccd69 in update_internal (result_rev=0x7fffffffe260,
> > >     conflicted_paths=<value optimized out>,
> > >     local_abspath=0x6987e0 "/home/danielsh/src/svn/t1",
> > >     anchor_abspath=0x698a60 "/home/danielsh/src/svn/t1",
> > >     revision=0x7fffffffe170, depth=svn_depth_unknown,
> depth_is_sticky=0,
> > >     ignore_externals=0, allow_unver_obstructions=0,
> adds_as_modification=1,
> > >     timestamp_sleep=0x7fffffffe26c, notify_summary=1, ctx=0x65d810,
> > >     pool=0x6986a8) at subversion/libsvn_client/update.c:240
> > > 240                           ? svn_hash_gets(ctx->config,
> > > SVN_CONFIG_CATEGORY_CONFIG)
> > > (gdb)
> > >
> > > I would expect 6, since SVN_CONFIG_CATEGORY_CONFIG is known at
> > > compile-time.
> > >
> >
> > A two things have been broken here:
> >
>
> Thanks for fixing this.  Collective review of your commits:
>
> r1508221: should update the docstring of SVN_HAS_DUNDER_BUILTINS in
> configure.ac to remove mention of __builtin_choose_expr
>
> r1508221: should update the AC_COMPILE_IFELSE call in the
> cross-compilation branch to remove __builtin_choose_expr


Fixed in r1508458.

r1508222: the #ifndef seems to be the wrong solution to whatever problem
> it is trying to fix.  If it's trying to generate a compiler warning, it
> should use the #warning preprocessor directive; if it's trying to
> silence one about use of an undefined macro, how about doing
>   #ifndef SVN_HAS_DUNDER_BUILTINS
>   #error "Build broken (do you need to include svn_private_config.h
> earlier?)"
>   #endif
>

No go. This is a public API header. People will not define
SVN_HAS_DUNDER_BUILTINS in their applications.


> and adding a
>   #define SVN_HAS_DUNDER_BUILTINS 0
> to subversion_config_private.hw?
>

Done in r1508460,

r1508225: changing the include order //only in places that currently
> include svn_hash.h// seems like a bad idea; we should change it
> _everywhere_ (since other places may grow svn_hash.h includes in the
> future).
>

Well, I got kind of fed up after manually patching
~180 files (about the same number of files left to
check). Even the commit took longer than 4 minutes.

So, feel free to do some search/replace magic to
handle the remaining files.

Also, let's take this opportunity to document our preferred order of
> #include's in HACKING (The relative order of: stdlib, apr, mod_dav, bdb,
> serf, sqlite, svn_*.h, svn_*_private.h, ./*.h, ../libsvn_{fs|ra}/*.h,
> subversion_config_private.h, and APR_WANT_FOO) --- I always end
> up copying the order from some existing file.
>
> > * the ac macro (fixed in r1508221)
> > * the definition / #include order (detected as of r1508222, fixed in
> > r1508225)
> >
> > Now, I see the optimization work on my machine again.
> >
>
> Great, thanks for finishing what I'd started!
>

Thanks for the review!

-- Stefan^2.

Reply via email to