This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: arch-specific template code


Hi,

On 09/09/2012 03:37 AM, Ulrich Drepper wrote:
On Sat, Sep 8, 2012 at 5:19 AM, Paolo Carlini <paolo.carlini@oracle.com> wrote:
Good, good. I don't see any problem with integrating the code more or less
as-is, we have only to figure out a suited, neat, scheme for the includes.
How about the attached patch?

- the cpu/* directories have a subdir opt/ which will contain the
headers with optimizations

- there always has to be an appropriate header in config/generic/opt/*

- it will be necessary to differentiate between optimizations used in,
say, <random> and <ext/random>.  This is the perhaps not so clean
part.  The problem is that the file has to be included between the
definition of the data structures and the #include of the .tcc file.
As you can see in the patch, we need for function which are not
template specialization be able to prevent the definition in .tcc
files to happen


This scheme is scalable and shouldn't be confusing. The patch so far only cleans up the existing <ext/random> file. I haven't added the specialization yet.

OK?
I guess it's Ok, yes, but this is a different case, we aren't simply adding specializations via the __generate infrastructure, we are replacing code. Thus, if I understand correctly, the idea is that opt_random.h is included before the default implementations in *.tcc and can decide to replace some functions, define a macro and that way prevent the next *.tcc from providing the default one. Works for me. I'll rather wait a couple of days for comment from other interested parties, maybe we could handle first some of those straightforward cases which you presented earlier, which simply add __generate (double*, double*, ...)

Paolo.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]