From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw1-x1136.google.com (mail-yw1-x1136.google.com [IPv6:2607:f8b0:4864:20::1136]) by sourceware.org (Postfix) with ESMTPS id 61B5F3858D33 for ; Sat, 1 Jul 2023 03:24:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 61B5F3858D33 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-yw1-x1136.google.com with SMTP id 00721157ae682-570877f7838so28825727b3.0 for ; Fri, 30 Jun 2023 20:24:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688181887; x=1690773887; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=24mnKWlqrJSHlZBtdLDRiTe+xHiwEs5jenIEey3AJbQ=; b=Iijd0FyEu8IkTS+esZMLIBFffQ/TD6UuVleIPGQJ59MBmhQ9LHwt3Ae8+XIIGiZkMp mKxf7f67K+GdgAXec7IKMA3ib1tvLv0bU44cfDX5eGl10/bS0YCxpy3HiTfnGPjfoS0w uPi1kW8pMOqj/UmlaFT+bd3tP1xm6uhl101YP+RdCFiTLLPoniUitZ0tpeSAjlyjSEsF RhmNXrDFqfbZikBTAG8uLf1gT10XN2U4zuVf+40GDxRnNXIiODOicWU++aMkCpvuMRL8 ZneKr5oTNmaErzO92PePt3CDFdOZIir3WY2uITwGw1HgPLLFwhbi1FsRw05AlrHRH2FA o8jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688181887; x=1690773887; 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=24mnKWlqrJSHlZBtdLDRiTe+xHiwEs5jenIEey3AJbQ=; b=TPtXU8DG0LE1K/glZEKI7HOCna0cR0Yte/k3kogYro4kN3UNDgaBAySSIYj84dhBbh Y6AUN0wl5ZsUCDl/2wn9pUqcQOTeL6jh2tX+M25IzNo7o6xoedR/52G7kpMRtfNHNHgu jZcbSK/Z9e0+cN0d08aMQFBxwUBUH6Usriq5+7wCs6yckrq3FC2CgCTTibn7LYc07sns BcnSk0qM16PZL/J/KLus7U+WL7IOqLbPP4hpBBCyd01UBtcSF2Li8VVcUu3P8wYpZahp BTYLR5WPSPOzpqZsCZkRke0HTc3zt8wAkO+kcuDygjRhV2js8QCFrE4RQ0kfyNvXKtWP J+3A== X-Gm-Message-State: ABy/qLbzzw1AIYnNXDu27O7sC5uZF5wnihsfYyR+cuxYTffBGrxifZkR DjM2ZETAxUZfyAHny5E+9vvCDplgwqU= X-Google-Smtp-Source: APBJJlFW+/VoirbY3G5Uu1gLqNBv3ZR0sye51h+AUf0fuQ3aL99R0FVbOfaP5FCKDmgksYHTOtPbhg== X-Received: by 2002:a81:63c6:0:b0:576:7dfc:e73e with SMTP id x189-20020a8163c6000000b005767dfce73emr4431744ywb.32.1688181887523; Fri, 30 Jun 2023 20:24: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 h5-20020a63c005000000b0054ff36967f7sm11149444pgg.54.2023.06.30.20.24.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Jun 2023 20:24:47 -0700 (PDT) Date: Sat, 1 Jul 2023 13:24:37 +1000 From: Nathaniel Shead To: gcc-patches@gcc.gnu.org Cc: Patrick Palka Subject: [PATCH v3 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-March/614811.html Changes since v2: - Use a separate 'hash_set' to track expired variables instead of adding a flag to 'lang_decl_base'. - Use 'iloc_sentinel' to propagate location information down to subexpressions instead of manually saving and falling back to a parent expression's location. - Update more tests with improved error location information. 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 c++: Improve location information in constant evaluation gcc/cp/constexpr.cc | 158 +++++++++++++++--- 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-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-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 +- 48 files changed, 330 insertions(+), 143 deletions(-) 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 -- 2.41.0