зеркало из https://github.com/microsoft/clang-1.git
Make a note about a missing optimization.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136340 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
fb7208119a
Коммит
d46f763aab
18
NOTES.txt
18
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.
|
||||||
|
|
||||||
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
Загрузка…
Ссылка в новой задаче