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); }