From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by sourceware.org (Postfix) with ESMTPS id 1AFF13858418 for ; Mon, 7 Aug 2023 11:16:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1AFF13858418 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-3fe4ad22e36so26721965e9.2 for ; Mon, 07 Aug 2023 04:16:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1691406999; x=1692011799; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=uu3iuKLn5xYSJ/3LUxI3I8l6fOGsyntAlETJaGa2ERg=; b=EQFRXpnp2Tv+1Ez2Yr7lAB47q7aEkicGzNAfSlPIqTv4MQj3uKtGJLdJ0vzPck/Bxs XKFK6oMOiTWYpLxaqklqiyWIAy7473zvkUEUjKA2ereAMOgTb3Mfdfz2oNDU7AxGEffh O9r3452vUfBMjmaO8vC1MlyUajT1biUCFyyzVPvMOrTlkef9LLcGTcw6pSstLkMjacRY w2LSM4IvhXt25XhxGsoIDTkQ5r3GtRs712DDCmibumArE76YEPZcvSWhN/vsdJV8IsP8 caznWjpiTD8Hp2yfLomgdwHnk46B4G/sLBIKtR3ZahSW0AfmGdWxdBR/jbhxO4hPXoto rvoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691406999; x=1692011799; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uu3iuKLn5xYSJ/3LUxI3I8l6fOGsyntAlETJaGa2ERg=; b=FNJUjiQ7BRkiPq77/jYPK9p7mx7wJozvdBKFU6lbr3fcFmVN34UE8rUhA6lwYLGIO7 IRFwVtJaN8VCUaysU3h8ZYAXi4LehwLCCXLJMy7DnEBn+9i90eAYJyola0SwbKLd9vzf DN0uodXrlto2pUJmVVI+jUXcXaS3Dl73vZk+uveo50onp9JJZG+ungTtVZFJDpPv8++h eKKBYjcHttS0ZRgZ81nrJcr3d4O6ztP/Yh1KkDLCYnfXeBwslAyzDM8xyVh99ZUVIiHS DI+ck35OVfFP1sXvD17eJnRDcXZvoSzbrEed96L/nB7K+lIhvtQ9bEsjsSnDo2E8RBXx aOpQ== X-Gm-Message-State: AOJu0YzBYa5AWLASvTcxNhpYzFVZyZCQxoyBmoSKhdiEvQhs1mHXBG2c +6ij+YEUI6awtmwY/iianOwF7HisRpOV6th5vXGQyg== X-Google-Smtp-Source: AGHT+IEc6c7J4uyioKKv/VWfIAUD/MdWun1sP7fDMs3zJkBazCLPGuqbqcb3DCgj2nM+9Y+yJHcTMA== X-Received: by 2002:adf:f091:0:b0:314:39d0:26f6 with SMTP id n17-20020adff091000000b0031439d026f6mr6332678wro.18.1691406998802; Mon, 07 Aug 2023 04:16:38 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id l24-20020a7bc458000000b003fe20db88ebsm10410047wmi.31.2023.08.07.04.16.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Aug 2023 04:16:38 -0700 (PDT) From: =?UTF-8?q?Marc=20Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Yannick Moy Subject: [COMMITTED] ada: Crash in GNATprove due to wrong detection of inlining Date: Mon, 7 Aug 2023 13:16:37 +0200 Message-Id: <20230807111637.2854994-1-poulhies@adacore.com> X-Mailer: git-send-email 2.40.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-13.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: From: Yannick Moy When a function is called in a predicate, it was not properly detected as not always inlined in GNATprove mode, which led to crashes later during analysis. Fixed now. gcc/ada/ * sem_res.adb (Resolve_Call): Always call Cannot_Inline so that subprogram called is marked as not always inlined. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_res.adb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index ac0c60f5f22..9755e4d14a6 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -7330,30 +7330,32 @@ package body Sem_Res is or else Is_Invariant_Procedure (Current_Subprogram) or else Is_DIC_Procedure (Current_Subprogram)) then - if Present (Body_Id) - and then Present (Body_To_Inline (Nam_Decl)) - then + declare + Issue_Msg : constant Boolean := + Present (Body_Id) + and then Present (Body_To_Inline (Nam_Decl)); + begin if Is_Predicate_Function (Current_Subprogram) then Cannot_Inline ("cannot inline & (inside predicate)?", - N, Nam_UA); + N, Nam_UA, Suppress_Info => not Issue_Msg); elsif Is_Invariant_Procedure (Current_Subprogram) then Cannot_Inline ("cannot inline & (inside invariant)?", - N, Nam_UA); + N, Nam_UA, Suppress_Info => not Issue_Msg); elsif Is_DIC_Procedure (Current_Subprogram) then Cannot_Inline ("cannot inline & (inside Default_Initial_Condition)?", - N, Nam_UA); + N, Nam_UA, Suppress_Info => not Issue_Msg); else Cannot_Inline ("cannot inline & (inside expression function)?", - N, Nam_UA); + N, Nam_UA, Suppress_Info => not Issue_Msg); end if; - end if; + end; -- Cannot inline a call inside the definition of a record type, -- typically inside the constraints of the type. Calls in -- 2.40.0