erik.pilkington added inline comments.

================
Comment at: test/SemaCXX/cxx1y-generic-lambdas-capturing.cpp:185
           f(y, d);
-          f(z, d);
+          f(z, d); // expected-warning {{address of stack memory associated 
with local variable 'z' returned}}
           decltype(a) A = a;
----------------
rsmith wrote:
> This diagnostic looks like it'll be confusing. Can you add a note pointing at 
> the `return` statement in question (we're warning about the one on line 179, 
> I assume)?
OK, in the new patch we emit the warning at the 'return', and a note at the 
capture location.


================
Comment at: test/SemaCXX/cxx1y-init-captures.cpp:123-124
       };
-      return M;
+      // FIXME: We shouldn't emit this warning here.
+      return M; // expected-warning{{stack memory}}
     };
----------------
rsmith wrote:
> Do you know why this happens? It looks like `EvalVal` should bail out on the 
> `DeclRefExpr` in the init-capture, because it 
> `refersToEnclosingVariableOrCapture`.
For some reason `refersToEnclosingVariableOrCapture` isn't set here, which 
seems like a bug to me. The new patch works around this by warning only if the 
variable that we're capturing is declared in the same context as the return 
statement.


https://reviews.llvm.org/D24639



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

Reply via email to