From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [IPv6:2a00:1450:4864:20::635]) by sourceware.org (Postfix) with ESMTPS id 2662838133F8 for ; Thu, 2 Jun 2022 09:09:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2662838133F8 Received: by mail-ej1-x635.google.com with SMTP id rs12so8660148ejb.13 for ; Thu, 02 Jun 2022 02:09:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition; bh=eHE/PqtAj5J7HtUGjxJgVjYgZPzfdaMIknhQsO5O1TA=; b=FYI6ijpgodXQ85lEb1hqc08C/Wcmic6TfD61lhC5XhhILIgbck6Dtzm8zlWQRhOX+S bZm322Nw7EE7xuy0wd2a6bmtaupAAdCYsZ76hFRHTKcAz6oB+yu7DGq9KiH99oTMYh8Q a7CV8KUwIoI7fGQT4W/enhnEFqXFuQel5Uxc1sttIsxgwz+GEZWZWFY1mheg7uWmg1EN simZhL34BiCWYEf1jhndQZ20yaUWEn09zi5B+0WEcdB37OQnzvPMRcebaMd3kM5aH5wk 1BJRH5AGxGoU5/r+XFHqo3PFU8UKirt8Tte+XbwBE/0FJ3HvnvHUAh+OYylk7VbLLhUi iS/A== X-Gm-Message-State: AOAM530RVaEBL5l/U16SVWKOH2h+TwqqLYFelJxnL2pPFEb7nQYcCMef jUhCe5fW0rpOvP04lV7LNsUgCdEdW2wTyA== X-Google-Smtp-Source: ABdhPJzO/1M1yVaRF5ofBRJA8clmSL+QnpKGVCmsvy91ckQAHDuo249mCFTqpeN79C70Z+nySbV2xg== X-Received: by 2002:a17:907:8a0a:b0:6fe:cede:95d8 with SMTP id sc10-20020a1709078a0a00b006fecede95d8mr3274662ejc.59.1654160952412; Thu, 02 Jun 2022 02:09:12 -0700 (PDT) Received: from adacore.com ([45.147.211.82]) by smtp.gmail.com with ESMTPSA id j22-20020a1709066dd600b006fea2705d18sm1470052ejt.210.2022.06.02.02.09.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Jun 2022 02:09:11 -0700 (PDT) Date: Thu, 2 Jun 2022 09:09:11 +0000 From: Pierre-Marie de Rodat To: gcc-patches@gcc.gnu.org Cc: Piotr Trojanek Subject: [Ada] Remove redundant checks for missing lists Message-ID: <20220602090911.GA1010950@adacore.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="jI8keyz6grp/JLjh" Content-Disposition: inline X-Spam-Status: No, score=-7.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Jun 2022 09:09:14 -0000 --jI8keyz6grp/JLjh Content-Type: text/plain; charset=us-ascii Content-Disposition: inline When iterating over list elements with First/Next there is no need to check if the list is present, because First intentionally returns Empty if list is not present and the condition of subsequent loop will not be satisfied. Code cleanup; semantics is unaffected. Occurrences of the redundant pattern were found with: $ grep First -B 3 | less and examining the output for the calls to Present. Tested on x86_64-pc-linux-gnu, committed on trunk gcc/ada/ * exp_ch13.adb, exp_ch5.adb, exp_ch9.adb, exp_strm.adb, sem_ch10.adb, sem_ch13.adb, sem_ch5.adb, sem_ch6.adb, sem_ch8.adb, sem_elab.adb, sem_eval.adb, sem_prag.adb, sem_util.adb: Remove checks for the missing list before iterating with First/Next; reindent code and refill comments. --jI8keyz6grp/JLjh Content-Type: application/gzip Content-Disposition: attachment; filename="patch.diff.gz" Content-Transfer-Encoding: base64 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 --jI8keyz6grp/JLjh--