Don't use -Wno-uninitialized in math/

Message ID 1440628824.14154.16.camel@ubuntu-sellcey
State Superseded
Headers

Commit Message

Steve Ellcey Aug. 26, 2015, 10:40 p.m. UTC
  On Wed, 2015-08-26 at 22:15 +0000, Joseph Myers wrote:
> On Wed, 26 Aug 2015, Steve Ellcey wrote:
> 
> > I tried moving the diag/ignore to just after the include of
> > libc-internal.h and I got errors about __GNUC_PREREQ not being defined.
> > If I put the diag/ignore's after the include of math.h (and
> > libc-internal.h) then things seemed to work.  Any idea why I need to
> > include math.h to get __GNUC_PREREQ defined?
> 
> Public headers include <features.h>.  Internal headers don't necessarily 
> do so.
> 

I am testing this patch on MIPS and it looks good so far (still building
different ABI's).  OK to check it in if everything looks good on MIPS?
I left the DIAG_POP macros in even though they aren't really needed.

Steve Ellcey
sellcey@imgtec.com


2015-08-26  Steve Ellcey  <sellcey@imgtec.com>

	* soft-fp/fmasf4.c: Add include of features.h.
	Move DIAG_PUSH_NEEDS_COMMENT, DIAG_IGNORE_NEEDS_COMMENT to front of
	file, move DIAG_POP_NEEDS_COMMENT to end of file.
	* soft-fp/fmadf4.c: Ditto.
	* soft-fp/fmatf4.c: Ditto.
  

Comments

Joseph Myers Aug. 26, 2015, 10:42 p.m. UTC | #1
On Wed, 26 Aug 2015, Steve Ellcey wrote:

>       compiler does not see that it is set in all cases where it is
>       used, resulting in warnings that it may be used
>       uninitialized.  */

You need to move this comment up as well so it stays with the macro calls 
- and expand it to explain why it's at the top of the file.
  
Roland McGrath Aug. 26, 2015, 10:57 p.m. UTC | #2
Nothing should ever #include <features.h> except the prologue of an
installed header file, and then only for the purpose of testing __USE_*
macros.  If you want access to the various other __ macros (even ones that
are actually defined in features.h), you should #include <sys/cdefs.h>.
  

Patch

diff --git a/soft-fp/fmadf4.c b/soft-fp/fmadf4.c
index da6749d..89dae52 100644
--- a/soft-fp/fmadf4.c
+++ b/soft-fp/fmadf4.c
@@ -26,6 +26,13 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <libc-internal.h>
+#include <features.h>
+DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (4, 7)
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
+#else
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wuninitialized");
+#endif
 #include <math.h>
 #include "soft-fp.h"
 #include "double.h"
@@ -49,18 +56,13 @@  __fma (double a, double b, double c)
      compiler does not see that it is set in all cases where it is
      used, resulting in warnings that it may be used
      uninitialized.  */
-  DIAG_PUSH_NEEDS_COMMENT;
-#if __GNUC_PREREQ (4, 7)
-  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
-#else
-  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wuninitialized");
-#endif
   FP_PACK_D (r, R);
-  DIAG_POP_NEEDS_COMMENT;
   FP_HANDLE_EXCEPTIONS;
 
   return r;
 }
+DIAG_POP_NEEDS_COMMENT;
+
 #ifndef __fma
 weak_alias (__fma, fma)
 #endif
diff --git a/soft-fp/fmasf4.c b/soft-fp/fmasf4.c
index b770a07..fcd913a 100644
--- a/soft-fp/fmasf4.c
+++ b/soft-fp/fmasf4.c
@@ -26,6 +26,13 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <libc-internal.h>
+#include <features.h>
+DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (4, 7)
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
+#else
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wuninitialized");
+#endif
 #include <math.h>
 #include "soft-fp.h"
 #include "single.h"
@@ -49,18 +56,13 @@  __fmaf (float a, float b, float c)
      compiler does not see that it is set in all cases where it is
      used, resulting in warnings that it may be used
      uninitialized.  */
-  DIAG_PUSH_NEEDS_COMMENT;
-#if __GNUC_PREREQ (4, 7)
-  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
-#else
-  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wuninitialized");
-#endif
   FP_PACK_S (r, R);
-  DIAG_POP_NEEDS_COMMENT;
   FP_HANDLE_EXCEPTIONS;
 
   return r;
 }
+DIAG_POP_NEEDS_COMMENT;
+
 #ifndef __fmaf
 weak_alias (__fmaf, fmaf)
 #endif
diff --git a/soft-fp/fmatf4.c b/soft-fp/fmatf4.c
index 880961c..16df6d1 100644
--- a/soft-fp/fmatf4.c
+++ b/soft-fp/fmatf4.c
@@ -26,6 +26,13 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <libc-internal.h>
+#include <features.h>
+DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (4, 7)
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
+#else
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wuninitialized");
+#endif
 #include <math.h>
 #include "soft-fp.h"
 #include "quad.h"
@@ -49,16 +56,11 @@  __fmal (long double a, long double b, long double c)
      compiler does not see that it is set in all cases where it is
      used, resulting in warnings that it may be used
      uninitialized.  */
-  DIAG_PUSH_NEEDS_COMMENT;
-#if __GNUC_PREREQ (4, 7)
-  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
-#else
-  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wuninitialized");
-#endif
   FP_PACK_Q (r, R);
-  DIAG_POP_NEEDS_COMMENT;
   FP_HANDLE_EXCEPTIONS;
 
   return r;
 }
+DIAG_POP_NEEDS_COMMENT;
+
 weak_alias (__fmal, fmal)