On 11/5/18 7:37 PM, Michael Matz wrote:
> Hi,
>
> On Fri, 2 Nov 2018, Martin Liška wrote:
>
>> V2 of the patch.
>>
>> Thoughts?
>
Hi.
> Whereever the new function belongs it certainly isn't system.h. Also the
> definition in a header seems excessive. Sure, it enables inlining of it,
> but that seems premature optimization. It contains a loop, and inlining
> anything with loops that aren't very likely to loop just once or never
> just blows code for no gain. Also as the function is leaf there won't be
> any second-order effect from inlining.
Ok, works for me. As you know my main motivation was to provide stronger type
declaration that can be used for 'const char *'. So what about providing 2
wrappers
and poisoning the implementation?
Martin
>
>
> Ciao,
> Michael.
>
diff --git a/gcc/system.h b/gcc/system.h
index 100feb567c9..fb781645350 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -879,6 +879,23 @@ extern void fancy_abort (const char *, int, const char *)
#undef strerror
#pragma GCC poison strerror
+/* Define new hash string wappers that will allow to poison
+ the implementation. */
+
+static inline hashval_t
+hash_string_vptr (const void *p)
+{
+ return htab_hash_string (p);
+}
+
+static inline hashval_t
+hash_string (const char *str)
+{
+ return htab_hash_string ((const char *)str);
+}
+
+#pragma GCC poison htab_hash_string
+
/* loc_t is defined on some systems and too inviting for some
programmers to avoid. */
#undef loc_t