Thanks, I installed the attached patch into Gnulib.
>From fff1ad350b7d1a10c136b0aa00cba9b0776cc2c7 Mon Sep 17 00:00:00 2001
From: Paul Eggert
Date: Fri, 30 Nov 2018 16:25:38 -0800
Subject: [PATCH] memrchr: port better to clang
* lib/memrchr.c (__memrchr): Cast to void * instead of to
longword *, to pacify clang -Wcast-align (Bug#33544).
---
ChangeLog | 6 ++
lib/memrchr.c | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index d0ccda7cc..85e987842 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-11-30 Paul Eggert
+
+ memrchr: port better to clang
+ * lib/memrchr.c (__memrchr): Cast to void * instead of to
+ longword *, to pacify clang -Wcast-align (Bug#33544).
+
2018-11-29 Eric Blake
docs: mention printf %m considerations
diff --git a/lib/memrchr.c b/lib/memrchr.c
index 99acfd9c5..2efc7cb97 100644
--- a/lib/memrchr.c
+++ b/lib/memrchr.c
@@ -68,7 +68,7 @@ __memrchr (void const *s, int c_in, size_t n)
if (*--char_ptr == c)
return (void *) char_ptr;
- longword_ptr = (const longword *) char_ptr;
+ longword_ptr = (const void *) char_ptr;
/* All these elucidatory comments refer to 4-byte longwords,
but the theory applies equally well to any size longwords. */
--
2.19.2