From patchwork Wed Sep 2 19:59:41 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Dubner X-Patchwork-Id: 142755 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 412724BA901C for ; Wed, 2 Sep 2026 20:00:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 412724BA901C X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from zmcc-4-mx.zmailcloud.com (zmcc-4-mx.zmailcloud.com [34.203.170.87]) by sourceware.org (Postfix) with ESMTPS id 40B264BA23E3 for ; Wed, 2 Sep 2026 19:59:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 40B264BA23E3 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=symas.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=symas.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 40B264BA23E3 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=34.203.170.87 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788379182; cv=none; b=lsUmPdlz5WXe05kzyKjrL6Vyffrc3tKlsRfyW4SBNPmKDLc8SSK2Y8uptuue+XzdF1BAiJwhOO7XcBpPPe2m1RJB3uwX5eyv5k2Vl5nYkLDPn38Mqp4k8lCMOKTcW8XqH5SidM5fuu0igxKo+THbk9LKXssYmdDESG4VcYfHGMs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788379182; c=relaxed/simple; bh=aXFJacOxezxuHt1tY+JZzKEDksRVuBnxeFz/HDp0Xuc=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=fuoTtGzxZ0CfI6SpsDG70SvEuHqZRO/EwrzUEg5qdRdD1uH8XIt8hilHMn4v2hHKIRv3EaHUrdGpHvzziD0u+2pAPe5LL2R9iyOZVauQUeHKZsToD7PtZe3SY6+CK0FX+ccr64VuJQHHXjPQUuMbPzz/VsyPwIyjybdURoGntwk= ARC-Authentication-Results: i=1; sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 40B264BA23E3 Received: from zmcc-3.zmailcloud.com (ec2-3-15-255-223.us-east-2.compute.amazonaws.com [3.15.255.223]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by zmcc-4-mx.zmailcloud.com (Postfix) with ESMTPS id C87DF781F8FF for ; Wed, 2 Sep 2026 14:59:41 -0500 (CDT) Received: from zmcc-3.zmailcloud.com (localhost [127.0.0.1]) by zmcc-3-mta-1.zmailcloud.com (Postfix) with ESMTPS id AD3D8105F804 for ; Wed, 2 Sep 2026 14:59:41 -0500 (CDT) Received: from localhost (localhost [127.0.0.1]) by zmcc-3-mta-1.zmailcloud.com (Postfix) with ESMTP id 95BFE105F805 for ; Wed, 2 Sep 2026 14:59:41 -0500 (CDT) Received: from zmcc-3.zmailcloud.com ([127.0.0.1]) by localhost (zmcc-3-mta-1.zmailcloud.com [127.0.0.1]) (amavis, port 10026) with ESMTP id eRH4-fD1_whD for ; Wed, 2 Sep 2026 14:59:41 -0500 (CDT) Received: from zmcc-3-mailbox-1.zmailcloud.com (zmcc-3-mailbox-1.zmailcloud.com [172.31.18.168]) by zmcc-3-mta-1.zmailcloud.com (Postfix) with ESMTP id 81F2F105F804 for ; Wed, 2 Sep 2026 14:59:41 -0500 (CDT) From: Robert Dubner To: "gcc-patches" Subject: [committed] cobol: Repair EXIT PERFORM CYCLE. Thread-Topic: [committed] cobol: Repair EXIT PERFORM CYCLE. Date: Wed, 2 Sep 2026 14:59:41 -0500 (CDT) Message-ID: <064a01dd3b15$9890c780$c9b25680$@symas.com> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 X-Mailer: Zimbra 10.1.20_GA_4893 (Zimbra-ZCO/1951 (10.0.26200 en-US) Pe218 T102b4 R5281) Thread-Index: Ad07FY431q0nIpDCQzmB8VMarsIQMg== Content-Language: en-us X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, POISEN_SPAM_PILL, POISEN_SPAM_PILL_2, POISEN_SPAM_PILL_4, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_PASS, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org From: Robert Dubner mailto:rdubner@symas.com Date: Wed, 2 Sep 2026 15:50:59 -0400 Subject: [PATCH] cobol: Repair EXIT PERFORM CYCLE. Fixes a place where the EXIT PERFORM CYCLE statement was creating a GOTO_EXPR where there was no matching LABEL_EXPR. gcc/cobol/ChangeLog: * genapi.cc (perform_inline_until): Create testA.label. (perform_inline_testafter_varying): Update comment. * gengen.cc (gg_append_statement): Update comments. --- gcc/cobol/genapi.cc | 3 ++- gcc/cobol/gengen.cc | 16 +++------------- 2 files changed, 5 insertions(+), 14 deletions(-) #endif diff --git a/gcc/cobol/genapi.cc b/gcc/cobol/genapi.cc index 5bda0cb75cf..25239d0f641 100644 --- a/gcc/cobol/genapi.cc +++ b/gcc/cobol/genapi.cc @@ -8336,6 +8336,7 @@ perform_inline_until( struct cbl_perform_tgt_t *tgt, GOTO TOP EXIT: */ + gg_append_statement(tgt->addresses.testA.label); gg_append_statement(tgt->addresses.test.label); // Go to where the conditional is recalculated.... @@ -8688,7 +8689,7 @@ perform_inline_testafter_varying( struct cbl_perform_tgt_t *tgt, // the list of statements: gg_append_statement(tgt->addresses.top.go_to); - // The list of statements ends with a goto TESTA, and that;s here: + // The list of statements ends with a goto TESTA, and that's here: gg_append_statement(tgt->addresses.testA.label); // Build the test section diff --git a/gcc/cobol/gengen.cc b/gcc/cobol/gengen.cc index 3f553eebb8a..479e0e5ba35 100644 --- a/gcc/cobol/gengen.cc +++ b/gcc/cobol/gengen.cc @@ -283,8 +283,8 @@ gg_append_var_decl(tree var_decl) #define LOOK_FOR_MISSING_LABELS_not #ifdef LOOK_FOR_MISSING_LABELS -static std::set missing_labels; -static std::map missing_gotos; +static std::unordered_set missing_labels; +static std::unordered_map missing_gotos; void dump_missing_labels() { @@ -361,23 +361,13 @@ gg_append_statement(tree stmt) } else { - /* computed goto or other expression-valued destination */ + /* computed goto or other expression-valued destination */ } - //fprintf(stderr, - // "Laying down a GOTO_EXPR %s %p at line %d\n", - // name_text, - // reinterpret_cast(label_decl), - // cobol_location().first_line); missing_gotos[label_decl] = cobol_location().first_line; } if( TREE_CODE(stmt) == LABEL_EXPR ) { tree label_decl = LABEL_EXPR_LABEL(stmt); /* This is a LABEL_DECL. */ - //fprintf(stderr, - // "Laying down a LABEL_EXPR %s %p at line %d\n", - // name_text, - // reinterpret_cast(label_decl), - // cobol_location().first_line); missing_labels.insert(label_decl); }