OK, thanks.
On Tue, Jan 23, 2018 at 2:37 PM, Paolo Carlini <paolo.carl...@oracle.com> wrote: > Hi, > > On 23/01/2018 18:38, Jason Merrill wrote: >> >> On 01/22/2018 05:13 PM, Paolo Carlini wrote: >>> >>> Hi again, >>> >>> On 22/01/2018 22:50, Paolo Carlini wrote: >>>> >>>> Ok. The below passes the C++ testsuite and I'm finishing testing it. >>>> Therefore, as you already hinted to, we can now say that what was *really* >>>> missing from potential_constant_expression_1 was the use of >>>> default_init_uninitialized_part, which does all the non-trivial work >>>> besides >>>> the later !DECL_NONTRIVIALLY_INITIALIZED_P check. >>>> check_for_uninitialized_const_var also provides the informs, which were >>>> completely missing. >>> >>> Grrr. Testing the library revealed immediately the failure of >>> 18_support/byte/ops.cc, because in constexpr_context_p == true, thus from >>> potential_constant_expression_1, the case CP_TYPE_CONST_P triggers. I guess >>> we really want to keep the existing constexpr_context_p == false cases >>> separate. I'm therefore restarting testing with the below. >> >> >>> + && ((!constexpr_context_p >>> + && (CP_TYPE_CONST_P (type) || var_in_constexpr_fn (decl))) >>> + || (constexpr_context_p && !DECL_NONTRIVIALLY_INITIALIZED_P >>> (decl))) >>> && !DECL_INITIAL (decl)) >> >> >> I think I'd replace the DECL_INITIAL check with >> DECL_NONTRIVIALLY_INITIALIZED_P, which seems more precise. So we ought to >> be ok with the simpler >> >> && (constexpr_context_p >> || CP_TYPE_CONST_P (type) || var_in_constexpr_fn (decl)) >> && !DECL_NONTRIVIALLY_INITIALIZED_P (decl)) > > Oh nice, thanks Jason. > > I'm therefore finishing regtesting the below, it's currently half way > through the library testsuite. Ok if it passes? > > Thanks again, > Paolo. > > ////////////////////////