https://gcc.gnu.org/g:d44beb132850a8ced1b0614e2724f18465b4a737

commit r16-761-gd44beb132850a8ced1b0614e2724f18465b4a737
Author: Robert Dubner <rdub...@symas.com>
Date:   Tue May 20 11:49:43 2025 -0400

    cobol: sqrt(0) is not an ec-argument error. [PR119885]
    
    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.

Diff:
---
 gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob | 13 +++++++++++++
 gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out |  5 +++++
 libgcobol/intrinsic.cc                              |  2 +-
 3 files changed, 19 insertions(+), 1 deletion(-)

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
index 000000000000..c1f4ba8684a6
--- /dev/null
+++ b/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob
@@ -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
index 000000000000..0783ac5abb17
--- /dev/null
+++ b/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out
@@ -0,0 +1,5 @@
+ok
+sqrt(0) ""
+bad
+sqrt(-0.1) "EC-ARGUMENT-FUNCTION"
+
diff --git a/libgcobol/intrinsic.cc b/libgcobol/intrinsic.cc
index 37ae13e262fe..d6dfcb981a5e 100644
--- a/libgcobol/intrinsic.cc
+++ b/libgcobol/intrinsic.cc
@@ -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);
     }

Reply via email to