On 11/9/18 2:28 PM, Michael Matz wrote: > Hi, > > On Thu, 8 Nov 2018, Martin Liška wrote: > >>> That seems better. But still, why declare this in system.h? It seems >>> hash-table.h seems more appropriate. >> >> I need to declare it before I'll poison it. As system.h is included very >> early, one can guarantee that there will be no usage before the >> poisoning happens. > > Yes but it's also included everywhere, so adding anything to it comes at a > cost, and conceptually it simply doesn't belong there.
Agree. > > There's no fundamental reason why we can't poison identifiers in other > headers. Indeed we do in vec.h. So move the whole thing including > poisoning to hash-table.h? That's not feasible as gcc/gcc/genhooks.c files use the function and we don't want to include hash-table.h in the generator files. So second candidate can be gcc/hash-traits.h, but it's also not working: /home/marxin/Programming/gcc/gcc/hash-traits.h:270:17: error: ‘gt_pointer_operator’ has not been declared pch_nx (T &p, gt_pointer_operator op, void *cookie) ^~~~~~~~~~~~~~~~~~~ so we should eventually come up with "hash.h" and include it in many places as there's following usage in hash-traits.h: 212 inline hashval_t 213 string_hash::hash (const char *id) 214 { 215 return hash_string (id); 216 } So it's question whether it worth doing that? Martin > > > Ciao, > Michael. >