From 7e81e189b0cb0bfbd403c470512534a83320db34 Mon Sep 17 00:00:00 2001
From: Bob Dubner <rdubner@symas.com>
Date: Mon, 27 Jan 2025 19:47:06 -0500
Subject: [PATCH] New INDEXED BY bug in bugsuite. failures/playpen has copybook
 sample

---
 gcc/cobol/UAT/bugsuite.src/bugs.at      |  24 ++++++++++++++++++++++++
 gcc/cobol/failures/Makefile.inc         |   4 ++--
 gcc/cobol/failures/playpen/copybook.cpy |   4 ++++
 gcc/cobol/failures/playpen/one.cpy      |   2 --
 gcc/cobol/failures/playpen/playpen      | Bin 16928 -> 0 bytes
 gcc/cobol/failures/playpen/playpen.cbl  |  19 ++++++++++++-------
 gcc/cobol/failures/playpen/three.cpy    |   1 -
 gcc/cobol/failures/playpen/two.cpy      |   3 ---
 8 files changed, 42 insertions(+), 15 deletions(-)
 create mode 100644 gcc/cobol/failures/playpen/copybook.cpy
 delete mode 100644 gcc/cobol/failures/playpen/one.cpy
 delete mode 100755 gcc/cobol/failures/playpen/playpen
 delete mode 100644 gcc/cobol/failures/playpen/three.cpy
 delete mode 100644 gcc/cobol/failures/playpen/two.cpy

diff --git a/gcc/cobol/UAT/bugsuite.src/bugs.at b/gcc/cobol/UAT/bugsuite.src/bugs.at
index 62329fafb3a2..b3d782cb2183 100644
--- a/gcc/cobol/UAT/bugsuite.src/bugs.at
+++ b/gcc/cobol/UAT/bugsuite.src/bugs.at
@@ -253,3 +253,27 @@ AT_CHECK([./a.out], [0],
 * BDBBBDB              00 00 30 BDWWWDB              
 ], [])
 AT_CLEANUP
+
+
+AT_SETUP([Multiple INDEXED BY variables with the same name])
+#
+# This compilation should succeed
+#
+AT_KEYWORDS([bugs])
+AT_DATA([prog.cob], [       IDENTIFICATION DIVISION.
+       PROGRAM-ID. prog.
+       DATA DIVISION.
+       WORKING-STORAGE SECTION.
+       01  GROUP-1-TABLE.
+           05  TABLE-LEVEL-1.
+               06  TABLE-ITEM PICTURE X OCCURS 15 TIMES INDEXED BY IND.
+               88  EQUALS-M   VALUE "M".
+       01  GROUP-2-TABLE.
+           05  TABLE-LEVEL-1.
+               06  TABLE-ITEM PICTURE X OCCURS 15 TIMES INDEXED BY IND.
+               88  EQUALS-M   VALUE "M".
+       PROCEDURE DIVISION.
+            goback.
+])
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CLEANUP
diff --git a/gcc/cobol/failures/Makefile.inc b/gcc/cobol/failures/Makefile.inc
index b9c767350bd9..4a1044143e1c 100644
--- a/gcc/cobol/failures/Makefile.inc
+++ b/gcc/cobol/failures/Makefile.inc
@@ -38,7 +38,7 @@ endif
 #        $(DEBUG) -O0 -o $(basename $(SOURCE_FILE)).s
 #endif
 	$(GCC_BIN)/$(GCOBOL) -main $(SEARCH_PATHS) $(DEBUG) -O0 -o test $(GCOPTIONS) $(SOURCE_FILE) \
-        $(COBOL_RUNTIME_LIBRARY) -Wa,-a > $(basename $(SOURCE_FILE)).lst
+        $(COBOL_RUNTIME_LIBRARY) -Wa,-a | sed -e '/^\f.*$$/d' -e '/^$$/d' > $(basename $(SOURCE_FILE)).lst
 	./test < input.txt
 ifneq ("$(AFTER)","")
 	./$(AFTER)
@@ -67,7 +67,7 @@ tests:
 	$(GCC_BIN)/$(GCOBOL) -main $(SEARCH_PATHS) $(DEBUG) -O0 -S -o test.s $(GCOPTIONS) $(SOURCE_FILE)
 	$(GCC_BIN)/$(GCOBOL) -main $(SEARCH_PATHS) $(DEBUG) -O0    -o test   $(GCOPTIONS) $(SOURCE_FILE) \
         $(COBOL_RUNTIME_LIBRARY) \
-        -Wa,-a > $(basename $(SOURCE_FILE)).lst
+        -Wa,-a | sed -e '/^\f.*$$/d' -e '/^$$/d' > $(basename $(SOURCE_FILE)).lst
 
 .PHONY: gc
 gc:
diff --git a/gcc/cobol/failures/playpen/copybook.cpy b/gcc/cobol/failures/playpen/copybook.cpy
new file mode 100644
index 000000000000..b8589883d090
--- /dev/null
+++ b/gcc/cobol/failures/playpen/copybook.cpy
@@ -0,0 +1,4 @@
+            display "I am copybook:1"
+            display "I am copybook:2"
+            display "I am copybook:3"
+            display "I am copybook:4"
diff --git a/gcc/cobol/failures/playpen/one.cpy b/gcc/cobol/failures/playpen/one.cpy
deleted file mode 100644
index a5afc3edef97..000000000000
--- a/gcc/cobol/failures/playpen/one.cpy
+++ /dev/null
@@ -1,2 +0,0 @@
-        display "I am copybook one"
-        copy two.
diff --git a/gcc/cobol/failures/playpen/playpen b/gcc/cobol/failures/playpen/playpen
deleted file mode 100755
index 27e256e1859345d39780260b7c6307933f2071f4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 16928
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
XVx0R`t+;0zTK_`5l9**tu(0CaS{D+i

diff --git a/gcc/cobol/failures/playpen/playpen.cbl b/gcc/cobol/failures/playpen/playpen.cbl
index ee548dba2447..04f02a4112a3 100644
--- a/gcc/cobol/failures/playpen/playpen.cbl
+++ b/gcc/cobol/failures/playpen/playpen.cbl
@@ -1,8 +1,13 @@
-        identification      division.
-        program-id.         prog.
-        procedure           division.
-        display "I am the alpha"
-        copy one.
-        display "I am the omega"
-        goback.
+        identification          division.
+        program-id.             prog.
+        procedure               division.
+            display "I am prog:4"
+            display "I am prog:5"
+            display "I am prog:6".
+            copy    copybook.
+            display "I am prog:8"
+            display "I am prog:9"
+            display "I am prog:10"
+            goback.
+        end program             prog.
 
diff --git a/gcc/cobol/failures/playpen/three.cpy b/gcc/cobol/failures/playpen/three.cpy
deleted file mode 100644
index 8263820671d1..000000000000
--- a/gcc/cobol/failures/playpen/three.cpy
+++ /dev/null
@@ -1 +0,0 @@
-        display "I am copybook three"
diff --git a/gcc/cobol/failures/playpen/two.cpy b/gcc/cobol/failures/playpen/two.cpy
deleted file mode 100644
index 5b9db0dd4803..000000000000
--- a/gcc/cobol/failures/playpen/two.cpy
+++ /dev/null
@@ -1,3 +0,0 @@
-        display "I am copybook two"
-        copy three.
-
-- 
GitLab