>From 3c9066c01ccd7270408423b1773699af05dd361e Mon Sep 17 00:00:00 2001 From: Robert Dubner mailto:rdub...@symas.com Date: Tue, 20 May 2025 11:49:43 -0400 Subject: [PATCH] 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. --- 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(-) create mode 100644 gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob create mode 100644 gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out 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 1bbdc6777f2a..1af4a53fce49 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); } -- 2.34.1