https://gcc.gnu.org/g:d109ad5e96ee9d31cbab0bba385fb490275a9937
commit r15-8020-gd109ad5e96ee9d31cbab0bba385fb490275a9937 Author: Richard Biener <rguent...@suse.de> Date: Wed Mar 12 13:46:14 2025 +0100 cobol/119229 - fix external variable declaration The following makes vs_external_reference behave like documented, declare a variable defined elsewhere which means not setting TREE_STATIC but DECL_EXTERNAL. Built on x86_64-unknown-linux-gnu, tested with the cobol.dg testsuite (which doesn't mean much). The removed comment mentions 'stderr', possibly the NIST testsuite has coverage. OK for trunk? Thanks, Richard. PR cobol/119229 * gengen.cc (gg_declare_variable): Use DECL_EXTERNAL and drop TREE_STATIC for vs_external_reference. * cobol.dg/pr119229.cob: New testcase. Diff: --- gcc/cobol/gengen.cc | 6 +----- gcc/testsuite/cobol.dg/pr119229.cob | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/gcc/cobol/gengen.cc b/gcc/cobol/gengen.cc index c39af0b45d83..4fc0a830c1ed 100644 --- a/gcc/cobol/gengen.cc +++ b/gcc/cobol/gengen.cc @@ -1012,13 +1012,9 @@ gg_declare_variable(tree type_decl, break; case vs_external_reference: // This is for referencing variables defined elsewhere - // TODO: Figure out why this is working. For accessing "stderr", it - // doesn't matter if TREE_PUBLIC is on, but TREE_STATIC has to be on. This - // does *not* match what is seen when compiling a C program that accesses - // "stderr". DECL_CONTEXT (var_decl) = gg_trans_unit.trans_unit_decl; TREE_USED(var_decl) = 1; - TREE_STATIC(var_decl) = 1; + DECL_EXTERNAL (var_decl) = 1; TREE_PUBLIC(var_decl) = 1; break; } diff --git a/gcc/testsuite/cobol.dg/pr119229.cob b/gcc/testsuite/cobol.dg/pr119229.cob new file mode 100644 index 000000000000..e7b500067eea --- /dev/null +++ b/gcc/testsuite/cobol.dg/pr119229.cob @@ -0,0 +1,16 @@ +*> { dg-do compile } +*> { dg-options "-flto" { target lto } } +IDENTIFICATION DIVISION. +PROGRAM-ID. CobolGreeting. +*>Program to display COBOL greetings +DATA DIVISION. +WORKING-STORAGE SECTION. +01 IterNum PIC 9 VALUE 5. + +PROCEDURE DIVISION. +BeginProgram. + PERFORM DisplayGreeting IterNum TIMES. + STOP RUN. + +DisplayGreeting. + DISPLAY "Greetings from COBOL".