summaryrefslogtreecommitdiff
path: root/support/regression/tests/bug-2516.c
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
committerXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
commit268a53de823a6750d6256ee1fb1e7707b4b45740 (patch)
tree42c1799a9a82b2f7d9790ee9fe181d72a7274751 /support/regression/tests/bug-2516.c
downloadsdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'support/regression/tests/bug-2516.c')
-rw-r--r--support/regression/tests/bug-2516.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/support/regression/tests/bug-2516.c b/support/regression/tests/bug-2516.c
new file mode 100644
index 0000000..db6315b
--- /dev/null
+++ b/support/regression/tests/bug-2516.c
@@ -0,0 +1,65 @@
+/** bug-2516.c
+*/
+#include <testfwk.h>
+#include <stdlib.h>
+#include <math.h>
+
+#pragma disable_warning 122
+
+#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Not enough memory
+float gfa = 1.0 / 0.0;
+float gfb = (-1.0) / 0.0;
+float gfc = 0.0 / 0.0;
+float gfd = 1.0;
+
+static float sfa = 1.0 / 0.0;
+static float sfb = (-1.0) / 0.0;
+static float sfc = 0.0 / 0.0;
+static float sfd = 1.0;
+
+static float divTest(float a, float b)
+{
+ return a / b;
+}
+#endif
+
+void
+testBug (void)
+{
+#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Not enough memory
+ float lfa = 1.0 / 0.0;
+ float lfb = (-1.0) / 0.0;
+ float lfc = 0.0 / 0.0;
+ float lfd = 1.0;
+
+ ASSERT (isinf (gfa));
+ ASSERT (isinf (sfa));
+ ASSERT (isinf (lfa));
+
+ ASSERT (isinf (gfb));
+ ASSERT (isinf (sfb));
+ ASSERT (isinf (lfb));
+
+ ASSERT (isnan (gfc));
+ ASSERT (isnan (sfc));
+ ASSERT (isnan (lfc));
+
+ ASSERT (!isnan (gfd));
+ ASSERT (!isnan (sfd));
+ ASSERT (!isnan (lfd));
+
+ ASSERT (!isinf (gfd));
+ ASSERT (!isinf (sfd));
+ ASSERT (!isinf (lfd));
+
+ ASSERT (isinf (divTest (1.0, 0.0)));
+ ASSERT (isinf (divTest (-1.0, 0.0)));
+ ASSERT (isnan (divTest (0.0, 0.0)));
+
+ ASSERT (!isinf (divTest (1.0, 0.5)));
+ ASSERT (!isnan (divTest (1.0, 0.5)));
+
+ ASSERT (!isnan (divTest (1e38, 1e-38)));
+ ASSERT (isinf (divTest (1e38, 1e-38)));
+#endif
+}