This jit testcase was failing on s390x and ppc64 due to
carelessly assuming int==bool.

Patch fixes the testcase on s390x and ppc64.  Also tested on
x86_64 and aarch64.

Committed to trunk as r219856.

gcc/testsuite/ChangeLog:
        * jit.dg/test-arith-overflow.c: Include stdbool.h.
        (create_overflow_fn): Update comment to clarify that
        the third param of the created function is a bool *, not
        an int *.
        (verify_int_overflow_fn): Convert param "expected_ovf" from
        int to bool.  Update third param of "overflow_fn_type" from int *
        to bool *.  Update local "actual_ovf" from int to bool.
        (verify_uint_overflow_fn): Likewise.
---
 gcc/testsuite/jit.dg/test-arith-overflow.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/gcc/testsuite/jit.dg/test-arith-overflow.c 
b/gcc/testsuite/jit.dg/test-arith-overflow.c
index 8d130b2..ac2fa36 100644
--- a/gcc/testsuite/jit.dg/test-arith-overflow.c
+++ b/gcc/testsuite/jit.dg/test-arith-overflow.c
@@ -2,6 +2,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <limits.h>
+#include <stdbool.h>
 
 #include "libgccjit.h"
 
@@ -16,7 +17,7 @@ create_overflow_fn (gcc_jit_context *ctxt,
   /* Create the equivalent of this C:
 
        int
-       test_overflow_T_OP (T x, T y, int *ovf)
+       test_overflow_T_OP (T x, T y, bool *ovf)
        {
         T result;
         result = x OP y;
@@ -129,16 +130,16 @@ verify_int_overflow_fn (gcc_jit_result *jit_result,
                        const char *funcname,
                        int x, int y,
                        int expected_result,
-                       int expected_ovf)
+                       bool expected_ovf)
 {
   CHECK_NON_NULL (jit_result);
-  typedef int (*overflow_fn_type) (int, int, int *);
+  typedef int (*overflow_fn_type) (int, int, bool *);
   overflow_fn_type fn =
     (overflow_fn_type)gcc_jit_result_get_code (jit_result, funcname);
   CHECK_NON_NULL (fn);
 
   /* Call the function:  */
-  int actual_ovf = 0;
+  bool actual_ovf = 0;
   int actual_result = fn (x, y, &actual_ovf);
   note ("%s (%d, %d) returned: %d with ovf: %d",
        funcname, x, y, actual_result, actual_ovf);
@@ -151,16 +152,17 @@ verify_uint_overflow_fn (gcc_jit_result *jit_result,
                         const char *funcname,
                         unsigned int x, unsigned int y,
                         unsigned int expected_result,
-                        int expected_ovf)
+                        bool expected_ovf)
 {
   CHECK_NON_NULL (jit_result);
-  typedef unsigned int (*overflow_fn_type) (unsigned int, unsigned int, int *);
+  typedef unsigned int (*overflow_fn_type) (unsigned int, unsigned int,
+                                           bool *);
   overflow_fn_type fn =
     (overflow_fn_type)gcc_jit_result_get_code (jit_result, funcname);
   CHECK_NON_NULL (fn);
 
   /* Call the function:  */
-  int actual_ovf = 0;
+  bool actual_ovf = 0;
   unsigned int actual_result = fn (x, y, &actual_ovf);
   note ("%s (%d, %d) returned: %d with ovf: %d",
        funcname, x, y, actual_result, actual_ovf);
-- 
1.8.5.3

Reply via email to