summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CoverageMappingGen.cpp
diff options
context:
space:
mode:
authorJustin Bogner <mail@justinbogner.com>2015-06-16 06:24:15 +0000
committerJustin Bogner <mail@justinbogner.com>2015-06-16 06:24:15 +0000
commit055ebc348d81bb52d4eb549927457b6a16838a0d (patch)
treee2943886cee6513cc9cfd5da072681879d60d658 /clang/lib/CodeGen/CoverageMappingGen.cpp
parent77f0e9f662c3eef7d742ad9c7f60b31aa9037c96 (diff)
downloadbcm5719-llvm-055ebc348d81bb52d4eb549927457b6a16838a0d.tar.gz
bcm5719-llvm-055ebc348d81bb52d4eb549927457b6a16838a0d.zip
InstrProf: Fix coverage mapping when "if" is a macro
We were propagating the coverage map into the body of an if statement, but not into the condition thereafter. This is fine as long as the two locations are in the same virtual file, but they won't be when the "if" part of the statement is from a macro and the condition is not. llvm-svn: 239803
Diffstat (limited to 'clang/lib/CodeGen/CoverageMappingGen.cpp')
-rw-r--r--clang/lib/CodeGen/CoverageMappingGen.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CoverageMappingGen.cpp b/clang/lib/CodeGen/CoverageMappingGen.cpp
index 024a45dba2b..9ad5d14edfd 100644
--- a/clang/lib/CodeGen/CoverageMappingGen.cpp
+++ b/clang/lib/CodeGen/CoverageMappingGen.cpp
@@ -806,6 +806,9 @@ struct CounterCoverageMappingBuilder
void VisitIfStmt(const IfStmt *S) {
extendRegion(S);
+ // Extend into the condition before we propagate through it below - this is
+ // needed to handle macros that generate the "if" but not the condition.
+ extendRegion(S->getCond());
Counter ParentCount = getRegion().getCounter();
Counter ThenCount = getRegionCounter(S);
OpenPOWER on IntegriCloud