[PATCH] D16934: [Coverage] Fix crash in VisitIfStmt
Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 8 11:30:10 PST 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL260129: [Coverage] Fix crash when handling certain macro expansions (authored by vedantk).
Changed prior to commit:
http://reviews.llvm.org/D16934?vs=47230&id=47232#toc
Repository:
rL LLVM
http://reviews.llvm.org/D16934
Files:
cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
cfe/trunk/test/CoverageMapping/macro-expressions.cpp
Index: cfe/trunk/test/CoverageMapping/macro-expressions.cpp
===================================================================
--- cfe/trunk/test/CoverageMapping/macro-expressions.cpp
+++ cfe/trunk/test/CoverageMapping/macro-expressions.cpp
@@ -12,6 +12,44 @@
#define PRIo64 PRI_64_LENGTH_MODIFIER "o"
#define PRIu64 PRI_64_LENGTH_MODIFIER "u"
+#define STMT(s) s
+
+void fn1() {
+ STMT(if (1));
+ STMT(while (1));
+ STMT(for (;;));
+ STMT(if) (1);
+ STMT(while) (1);
+ STMT(for) (;;);
+ if (1)
+ STMT(if (1)
+ STMT(if (1)));
+ if (1)
+ STMT(if (1)) 0;
+ if (1)
+ STMT(while (1)) 0;
+ if (1)
+ STMT(for (;;)) 0;
+ while (1)
+ STMT(if (1)) 0;
+ while (1)
+ STMT(while (1)) 0;
+ while (1)
+ STMT(for (;;)) 0;
+ for (;;)
+ STMT(if (1)) 0;
+ for (;;)
+ STMT(while (1)) 0;
+ for (;;)
+ STMT(for (;;)) 0;
+}
+
+void STMT(fn2()) {
+}
+
+void STMT(fn3)() {
+}
+
// CHECK: foo
// CHECK-NEXT: File 0, [[@LINE+1]]:17 -> {{[0-9]+}}:2 = #0
void foo(int i) {
Index: cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
+++ cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
@@ -434,6 +434,12 @@
Visit(S);
Counter ExitCount = getRegion().getCounter();
popRegions(Index);
+
+ // The statement may be spanned by an expansion. Make sure we handle a file
+ // exit out of this expansion before moving to the next statement.
+ if (SM.isBeforeInTranslationUnit(getStart(S), S->getLocStart()))
+ MostRecentLocation = getEnd(S);
+
return ExitCount;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D16934.47232.patch
Type: text/x-patch
Size: 1630 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160208/eae91c12/attachment.bin>
More information about the cfe-commits
mailing list