erichkeane added inline comments.

================
Comment at: lib/Sema/SemaChecking.cpp:210
+    Arg = S.PerformCopyInitialization(Entity, SourceLocation(), Arg);
+    TheCall->setArg(I, Arg.get());
   }
----------------
efriedma wrote:
> erichkeane wrote:
> > efriedma wrote:
> > > Can you split this change into a separate patch?  Testcase:
> > > 
> > > ```
> > > int a() {
> > >   const int x = 3;
> > >   static int z;
> > >   constexpr int * y = &z;
> > >   return []() { return __builtin_sub_overflow(x,x,y); }();
> > > }```
> > Can you clarify what you mean?  That above testcase (with added captures) 
> > seems to work currently.  What difference in behavior should I be expecting?
> The testcase should type-check as-is, without adding any captures.  Reading 
> the value of a constexpr variable, or a const variable of integer type, isn't 
> an odr-use.  This doesn't work correctly at the moment because the 
> lvalue-to-rvalue conversions are missing from the AST. Compare to the 
> following:
> 
> ```
> int a() {
>   const int x = 3;
>   static int z;
>   constexpr int * y = &z;
>   return []() { return __builtin_sub_overflow((int)x,(int)x,(int*)y); }();
> }
> ```
Ah, got it! I 'll split that off into a separate patch with those test cases 
now.  Look for the review soon!


https://reviews.llvm.org/D48040



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

Reply via email to