aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-threadbackward.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-10-29 09:28:32 +0200
committerJakub Jelinek <jakub@redhat.com>2021-10-29 09:28:32 +0200
commiteca767aa51d1f69614222ceb130ca6bb07713232 (patch)
tree6fd22f2e45dab8a8542eeeff6ace686b4dd9e035 /gcc/tree-ssa-threadbackward.c
parent146b83e14a0a76a9ce8a4cb79997a078f437f779 (diff)
downloadgcc-eca767aa51d1f69614222ceb130ca6bb07713232.zip
gcc-eca767aa51d1f69614222ceb130ca6bb07713232.tar.gz
gcc-eca767aa51d1f69614222ceb130ca6bb07713232.tar.bz2
c++: Implement DR2351 - void{} [PR102820]
Here is an implementation of DR2351 - void{} - where void{} after pack expansion is considered valid and the same thing as void(). For templates, if CONSTRUCTOR_NELTS is 0, the CONSTRUCTOR is not dependent and we can return void_node right away, if it is dependent and contains only packs, then it is potentially zero element and so we need to build CONSTRUCTOR_IS_DEPENDENT CONSTRUCTOR, while if it contains any non-pack elts, we can diagnose it right away. 2021-10-29 Jakub Jelinek <jakub@redhat.com> PR c++/102820 * semantics.c (maybe_zero_constructor_nelts): New function. (finish_compound_literal): Implement DR2351 - void{}. If type is cv void and compound_literal has no elements, return void_node. If type is cv void and compound_literal might have no elements after expansion, handle it like other dependent compound literals. * g++.dg/cpp0x/dr2351.C: New test.
Diffstat (limited to 'gcc/tree-ssa-threadbackward.c')
0 files changed, 0 insertions, 0 deletions