aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CoverageMappingGen.cpp
diff options
context:
space:
mode:
authorAndrey Ali Khan Bolshakov <bolsh.andrey@yandex.ru>2024-05-16 01:40:03 +0300
committerGitHub <noreply@github.com>2024-05-15 15:40:03 -0700
commit5ff6c6542ac451daaed6c417e481e313165d3454 (patch)
treeac8e2f8102f2a66e6871060b3ddc6e2011be47ef /clang/lib/CodeGen/CoverageMappingGen.cpp
parent050593fc4f9a7f2b9450ee093c4638b8539315b7 (diff)
downloadllvm-5ff6c6542ac451daaed6c417e481e313165d3454.zip
llvm-5ff6c6542ac451daaed6c417e481e313165d3454.tar.gz
llvm-5ff6c6542ac451daaed6c417e481e313165d3454.tar.bz2
[Coverage] Handle array decomposition correctly (#88881)
`ArrayInitLoopExpr` AST node has two occurences of its as-written initializing expression in its subexpressions through a non-unique `OpaqueValueExpr`. It causes double-visiting of the initializing expression if not handled explicitly, as discussed in #85837.
Diffstat (limited to 'clang/lib/CodeGen/CoverageMappingGen.cpp')
-rw-r--r--clang/lib/CodeGen/CoverageMappingGen.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CoverageMappingGen.cpp b/clang/lib/CodeGen/CoverageMappingGen.cpp
index e465600..cc8ab7a 100644
--- a/clang/lib/CodeGen/CoverageMappingGen.cpp
+++ b/clang/lib/CodeGen/CoverageMappingGen.cpp
@@ -2177,6 +2177,10 @@ struct CounterCoverageMappingBuilder
// propagate counts into them.
}
+ void VisitArrayInitLoopExpr(const ArrayInitLoopExpr *AILE) {
+ Visit(AILE->getCommonExpr()->getSourceExpr());
+ }
+
void VisitPseudoObjectExpr(const PseudoObjectExpr *POE) {
// Just visit syntatic expression as this is what users actually write.
VisitStmt(POE->getSyntacticForm());