InstrProf: Fix coverage maps for conditional operators
This fixes a crash when we're emitting coverage and a macro appears between two binary conditional operators, ie, "foo ?: MACRO ?: bar", and fixes the interaction of macros and conditional operators in general. llvm-svn: 235793
This commit is contained in:
@@ -830,7 +830,13 @@ struct CounterCoverageMappingBuilder
|
||||
Counter ParentCount = getRegion().getCounter();
|
||||
Counter TrueCount = getRegionCounter(E);
|
||||
|
||||
propagateCounts(TrueCount, E->getTrueExpr());
|
||||
Visit(E->getCond());
|
||||
|
||||
if (!isa<BinaryConditionalOperator>(E)) {
|
||||
extendRegion(E->getTrueExpr());
|
||||
propagateCounts(TrueCount, E->getTrueExpr());
|
||||
}
|
||||
extendRegion(E->getFalseExpr());
|
||||
propagateCounts(subtractCounters(ParentCount, TrueCount),
|
||||
E->getFalseExpr());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user