]> git.ipfire.org Git - thirdparty/gcc.git/commit
openmp: Don't try to destruct DECL_OMP_PRIVATIZED_MEMBER vars [PR108180]
authorJakub Jelinek <jakub@redhat.com>
Wed, 21 Dec 2022 08:05:27 +0000 (09:05 +0100)
committerJakub Jelinek <jakub@redhat.com>
Wed, 21 Dec 2022 08:10:03 +0000 (09:10 +0100)
commit1119902b6c7c1c50123ed85ec1def8be4772d68c
tree1ba7afc4a41e3bcc01571d5ac240aa1af86cea8f
parent0d1b5446bf17c14fce3428a005446539292fe27e
openmp: Don't try to destruct DECL_OMP_PRIVATIZED_MEMBER vars [PR108180]

DECL_OMP_PRIVATIZED_MEMBER vars are artificial vars with DECL_VALUE_EXPR
of this->field used just during gimplification and omp lowering/expansion
to privatize individual fields in methods when needed.
As the following testcase shows, when not in templates, they were handled
right, but in templates we actually called cp_finish_decl on them and
that can result in their destruction, which is obviously undesirable,
we should only destruct the privatized copies of them created in omp
lowering.

Fixed thusly.

2022-12-21  Jakub Jelinek  <jakub@redhat.com>

PR c++/108180
* pt.cc (tsubst_expr): Don't call cp_finish_decl on
DECL_OMP_PRIVATIZED_MEMBER vars.

* testsuite/libgomp.c++/pr108180.C: New test.
gcc/cp/pt.cc
libgomp/testsuite/libgomp.c++/pr108180.C [new file with mode: 0644]