]> git.ipfire.org Git - thirdparty/gcc.git/commit
cobol: Repair CALL ... USING BY VALUE.
authorRobert Dubner <rdubner@symas.com>
Thu, 12 Feb 2026 16:11:51 +0000 (11:11 -0500)
committerRobert Dubner <rdubner@symas.com>
Thu, 12 Feb 2026 16:43:08 +0000 (11:43 -0500)
commite0bbad05caa63910c012adc64f73d375e1d2a3ca
tree12a6633f5eed1a06a7d0d48dd0f8230c5f5cfcdd
parent66ce317036f2eb5aeb96d5e4b9e468799d7566b6
cobol: Repair CALL ... USING BY VALUE.

These changes cause CALL ... USING BY VALUE to work properly for a
wider range of COBOL variables types, values, and sizes.  Some sizes
of numeric-display variables didn't work, some didn't work for negative
values, and floating-extended didn't work at all.  Now they do.

Fourteen new DejaGnu tests cover this repaired capability.

gcc/cobol/ChangeLog:

* genapi.cc (establish_using): Use a 128-bit type for
float-extended; handle numeric-edited values of different sizes
and signs correctly.
(create_and_call):  Use a 128-bit type for float-extended.

libgcobol/ChangeLog:

* Makefile.am: Temporarily continue to use -fno-strict-aliasing.
* Makefile.in: Likewise.
* libgcobol.cc (__gg__fetch_call_by_value_value): Simplify handling
of FldFloat.
(__gg__assign_value_from_stack): Likewise.
(__gg__unstring): Avoid uninitialized variable error.
(__gg__look_at_int128): New function useful for debugging.
(__gg__look_at_pointer): Likewise.
* xmlparse.cc (xml_event): Implement namespace XML.
(cdataBlock): Likewise.
(characters): Likewise.
(__gg__xml_parse):  Likewise.

gcc/testsuite/ChangeLog:

* cobol.dg/group2/USING_COMP-3_BY_REFERENCE.cob: New test.
* cobol.dg/group2/USING_COMP-3_BY_REFERENCE.out: New test.
* cobol.dg/group2/USING_COMP-3_BY_VALUE.cob: New test.
* cobol.dg/group2/USING_COMP-3_BY_VALUE.out: New test.
* cobol.dg/group2/USING_FLOAT-SLX_BY_REFERENCE.cob: New test.
* cobol.dg/group2/USING_FLOAT-SLX_BY_REFERENCE.out: New test.
* cobol.dg/group2/USING_FLOAT-SLX_BY_VALUE.cob: New test.
* cobol.dg/group2/USING_FLOAT-SLX_BY_VALUE.out: New test.
* cobol.dg/group2/USING_NumericDisplay_BY_REFERENCE.cob: New test.
* cobol.dg/group2/USING_NumericDisplay_BY_REFERENCE.out: New test.
* cobol.dg/group2/USING_NumericDisplay_BY_VALUE.cob: New test.
* cobol.dg/group2/USING_NumericDisplay_BY_VALUE.out: New test.
* cobol.dg/group2/USING_Signed_-_COMP-3_BY_REFERENCE.cob: New test.
* cobol.dg/group2/USING_Signed_-_COMP-3_BY_REFERENCE.out: New test.
* cobol.dg/group2/USING_Signed_-_COMP-3_BY_VALUE.cob: New test.
* cobol.dg/group2/USING_Signed_-_COMP-3_BY_VALUE.out: New test.
* cobol.dg/group2/USING_Signed_-_NumericDisplay_BY_REFERENCE.cob: New test.
* cobol.dg/group2/USING_Signed_-_NumericDisplay_BY_REFERENCE.out: New test.
* cobol.dg/group2/USING_Signed_-_NumericDisplay_BY_VALUE.cob: New test.
* cobol.dg/group2/USING_Signed_-_NumericDisplay_BY_VALUE.out: New test.
* cobol.dg/group2/USING_Signed___COMP-3_BY_REFERENCE.cob: New test.
* cobol.dg/group2/USING_Signed___COMP-3_BY_REFERENCE.out: New test.
* cobol.dg/group2/USING_Signed___COMP-3_BY_VALUE.cob: New test.
* cobol.dg/group2/USING_Signed___COMP-3_BY_VALUE.out: New test.
* cobol.dg/group2/USING_Signed___NumericDisplay_BY_REFERENCE.cob: New test.
* cobol.dg/group2/USING_Signed___NumericDisplay_BY_REFERENCE.out: New test.
* cobol.dg/group2/USING_Signed___NumericDisplay_BY_VALUE.cob: New test.
* cobol.dg/group2/USING_Signed___NumericDisplay_BY_VALUE.out: New test.
33 files changed:
gcc/cobol/genapi.cc
gcc/testsuite/cobol.dg/group2/USING_COMP-3_BY_REFERENCE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_COMP-3_BY_REFERENCE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_COMP-3_BY_VALUE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_COMP-3_BY_VALUE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_FLOAT-SLX_BY_REFERENCE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_FLOAT-SLX_BY_REFERENCE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_FLOAT-SLX_BY_VALUE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_FLOAT-SLX_BY_VALUE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_NumericDisplay_BY_REFERENCE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_NumericDisplay_BY_REFERENCE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_NumericDisplay_BY_VALUE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_NumericDisplay_BY_VALUE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed_-_COMP-3_BY_REFERENCE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed_-_COMP-3_BY_REFERENCE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed_-_COMP-3_BY_VALUE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed_-_COMP-3_BY_VALUE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed_-_NumericDisplay_BY_REFERENCE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed_-_NumericDisplay_BY_REFERENCE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed_-_NumericDisplay_BY_VALUE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed_-_NumericDisplay_BY_VALUE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed___COMP-3_BY_REFERENCE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed___COMP-3_BY_REFERENCE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed___COMP-3_BY_VALUE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed___COMP-3_BY_VALUE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed___NumericDisplay_BY_REFERENCE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed___NumericDisplay_BY_REFERENCE.out [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed___NumericDisplay_BY_VALUE.cob [new file with mode: 0644]
gcc/testsuite/cobol.dg/group2/USING_Signed___NumericDisplay_BY_VALUE.out [new file with mode: 0644]
libgcobol/Makefile.am
libgcobol/Makefile.in
libgcobol/libgcobol.cc
libgcobol/xmlparse.cc