From 19448e1460e93da6b91d2e58f39ed61ab66f10f9 Mon Sep 17 00:00:00 2001
From: "James K. Lowden" <jklowden@symas.com>
Date: Wed, 3 Jan 2024 10:29:55 -0500
Subject: [PATCH] remove record-size adjustment for REDEFINED tables

---
 gcc/cobol/symbols.cc | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/gcc/cobol/symbols.cc b/gcc/cobol/symbols.cc
index dbb56bc54a59..12adfda716bf 100644
--- a/gcc/cobol/symbols.cc
+++ b/gcc/cobol/symbols.cc
@@ -1312,14 +1312,9 @@ static struct symbol_elem_t *
     if( redefined ) {
       assert( group == redefined );
       max_memsize = std::max(max_memsize, field_memsize(field));
-      field->data.capacity = redefined->data.capacity;
-      if( is_table(field) ) { // reduce capacity by occurs, if any
-        if( field->data.digits == field->data.capacity ) {
-          field->data.digits /= field->occurs.ntimes();
-        }
-        field->data.capacity /= field->occurs.ntimes();    
+      if( redefined->data.memsize == redefined->data.capacity ) {
+        redefined->data.memsize = 0;
       }
-      field->data.memsize = 0;
       continue;
     }
     group->data.capacity += field_size(field);
@@ -1335,7 +1330,9 @@ static struct symbol_elem_t *
   if( group->data.memsize == group->data.capacity ) group->data.memsize = 0;
 
   if( 0 < group->data.memsize && group->data.memsize < group->data.capacity ) {
-    warnx( "%s:%d: small capacity?\n\t%s", __func__, __LINE__, field_str(group) );
+    if( yydebug ) {
+      warnx( "%s:%d: small capacity?\n\t%s", __func__, __LINE__, field_str(group) );
+    }
     group->data.memsize = group->data.capacity;
   }
 
-- 
GitLab