]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: Fix empty base stores in cxx_eval_store_expression [PR100111]
authorJakub Jelinek <jakub@redhat.com>
Fri, 16 Apr 2021 15:37:07 +0000 (17:37 +0200)
committerJakub Jelinek <jakub@redhat.com>
Fri, 16 Apr 2021 15:44:03 +0000 (17:44 +0200)
commit35e8b38a91d9fb49a4759649576f15e76c129d99
tree49ae45c6708611d0f597beb5d0fbe0eb2398e8bc
parent4b53f4cde2accd328e5de4f164dc390d33446216
c++: Fix empty base stores in cxx_eval_store_expression [PR100111]

In r11-6895 handling of empty bases has been fixed such that non-lval
stores of empty classes are not added when the type of *valp doesn't
match the type of the initializer, but as this testcase shows it is
done only when *valp is non-NULL.  If it is NULL, we still shouldn't
add empty class constructors if the type of the constructor elt *valp
points to doesn't match.

2021-04-16  Jakub Jelinek  <jakub@redhat.com>

PR c++/100111
* constexpr.c (cxx_eval_store_expression): Don't add CONSTRUCTORs
for empty classes into *valp when types don't match even when *valp
is NULL.

* g++.dg/cpp0x/constexpr-100111.C: New test.
gcc/cp/constexpr.c
gcc/testsuite/g++.dg/cpp0x/constexpr-100111.C [new file with mode: 0644]