This patch implements C++20 P1331, allowing trivial default initialization in constexpr contexts. * c-cppbuiltin.c (c_cpp_builtins): Adjust the value of __cpp_constexpr. * class.c (trivial_default_constructor_is_constexpr): Return true in C++20. * constexpr.c (cx_check_missing_mem_inits): Allow missing field initializers in C++20. (cxx_eval_call_expression): Don't clear CONSTRUCTOR_NO_CLEARING for constexpr constructors in C++20. (reduced_constant_expression_p): Don't set FIELD for union and array types. Skip empty class fields without initializers. * decl.c (check_for_uninitialized_const_var): Permit trivial default initialization in constexpr. (next_initializable_field): Don't skip vptr fields. * method.c (walk_field_subobs): Still consider a constructor that doesn't initialize all the members constexpr. * g++.dg/cpp0x/constexpr-array6.C: Adjust dg-error. * g++.dg/cpp0x/constexpr-ctor.C: Likewise. * g++.dg/cpp0x/constexpr-diag3.C: Likewise. * g++.dg/cpp0x/constexpr-diag4.C: Likewise. * g++.dg/cpp0x/constexpr-ex3.C: Likewise. * g++.dg/cpp0x/constexpr-template2.C: Likewise. * g++.dg/cpp0x/constexpr-union2.C: Likewise. * g++.dg/cpp0x/lambda/lambda-mangle.C: Rip out a piece of code ... * g++.dg/cpp0x/lambda/lambda-mangle6.C: ... and put it here. * g++.dg/cpp0x/pr79118.C: Adjust dg-error. * g++.dg/cpp1y/constexpr-83921-3.C: Likewise. * g++.dg/cpp1y/constexpr-neg1.C: Likewise. * g++.dg/cpp1z/constexpr-lambda12.C: Likewise. * g++.dg/cpp1z/feat-cxx1z.C: Use -std=c++17. * g++.dg/cpp2a/constexpr-init1.C: New test. * g++.dg/cpp2a/constexpr-init2.C: New test. * g++.dg/cpp2a/constexpr-init3.C: New test. * g++.dg/cpp2a/constexpr-init4.C: New test. * g++.dg/cpp2a/constexpr-init5.C: New test. * g++.dg/cpp2a/constexpr-init6.C: New test. * g++.dg/cpp2a/constexpr-init7.C: New test. * g++.dg/cpp2a/constexpr-init8.C: New test. * g++.dg/cpp2a/constexpr-init9.C: New test. * g++.dg/cpp2a/constexpr-init10.C: New test. * g++.dg/cpp2a/constexpr-init11.C: New test. * g++.dg/cpp2a/constexpr-init12.C: New test. * g++.dg/cpp2a/constexpr-init13.C: New test. * g++.dg/cpp2a/constexpr-init14.C: New test. * g++.dg/cpp2a/constexpr-init15.C: New test. * g++.dg/cpp2a/constexpr-try5.C: Adjust dg-error. * g++.dg/cpp2a/feat-cxx2a.C: Test __cpp_constexpr. * g++.dg/cpp2a/lambda-mangle.C: New test. * g++.dg/debug/dwarf2/pr44641.C: Skip for c++2a. * g++.dg/ext/stmtexpr21.C: Adjust dg-error. Co-Authored-By: Jakub Jelinek <jakub@redhat.com> From-SVN: r279019
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
accessibility1.C | Loading commit data... | |
align-1.C | Loading commit data... | |
align-2.C | Loading commit data... | |
align-3.C | Loading commit data... | |
align-4.C | Loading commit data... | |
align-5.C | Loading commit data... | |
align-6.C | Loading commit data... | |
anonname1.C | Loading commit data... | |
array-0.C | Loading commit data... | |
array-1.C | Loading commit data... | |
array-2.C | Loading commit data... | |
array-3.C | Loading commit data... | |
array-4.C | Loading commit data... | |
auto1.C | Loading commit data... | |
block.C | Loading commit data... | |
cdtor-1.C | Loading commit data... | |
const2.C | Loading commit data... | |
const2b.C | Loading commit data... | |
constexpr-var-1.C | Loading commit data... | |
deallocator.C | Loading commit data... | |
default-arg1.C | Loading commit data... | |
defaulted-member-function-1.C | Loading commit data... | |
defaulted-member-function-2.C | Loading commit data... | |
defaulted-member-function-3.C | Loading commit data... | |
deleted-member-function.C | Loading commit data... | |
dwarf2-1.C | Loading commit data... | |
dwarf2-2.C | Loading commit data... | |
dwarf2.exp | Loading commit data... | |
dwarf4-nested.C | Loading commit data... | |
dwarf4-typedef.C | Loading commit data... | |
enum1.C | Loading commit data... | |
enum2.C | Loading commit data... | |
explicit-constructor.C | Loading commit data... | |
fesd-any.C | Loading commit data... | |
fesd-any.h | Loading commit data... | |
fesd-baseonly.C | Loading commit data... | |
fesd-baseonly.h | Loading commit data... | |
fesd-none.C | Loading commit data... | |
fesd-none.h | Loading commit data... | |
fesd-reduced.C | Loading commit data... | |
fesd-reduced.h | Loading commit data... | |
fesd-sys.C | Loading commit data... | |
fesd-sys.h | Loading commit data... | |
fesd.h | Loading commit data... | |
global-used-types-1.C | Loading commit data... | |
icf.C | Loading commit data... | |
imported-decl-1.C | Loading commit data... | |
imported-decl-2.C | Loading commit data... | |
imported-module-2.C | Loading commit data... | |
imported-module-3.C | Loading commit data... | |
imported-module-4.C | Loading commit data... | |
imported-module.C | Loading commit data... | |
inline-ns-1.C | Loading commit data... | |
inline-ns-2.C | Loading commit data... | |
inline-var-1.C | Loading commit data... | |
inline-var-2.C | Loading commit data... | |
inline1.C | Loading commit data... | |
integer-typedef.C | Loading commit data... | |
lambda1.C | Loading commit data... | |
lang-cpp11.C | Loading commit data... | |
lang-cpp14.C | Loading commit data... | |
lang-cpp98.C | Loading commit data... | |
lineno-simple1.C | Loading commit data... | |
local-var-in-contructor.C | Loading commit data... | |
localclass1.C | Loading commit data... | |
localclass2.C | Loading commit data... | |
localclass3.C | Loading commit data... | |
namespace-1.C | Loading commit data... | |
namespace-2.C | Loading commit data... | |
nested-1.C | Loading commit data... | |
nested-2.C | Loading commit data... | |
nested-3.C | Loading commit data... | |
nested-4.C | Loading commit data... | |
non-virtual-thunk.C | Loading commit data... | |
noreturn-function.C | Loading commit data... | |
omp-fesdr.C | Loading commit data... | |
pr41063.C | Loading commit data... | |
pr44641.C | Loading commit data... | |
pr45997-1.C | Loading commit data... | |
pr45997-2.C | Loading commit data... | |
pr46123-2.C | Loading commit data... | |
pr46123.C | Loading commit data... | |
pr46527.C | Loading commit data... | |
pr52260.C | Loading commit data... | |
pr54508.C | Loading commit data... | |
pr61433.C | Loading commit data... | |
pr67764.C | Loading commit data... | |
pr77363.C | Loading commit data... | |
pr78835.C | Loading commit data... | |
pr79129.C | Loading commit data... | |
pr80234-1.C | Loading commit data... | |
pr80234-2.C | Loading commit data... | |
pr85302.C | Loading commit data... | |
pr85550.C | Loading commit data... | |
pr86456.C | Loading commit data... | |
pr86900.C | Loading commit data... | |
pr87295.C | Loading commit data... | |
pr87462.C | Loading commit data... | |
pr88006.C | Loading commit data... | |
pr91887.C | Loading commit data... | |
ptrdmem-1.C | Loading commit data... | |
pubnames-1.C | Loading commit data... | |
pubnames-2.C | Loading commit data... | |
pubnames-3.C | Loading commit data... | |
redeclaration-1.C | Loading commit data... | |
ref-1.C | Loading commit data... | |
ref-2.C | Loading commit data... | |
ref-3.C | Loading commit data... | |
ref-4.C | Loading commit data... | |
refqual-1.C | Loading commit data... | |
refqual-2.C | Loading commit data... | |
rv1.C | Loading commit data... | |
self-ref-1.C | Loading commit data... | |
self-ref-2.C | Loading commit data... | |
static-data-member1.C | Loading commit data... | |
static-data-member2.C | Loading commit data... | |
static-local-var-in-ctor.C | Loading commit data... | |
template-func-params-1.C | Loading commit data... | |
template-func-params-2.C | Loading commit data... | |
template-func-params-3.C | Loading commit data... | |
template-func-params-4.C | Loading commit data... | |
template-func-params-5.C | Loading commit data... | |
template-func-params-6.C | Loading commit data... | |
template-func-params-7.C | Loading commit data... | |
template-params-1.C | Loading commit data... | |
template-params-10.C | Loading commit data... | |
template-params-11.C | Loading commit data... | |
template-params-12.H | Loading commit data... | |
template-params-12f.C | Loading commit data... | |
template-params-12g.C | Loading commit data... | |
template-params-12n.C | Loading commit data... | |
template-params-12s.C | Loading commit data... | |
template-params-12u.C | Loading commit data... | |
template-params-12v.C | Loading commit data... | |
template-params-12w.C | Loading commit data... | |
template-params-13.C | Loading commit data... | |
template-params-2.C | Loading commit data... | |
template-params-3.C | Loading commit data... | |
template-params-4.C | Loading commit data... | |
template-params-5.C | Loading commit data... | |
template-params-6.C | Loading commit data... | |
template-params-7.C | Loading commit data... | |
template-params-8.C | Loading commit data... | |
template-params-9.C | Loading commit data... | |
thunk1.C | Loading commit data... | |
tls1.C | Loading commit data... | |
typedef1.C | Loading commit data... | |
typedef2.C | Loading commit data... | |
typedef3.C | Loading commit data... | |
typedef4.C | Loading commit data... | |
typedef5.C | Loading commit data... | |
typedef6.C | Loading commit data... |