r175425 - Disable dead stores checker for template instantations. Fixes <rdar://problem/13213575>.
Ted Kremenek
kremenek at apple.com
Sun Feb 17 23:56:13 PST 2013
On Feb 17, 2013, at 11:25 PM, David Blaikie <dblaikie at gmail.com> wrote:
> On Sun, Feb 17, 2013 at 11:18 PM, Ted Kremenek <kremenek at apple.com> wrote:
> Author: kremenek
> Date: Mon Feb 18 01:18:28 2013
> New Revision: 175425
>
> URL: http://llvm.org/viewvc/llvm-project?rev=175425&view=rev
> Log:
> Disable dead stores checker for template instantations. Fixes <rdar://problem/13213575>.
>
> Modified:
> cfe/trunk/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp
> cfe/trunk/test/Analysis/dead-stores.cpp
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp?rev=175425&r1=175424&r2=175425&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp Mon Feb 18 01:18:28 2013
> @@ -419,6 +419,15 @@ class DeadStoresChecker : public Checker
> public:
> void checkASTCodeBody(const Decl *D, AnalysisManager& mgr,
> BugReporter &BR) const {
> +
> + // Don't do anything for template instantiations.
> + // Proving that code in a template instantiation is "dead"
> + // means proving that it is dead in all instantiations.
> + // This same problem exists with -Wunreachable-code.
>
> I believe last time we spoke about this we agreed that correctness can be attained by examining template patterns not specializations for unreachable code. Your concern was one of performance that I never did get around to providing numbers for (your concern was that examining all template patterns might be too expensive) - I'm not sure if you have the same concern for the Static Analyzer in this regard, or an easier way to verify the perf impact to thins you care about here.
>
> (or perhaps the Static Analyzer already gets this right by examining template patterns elsewhere?)
>
Hi David,
You are correct. While it is true the analyzer has more "CPU time to burn" than a compiler warning, here was my thinking:
(1) This warning should possibly be made one day into a compiler warning, where the same performance requirements for -Wunreachable-code apply. Thus until we feel comfortable with the solution we devised for -Wunreachable-code, it seems reasonable to wait on applying the same solution here.
(2) This was designed to be an expedient solution, addressing a clear case of reducing false positives. This code has not been tested at all on analyzing template patterns, which was beyond the time I had to work on this right now.
I still agree with you, however, that looking at template patterns may be the best long-term solution, but there are many details left to be figured out there.
Cheers,
Ted
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130217/bf12aed4/attachment.html>
More information about the cfe-commits
mailing list