This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/* v3] Generic string function optimization: Add skeleton
- From: OndÅej BÃlka <neleai at seznam dot cz>
- To: Joseph Myers <joseph at codesourcery dot com>
- Cc: Richard Henderson <rth at twiddle dot net>, libc-alpha at sourceware dot org
- Date: Fri, 29 May 2015 12:56:39 +0200
- Subject: Re: [PATCH 1/* v3] Generic string function optimization: Add skeleton
- Authentication-results: sourceware.org; auth=none
- References: <20150527060121 dot GA19105 at domone> <20150528142956 dot GA25176 at domone> <556754ED dot 70804 at twiddle dot net> <20150528180439 dot GB4872 at domone> <alpine dot DEB dot 2 dot 10 dot 1505282053130 dot 10508 at digraph dot polyomino dot org dot uk> <20150528221320 dot GA7297 at domone> <alpine dot DEB dot 2 dot 10 dot 1505291032430 dot 2439 at digraph dot polyomino dot org dot uk>
On Fri, May 29, 2015 at 10:42:17AM +0000, Joseph Myers wrote:
> On Fri, 29 May 2015, OndÅej BÃlka wrote:
>
> > On Thu, May 28, 2015 at 08:54:31PM +0000, Joseph Myers wrote:
> > > On Thu, 28 May 2015, OndÅej BÃlka wrote:
> > >
> > > > Both comments are correct. We should do it generically and surround
> > > > these functions with ifdef to supply arch-specific versions.
> > >
> > > #if, not #ifdef, please, for all architecture choices in these functions.
> > > The sysdeps/generic version of the header architectures can use to change
> > > the default choices should have detailed comments on the default
> > > definitions of all the relevant macros to explain their semantics.
> > >
> > For what purpose? Its pointless except that you would need to have
> > additional header say precommon.h, then undef and redefine macro when
> > you want change.
>
> The general principle is that macro uses should be typo-proof. That means
> avoiding #ifdef, #ifndef and #undef where possible.
>
> The principle of documenting macro semantics applies even if there's a
> good reason typo-proof conventions are problematic in a particular case.
> There should *never* be any sort of architecture hook without clear
> documentation of the semantics of the hook (written from the perspective
> of an architecture maintainer wanting to know how to set the hook for
> their architecture, not from the perspective of the person writing the
> code using the hook). I always advise writing documentation early in the
> process of developing a patch - the documentation is as important as the
> rest of the code.
>
> > And it doesn't help to catch any errors. If you misspell define then you
> > will get error with duplicate definition.
>
> If the code does
>
> #ifdef MACRO
>
> or
>
> #ifndef MACRO
>
> then if an architecture does
>
> #define MCARO
>
> (with or without #undef) that will silently be ignored.
>
> If, instead, the code does
>
> #if MACRO
>
> and there's a sysdeps/generic header that defines MACRO one way, if an
> architecture overrides that header with one that misspells the name, a
> -Wundef warning will be immediately visible (though we still need to fix
> the -Wundef warnings in the testsuite and remove the -Wno-error=undef).
>
Joseph, read previous mail before writing. Your suggestion is pointless.
For a code
#ifndef CUSTOM_FOO
int foo()
{
}
#endif
If architecture does
#define CUTSOM_FOO
int foo()
{
}
Then it gets error with redefinition of foo.