On 06/14/18 15:43, Richard Biener wrote:
> On Fri, 8 Jun 2018, Bernd Edlinger wrote:
> 
>> Hi!
>>
>>
>> This patch converts the splay-tree internals into a template, and makes
>> the typed_splay_tree template really type-safe.  Previously everything
>> would break apart if KEY_TYPE or VALUE_TYPE would not be pointer types.
>> This limitation is now removed.
>>
>> I took the freedom to add a remove function which is only for
>> completeness and test coverage, but not (yet) used in a productive way.
>>
>>
>> Bootstrapped and reg-tested on x86_64-linux-gnu.
>> Is it OK for trunk?
> 
> It looks OK to me but I wonder if we can avoid some of the code
> duplication due to template instantiation by deriving from a non-templated
> base class somehow?  The cc1* binaries keep growing with more and
> more template use :/
> 


No problem.  The first version used an approach where splay-tree
exposes an extended interface with a context pointer.

See: https://gcc.gnu.org/ml/gcc-patches/2018-05/msg00178.html

But it has also a limitation when the value or type is a class, it will
not be possible to cast to uintptr_t, it will fail to compile, which is
still an improvement since the current version just casts incompatible
function pointers, and since I had to silence the -Wcast-function-type
the warning would not help either.


If you like the original patch better than the template, I can cleanup
the original patch as an alternative?


Thanks
Bernd.

Reply via email to