rsmith added inline comments. ================ Comment at: lib/Sema/SemaDecl.cpp:10535-10538 @@ -10534,1 +10534,6 @@ << attr->getRange(); + APValue Value; + SmallVector<PartialDiagnosticAt, 8> Notes; + cast<Expr>(var->ensureEvaluatedStmt()->Value)->EvaluateAsInitializer( + Value, getASTContext(), var, Notes); + for (auto &it : Notes) ---------------- loladiro wrote: > rsmith wrote: > > Can you capture the diagnostics from `checkInitIsICE` instead of > > recomputing them here? (It looks straightforward to add an overload that > > takes a vector of notes.) In the non-C++11 case, you can produce a note > > pointing to `CacheCulprit` instead. > The problem is that the result of checking is cached internally and the > diagnostics are only produced the first time. I don't think it's necessarily > guaranteed that the above `checkInitIsICE` is the first such call (unless you > can see such a reason). That's unfortunate, but yeah, it's not reasonable to rely on that. Please just use `Init` instead of `cast<Expr>(var->ensureEvaluatedStmt()->Value)` here (`ensureEvaluatedStmt()` really ought to be a private member of `VarDecl`...).
Repository: rL LLVM https://reviews.llvm.org/D24371 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits