[PATCH v2 0/3] c++: Track lifetimes in constant evaluation [PR70331,...]
(Another) ping. I also have some more changes on top of this patch set as well if this looks good as it is. https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614811.html Thanks! On Wed, Mar 29, 2023 at 01:32:55PM +1100, Nathaniel Shead wrote: > This is an update of the patch series at > https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614759.html > > The main change is modifying the first patch to store the "expired" flag > in the C++-specific lang_decl_base struct instead of tree_decl_common. > The second and third patches to improve diagnostic locations are > otherwise unchanged. > > Bootstrapped and regression tested on x86_64 linux. > > Nathaniel > > --- > > 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 constexpr evaluation > > gcc/cp/constexpr.cc | 152 -- > gcc/cp/cp-tree.h | 10 +- > gcc/cp/module.cc | 2 + > 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-diag3.C | 2 +- > gcc/testsuite/g++.dg/cpp0x/constexpr-ice20.C | 2 +- > 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 ++ > gcc/testsuite/g++.dg/cpp1y/constexpr-union5.C | 4 +- > gcc/testsuite/g++.dg/cpp1y/pr68180.C | 4 +- > .../g++.dg/cpp1z/constexpr-lambda6.C | 4 +- > 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/ext/constexpr-vla2.C | 4 +- > gcc/testsuite/g++.dg/ext/constexpr-vla3.C | 4 +- > gcc/testsuite/g++.dg/ubsan/pr63956.C | 4 +- > .../g++.dg/warn/Wreturn-local-addr-6.C| 3 - > .../25_algorithms/equal/constexpr_neg.cc | 7 +- > 30 files changed, 246 insertions(+), 112 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.34.1 >
[PATCH v2 0/3] c++: Track lifetimes in constant evaluation [PR70331, ...]
This is an update of the patch series at https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614759.html The main change is modifying the first patch to store the "expired" flag in the C++-specific lang_decl_base struct instead of tree_decl_common. The second and third patches to improve diagnostic locations are otherwise unchanged. Bootstrapped and regression tested on x86_64 linux. Nathaniel --- 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 constexpr evaluation gcc/cp/constexpr.cc | 152 -- gcc/cp/cp-tree.h | 10 +- gcc/cp/module.cc | 2 + 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-diag3.C | 2 +- gcc/testsuite/g++.dg/cpp0x/constexpr-ice20.C | 2 +- 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 ++ gcc/testsuite/g++.dg/cpp1y/constexpr-union5.C | 4 +- gcc/testsuite/g++.dg/cpp1y/pr68180.C | 4 +- .../g++.dg/cpp1z/constexpr-lambda6.C | 4 +- 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/ext/constexpr-vla2.C | 4 +- gcc/testsuite/g++.dg/ext/constexpr-vla3.C | 4 +- gcc/testsuite/g++.dg/ubsan/pr63956.C | 4 +- .../g++.dg/warn/Wreturn-local-addr-6.C| 3 - .../25_algorithms/equal/constexpr_neg.cc | 7 +- 30 files changed, 246 insertions(+), 112 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.34.1
Re: [PATCH v2 0/3] c++: Track lifetimes in constant evaluation [PR70331, ...]
Just pinging in case this fix has fallen through the cracks. https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614811.html On Wed, Mar 29, 2023 at 1:33 PM Nathaniel Shead wrote: > > This is an update of the patch series at > https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614759.html > > The main change is modifying the first patch to store the "expired" flag > in the C++-specific lang_decl_base struct instead of tree_decl_common. > The second and third patches to improve diagnostic locations are > otherwise unchanged. > > Bootstrapped and regression tested on x86_64 linux. > > Nathaniel > > --- > > 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 constexpr evaluation > > gcc/cp/constexpr.cc | 152 -- > gcc/cp/cp-tree.h | 10 +- > gcc/cp/module.cc | 2 + > 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-diag3.C | 2 +- > gcc/testsuite/g++.dg/cpp0x/constexpr-ice20.C | 2 +- > 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 ++ > gcc/testsuite/g++.dg/cpp1y/constexpr-union5.C | 4 +- > gcc/testsuite/g++.dg/cpp1y/pr68180.C | 4 +- > .../g++.dg/cpp1z/constexpr-lambda6.C | 4 +- > 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/ext/constexpr-vla2.C | 4 +- > gcc/testsuite/g++.dg/ext/constexpr-vla3.C | 4 +- > gcc/testsuite/g++.dg/ubsan/pr63956.C | 4 +- > .../g++.dg/warn/Wreturn-local-addr-6.C| 3 - > .../25_algorithms/equal/constexpr_neg.cc | 7 +- > 30 files changed, 246 insertions(+), 112 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.34.1 >