]> granicus.if.org Git - clang/commitdiff
Make a note about a missing optimization.
authorJohn McCall <rjmccall@apple.com>
Thu, 28 Jul 2011 07:41:22 +0000 (07:41 +0000)
committerJohn McCall <rjmccall@apple.com>
Thu, 28 Jul 2011 07:41:22 +0000 (07:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136340 91177308-0d34-0410-b5e6-96231b3b80d8

NOTES.txt

index f66a96120a81cfa48a8f512e6bef8cab1ac43c96..9f7ed4b9591c4615178da8177348601acdf84ef8 100644 (file)
--- a/NOTES.txt
+++ b/NOTES.txt
@@ -83,3 +83,21 @@ enum VerifyConstraintResult {
 };
 
 //===---------------------------------------------------------------------===//
+
+Blocks should not capture variables that are only used in dead code.
+
+The rule that we came up with is that blocks are required to capture
+variables if they're referenced in evaluated code, even if that code
+doesn't actually rely on the value of the captured variable.
+
+For example, this requires a capture:
+  (void) var;
+But this does not:
+  if (false) puts(var);
+
+Summary of <rdar://problem/9851835>: if we implement this, we should
+warn about non-POD variables that are referenced but not captured, but
+only if the non-reachability is not due to macro or template
+metaprogramming.
+
+//===---------------------------------------------------------------------===//