From 3f99ff01eabd07d460cd0c08602aeb34e38e0d2b Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering@fb.com>
Date: Sat, 27 Sep 2014 09:44:47 -0700
Subject: [PATCH] maint: suppress a false-positive -Wcast-align warning

Building with --enable-gcc-warnings and gcc-4.9.1 would provoke this:
  grep.c:499:12: error: cast from 'const char *' to 'const uword *'\
      (aka 'const unsigned long *') increases required alignment from\
      1 to 8 [-Werror,-Wcast-align]
    for (s = (uword const *) p; ! (*s & hibyte_mask); s++)
	     ^~~~~~~~~~~~~~~~~
* src/grep.c (skip_easy_bytes): Use a pragma to suppress
gcc's false-positive cast-alignment warning.
---
 src/grep.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/grep.c b/src/grep.c
index 046f17f..207bdea 100644
--- a/src/grep.c
+++ b/src/grep.c
@@ -496,8 +496,15 @@ skip_easy_bytes (char const *buf)
   for (p = buf; (uintptr_t) p % sizeof (uword) != 0; p++)
     if (*p & HIBYTE)
       return p;
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wcast-align"
+  /* We have aligned P to a uword boundary, so we can safely
+     tell gcc to suppress its cast-alignment warning.  */
   for (s = (uword const *) p; ! (*s & hibyte_mask); s++)
     continue;
+#pragma GCC diagnostic pop
+
   for (p = (char const *) s; ! (*p & HIBYTE); p++)
     continue;
   return p;
-- 
2.1.0

