diff options
| author | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
|---|---|---|
| committer | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
| commit | 268a53de823a6750d6256ee1fb1e7707b4b45740 (patch) | |
| tree | 42c1799a9a82b2f7d9790ee9fe181d72a7274751 /support/regression/tests/bug-2516.c | |
| download | sdcc-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.c | 65 |
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 +} |
