Fix def_test_returning_type in iamcu/test_basic_returning.c
authorH.J. Lu <hongjiu.lu@intel.com>
Fri, 16 Oct 2015 20:03:17 +0000 (20:03 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Fri, 16 Oct 2015 20:03:17 +0000 (13:03 -0700)
Use union to check float return bits to avoid converting from integer
to float when comparing float return value.

* gcc.target/i386/iamcu/test_basic_returning.c
(def_test_returning_type): Use union to check float return bits.

From-SVN: r228924

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/iamcu/test_basic_returning.c

index f56798cb9259ea96623844c936e1d54150ca81eb..90a2c66865b0b903a7b49001281b93a7dc4fd02e 100644 (file)
@@ -1,3 +1,8 @@
+2015-10-16  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * gcc.target/i386/iamcu/test_basic_returning.c
+       (def_test_returning_type): Use union to check float return bits.
+
 2015-10-16  H.J. Lu  <hongjiu.lu@intel.com>
 
        * gcc.target/i386/iamcu/test_basic_64bit_returning.c (main):
index 23efa6e5c01c89696075d1a3c87c10b78190a2f3..e617d8dfc8289e2ed001ab0672a5c91f668850a0 100644 (file)
@@ -39,7 +39,10 @@ fun_test_returning_float (void)
 
 #define def_test_returning_type(fun, type, ret, reg) \
   { type var = WRAP_RET (fun) (); \
-  assert (ret == (type) reg && ret == var); }
+    union { type r; unsigned long reg; } u; \
+    u.reg = reg; \
+  assert (ret == u.r && ret == var); }
+
 int
 main (void)
 {