about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--iconv/loop.c11
-rw-r--r--sysdeps/s390/multiarch/8bit-generic.c4
3 files changed, 22 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 42e167e18e..dc0dc43a2c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2018-03-05  Joseph Myers  <joseph@codesourcery.com>
+
+	* iconv/loop.c (UNICODE_TAG_HANDLER): Disable
+	-Wmaybe-uninitialized for -Os.
+	* sysdeps/s390/multiarch/8bit-generic.c (BODY): Add comment about
+	this disabling.
+
 2018-03-03  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* bits/dirent.h (__INO_T_MATCHES_INO64_T): Define regardless whether
diff --git a/iconv/loop.c b/iconv/loop.c
index 25609f13db..d571b593c7 100644
--- a/iconv/loop.c
+++ b/iconv/loop.c
@@ -254,6 +254,16 @@
   }
 
 
+/* With GCC 7 when compiling with -Os for 32-bit s390 the compiler
+   warns that the variable 'ch', in the definition of BODY in
+   sysdeps/s390/multiarch/8bit-generic.c, may be used uninitialized in
+   the call to UNICODE_TAG_HANDLER in that macro.  This variable is
+   actually always initialized before use, in the prior loop if INDEX
+   is nonzero and in the following 'if' if INDEX is zero.  That code
+   has a comment referencing this diagnostic disabling; updates in one
+   place may require updates in the other.  */
+DIAG_PUSH_NEEDS_COMMENT;
+DIAG_IGNORE_Os_NEEDS_COMMENT (7, "-Wmaybe-uninitialized");
 /* Handling of Unicode 3.1 TAG characters.  Unicode recommends
    "If language codes are not relevant to the particular processing
     operation, then they should be ignored."  This macro is usually
@@ -267,6 +277,7 @@
 	continue;							      \
       }									      \
   }
+DIAG_POP_NEEDS_COMMENT;
 
 
 /* The function returns the status, as defined in gconv.h.  */
diff --git a/sysdeps/s390/multiarch/8bit-generic.c b/sysdeps/s390/multiarch/8bit-generic.c
index 8d44cd883e..d608beaa62 100644
--- a/sysdeps/s390/multiarch/8bit-generic.c
+++ b/sysdeps/s390/multiarch/8bit-generic.c
@@ -358,6 +358,10 @@
 		  }							\
 	      }								\
 									\
+	    /* iconv/loop.c disables -Wmaybe-uninitialized for a false	\
+	       positive warning in this code with -Os and has a		\
+	       comment referencing this code accordingly.  Updates in	\
+	       one place may require updates in the other.  */		\
 	    UNICODE_TAG_HANDLER (ch, 4);				\
 									\
 	    /* This is an illegal character.  */			\