summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c')
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c b/gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c
new file mode 100644
index 000000000..ec292aca3
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c
@@ -0,0 +1,24 @@
+#include <float.h>
+
+long double dfrom = 1.1L;
+long double m1;
+long double m2;
+unsigned long mant_long;
+
+int main()
+{
+ /* Some targets don't support a conforming long double type. This is
+ common with very small parts which set long double == float. Look
+ to see if the type has at least 32 bits of precision. */
+ if (LDBL_EPSILON > 0x1p-31L)
+ return 0;
+
+ m1 = dfrom / 2.0L;
+ m2 = m1 * 4294967296.0L;
+ mant_long = ((unsigned long) m2) & 0xffffffff;
+
+ if (mant_long == 0x8ccccccc)
+ return 0;
+ else
+ abort();
+}