about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--soft-fp/fmadf4.c12
-rw-r--r--soft-fp/fmasf4.c12
-rw-r--r--soft-fp/fmatf4.c12
4 files changed, 43 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 159eb4ab6f..94945920de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2015-05-22  Joseph Myers  <joseph@codesourcery.com>
 
+	* soft-fp/fmadf4.c: Include <libc-internal.h>.
+	(__fma): Ignore uninitialized warnings around packing.
+	* soft-fp/fmasf4.c: Include <libc-internal.h>.
+	(__fmaf): Ignore uninitialized warnings around packing.
+	* soft-fp/fmatf4.c: Include <libc-internal.h>.
+	(__fmal): Ignore uninitialized warnings around packing.
+
 	* sysdeps/ieee754/ldbl-128/k_tanl.c: Include <libc-internal.h>.
 	(__kernel_tanl): Ignore uninitialized warnings around use of SIGN.
 	* sysdeps/ieee754/ldbl-128ibm/k_tanl.c: Include <libc-internal.h>.
diff --git a/soft-fp/fmadf4.c b/soft-fp/fmadf4.c
index 1a720ba020..da6749d0ec 100644
--- a/soft-fp/fmadf4.c
+++ b/soft-fp/fmadf4.c
@@ -25,6 +25,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <libc-internal.h>
 #include <math.h>
 #include "soft-fp.h"
 #include "double.h"
@@ -44,7 +45,18 @@ __fma (double a, double b, double c)
   FP_UNPACK_D (B, b);
   FP_UNPACK_D (C, c);
   FP_FMA_D (R, A, B, C);
+  /* R_e is not set in cases where it is not used in packing, but the
+     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;
diff --git a/soft-fp/fmasf4.c b/soft-fp/fmasf4.c
index 03855a36ff..b770a0719f 100644
--- a/soft-fp/fmasf4.c
+++ b/soft-fp/fmasf4.c
@@ -25,6 +25,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <libc-internal.h>
 #include <math.h>
 #include "soft-fp.h"
 #include "single.h"
@@ -44,7 +45,18 @@ __fmaf (float a, float b, float c)
   FP_UNPACK_S (B, b);
   FP_UNPACK_S (C, c);
   FP_FMA_S (R, A, B, C);
+  /* R_e is not set in cases where it is not used in packing, but the
+     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;
diff --git a/soft-fp/fmatf4.c b/soft-fp/fmatf4.c
index 16fd74c046..880961cfd1 100644
--- a/soft-fp/fmatf4.c
+++ b/soft-fp/fmatf4.c
@@ -25,6 +25,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <libc-internal.h>
 #include <math.h>
 #include "soft-fp.h"
 #include "quad.h"
@@ -44,7 +45,18 @@ __fmal (long double a, long double b, long double c)
   FP_UNPACK_Q (B, b);
   FP_UNPACK_Q (C, c);
   FP_FMA_Q (R, A, B, C);
+  /* R_e is not set in cases where it is not used in packing, but the
+     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;