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

Reply via email to