EricWF marked an inline comment as done.
EricWF added a comment.

In https://reviews.llvm.org/D37035#849574, @rsmith wrote:

> I don't like the model of conditionally rebuilding the default initializer / 
> default argument if it contains one of these builtins; it seems more 
> heavy-handed than necessary. I'm also not convinced that we need to store the 
> computed value in the AST.
>
> As an alternative, `CodeGen` and the expression evaluator can track a current 
> call context (the innermost call expression or list initialization that is 
> not within a default argument / default member initializer) consisting of the 
> enclosing `FunctionDecl` and `SourceLocation`, and when the value of one of 
> these builtins is needed, pass that context to the AST node to ask what value 
> it has in that context. This will require a bit more work for the static 
> analyzer, but should be fairly simple elsewhere and will avoid the extra AST 
> nodes for the desugared form.


That sounds good to me. Could you suggest where said context should correctly 
live?



================
Comment at: docs/LanguageExtensions.rst:2118
+point is the location of the caller. When the builtins appear as part of a
+NSDMI the invocation point is the location of the constructor or
+aggregate initialization used to create the object. Otherwise the invocation
----------------
rsmith wrote:
> What is an NSDMI? I think you mean "default member initializer".
"Non-static default member initializer". I'll change it to your suggestion.


================
Comment at: include/clang/AST/Expr.h:3838
+  /// function.
+  const char *getBuiltinStr() const LLVM_READONLY;
+
----------------
majnemer wrote:
> StringRef?
Sure. Why not. I'm never sure how to handle string literals.


https://reviews.llvm.org/D37035



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to