From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot1-x32a.google.com (mail-ot1-x32a.google.com [IPv6:2607:f8b0:4864:20::32a]) by sourceware.org (Postfix) with ESMTPS id 543843858CDB for ; Thu, 20 Jul 2023 09:33:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 543843858CDB Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ot1-x32a.google.com with SMTP id 46e09a7af769-6b9ad292819so462283a34.2 for ; Thu, 20 Jul 2023 02:33:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689845627; x=1690450427; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=AWw+ChYu0lxRlTkHyuLJGm1miqBdUdxEQGsNj12SrFg=; b=sqGOGkprXX7JOppwgVRRaf1vuekEj5NvXejKPkakw4732Nor09netanqBFBZLAYZMN U2iC/hNIAfnYtCA0jtZ6X/gTbMJ6HDAgvUE/Ios0/gAU0fbqByYXG/O8lAFw79ztiSaf ZyvEUEiPhF0jZihTwHn9vO2lhK0g7iVJwA5m/LoDOuwrYGkEL6N8AgXTJ3lFcVcLmLGV N6f671ed+rozaOf/sH5jER+K0qCz5Yd27j64OeScDARx1TMcZJwY6na7TCeVYHY9Ak1F fsMa6VSvhhY15BQg0eNfGhfpy1fltRXZy7L3oXXk3Nz+F82pLs2uoFtx8U/CYUnsZcx6 HT2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689845627; x=1690450427; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=AWw+ChYu0lxRlTkHyuLJGm1miqBdUdxEQGsNj12SrFg=; b=Nw927Uvd82jMimvQeVwZAWbMkvgWYeBf3lskKsIkm37vZRg1RNI5sF4e5WF7fjT4PS XLjKEnLTEz+EnHkpCTNxhVkpIWO+/appT9TUOGEE3PZ6su2SnwWW/KZe0z5uKX9nYDvG oKTxanj+4RxQOVW/lVxacRGd3kTDBMsWXIymK3+rHFdXyftT/b6R3SnYm70qKdxpOi96 hIKbYIuCesTF17WKjAcJIkqSKPFbjzPlnxATfa55RBuXaqunf4xH+QEbjGlO+D2Z405L GIvbOSJJNViWdS5SZkWD06vi6XikszZihYJEkrVp5DYS/G9fuYup/UAG3VQkII5Eg+2I tACQ== X-Gm-Message-State: ABy/qLaTTtqIF6pAYuRtQ7gxhFwMVuyM8Qf922/b1lk8pVLIGFUKXEnL 0QvWmnVDsOVMa+v/3DLYWab/TaCuuZA= X-Google-Smtp-Source: APBJJlEZsUxGpVyQJCLLiK1h0uo92hgl6E2IgWIybBTJMxcVvP2SjZm3Spozm/XgrE6jr31ePB93cw== X-Received: by 2002:a05:6358:3408:b0:134:28d6:be7 with SMTP id h8-20020a056358340800b0013428d60be7mr22423111rwd.9.1689845627012; Thu, 20 Jul 2023 02:33:47 -0700 (PDT) Received: from Thaum.localdomain (59-102-120-25.tpgi.com.au. [59.102.120.25]) by smtp.gmail.com with ESMTPSA id fm10-20020a056a002f8a00b006783ee5df8asm684886pfb.189.2023.07.20.02.33.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 02:33:46 -0700 (PDT) Date: Thu, 20 Jul 2023 19:33:40 +1000 From: Nathaniel Shead To: gcc-patches@gcc.gnu.org Cc: Jason Merrill , Patrick Palka , Nathaniel Shead Subject: [PATCH v4 0/3] c++: Track lifetimes in constant evaluation [PR70331, ...] Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,URI_HEX 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: This is an update of the patch series at https://gcc.gnu.org/pipermail/gcc-patches/2023-July/623375.html Changes since v3: - Use void_node in values map to indicate out-of-lifetime instead of a separate hash set - Remove tracking of temporaries for loops and calls - Fix missed checks for uses of empty classes outside lifetime and associated test - Add reference to PR c++/110619 for the second patch, and corresponding new test case Bootstrapped and regtested on x86_64-pc-linux-gnu. Nathaniel Shead (3): c++: Track lifetimes in constant evaluation [PR70331,PR96630,PR98675] c++: Improve constexpr error for dangling local variables [PR110619] c++: Improve location information in constant evaluation gcc/cp/constexpr.cc | 178 +++++++++++++----- gcc/cp/semantics.cc | 5 +- gcc/cp/typeck.cc | 5 +- gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C | 10 +- gcc/testsuite/g++.dg/cpp0x/constexpr-70323.C | 8 +- gcc/testsuite/g++.dg/cpp0x/constexpr-70323a.C | 8 +- .../g++.dg/cpp0x/constexpr-delete2.C | 5 +- gcc/testsuite/g++.dg/cpp0x/constexpr-diag3.C | 2 +- gcc/testsuite/g++.dg/cpp0x/constexpr-ice20.C | 1 + .../g++.dg/cpp0x/constexpr-recursion.C | 6 +- gcc/testsuite/g++.dg/cpp0x/overflow1.C | 2 +- gcc/testsuite/g++.dg/cpp1y/constexpr-110619.C | 10 + gcc/testsuite/g++.dg/cpp1y/constexpr-89285.C | 5 +- gcc/testsuite/g++.dg/cpp1y/constexpr-89481.C | 3 +- .../g++.dg/cpp1y/constexpr-lifetime1.C | 14 ++ .../g++.dg/cpp1y/constexpr-lifetime2.C | 20 ++ .../g++.dg/cpp1y/constexpr-lifetime3.C | 13 ++ .../g++.dg/cpp1y/constexpr-lifetime4.C | 11 ++ .../g++.dg/cpp1y/constexpr-lifetime5.C | 11 ++ .../g++.dg/cpp1y/constexpr-lifetime6.C | 15 ++ .../g++.dg/cpp1y/constexpr-tracking-const14.C | 3 +- .../g++.dg/cpp1y/constexpr-tracking-const16.C | 3 +- .../g++.dg/cpp1y/constexpr-tracking-const18.C | 4 +- .../g++.dg/cpp1y/constexpr-tracking-const19.C | 4 +- .../g++.dg/cpp1y/constexpr-tracking-const21.C | 4 +- .../g++.dg/cpp1y/constexpr-tracking-const22.C | 4 +- .../g++.dg/cpp1y/constexpr-tracking-const3.C | 3 +- .../g++.dg/cpp1y/constexpr-tracking-const4.C | 3 +- .../g++.dg/cpp1y/constexpr-tracking-const7.C | 3 +- gcc/testsuite/g++.dg/cpp1y/constexpr-union5.C | 4 +- gcc/testsuite/g++.dg/cpp1y/pr68180.C | 4 +- .../g++.dg/cpp1z/constexpr-lambda6.C | 4 +- .../g++.dg/cpp1z/constexpr-lambda8.C | 5 +- gcc/testsuite/g++.dg/cpp2a/bit-cast11.C | 10 +- gcc/testsuite/g++.dg/cpp2a/bit-cast12.C | 10 +- gcc/testsuite/g++.dg/cpp2a/bit-cast14.C | 14 +- gcc/testsuite/g++.dg/cpp2a/constexpr-98122.C | 4 +- .../g++.dg/cpp2a/constexpr-dynamic17.C | 5 +- gcc/testsuite/g++.dg/cpp2a/constexpr-init1.C | 5 +- gcc/testsuite/g++.dg/cpp2a/constexpr-new12.C | 6 +- gcc/testsuite/g++.dg/cpp2a/constexpr-new3.C | 10 +- gcc/testsuite/g++.dg/cpp2a/constinit10.C | 5 +- .../g++.dg/cpp2a/is-corresponding-member4.C | 4 +- gcc/testsuite/g++.dg/ext/constexpr-vla2.C | 4 +- gcc/testsuite/g++.dg/ext/constexpr-vla3.C | 4 +- gcc/testsuite/g++.dg/ubsan/pr63956.C | 23 +-- .../g++.dg/warn/Wreturn-local-addr-6.C | 3 - .../25_algorithms/equal/constexpr_neg.cc | 7 +- .../testsuite/26_numerics/gcd/105844.cc | 10 +- .../testsuite/26_numerics/lcm/105844.cc | 14 +- 50 files changed, 350 insertions(+), 168 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp1y/constexpr-110619.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/constexpr-lifetime1.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/constexpr-lifetime2.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/constexpr-lifetime3.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/constexpr-lifetime4.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/constexpr-lifetime5.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/constexpr-lifetime6.C -- 2.41.0