]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
cobol: sqrt(0) is not an ec-argument error. [PR119885]
authorRobert Dubner <rdubner@symas.com>
Tue, 20 May 2025 15:49:43 +0000 (11:49 -0400)
committerRobert Dubner <rdubner@symas.com>
Tue, 29 Jul 2025 16:06:38 +0000 (12:06 -0400)
libgcobol

PR cobol/119885
* intrinsic.cc: (__gg__sqrt): Change test from <= zero to < zero.

gcc/testsuite

* cobol.dg/group2/FUNCTION_SQRT__2_.cob: Testcase.
* cobol.dg/group2/FUNCTION_SQRT__2_.out: Known-good for the testcase.

(cherry picked from commit d44beb132850a8ced1b0614e2724f18465b4a737)

gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out [new file with mode: 0644]
libgcobol/intrinsic.cc

diff --git a/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob b/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob
new file mode 100644 (file)
index 0000000..c1f4ba8
--- /dev/null
@@ -0,0 +1,13 @@
+       *> { dg-do run }
+       *> { dg-output-file "group2/FUNCTION_SQRT__2_.out" }
+        program-id. sqbug.
+        procedure division.
+        if function sqrt (0) = 0    *>    if4034.2
+            display 'ok' else display 'bad'.
+        display "sqrt(0) " """" function trim (function exception-status) """"
+        set last exception to off
+        if function sqrt (-0.1) = 0    *>    if4034.2
+            display 'ok' else display 'bad'.
+        display "sqrt(-0.1) " """" function trim (function exception-status) """"
+        goback.
+
diff --git a/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out b/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out
new file mode 100644 (file)
index 0000000..0783ac5
--- /dev/null
@@ -0,0 +1,5 @@
+ok
+sqrt(0) ""
+bad
+sqrt(-0.1) "EC-ARGUMENT-FUNCTION"
+
index 37ae13e262fe37b4785b5f8cda76119cdd8cd757..d6dfcb981a5ecc6d08f3801c0d0a81617a07a4b9 100644 (file)
@@ -3565,7 +3565,7 @@ __gg__sqrt( cblc_field_t *dest,
                                                         source_offset,
                                                         source_size);
 
-  if( value <= GCOB_FP128_LITERAL(0.0) )
+  if( value < GCOB_FP128_LITERAL(0.0) )
     {
     exception_raise(ec_argument_function_e);
     }