summaryrefslogtreecommitdiff
path: root/clang/test/CoverageMapping/trycatch.cpp
AgeCommit message (Collapse)Author
2021-03-04Revert "Revert "[Coverage] Emit gap region between statements if first ↵Zequan Wu
statements contains terminate statements."" Reland with update on test case ContinuousSyncmode/basic.c. This reverts commit fe5c2c3ca682b140dd5e640e75948363b6b25ef9.
2021-03-04Revert "[Coverage] Emit gap region between statements if first statements ↵Nico Weber
contains terminate statements." This reverts commit 2d7374a0c680f96bdcdb3d05034a93bf145d140f. Breaks ContinuousSyncMode/basic.c in check-profile on macOS.
2021-03-03[Coverage] Emit gap region between statements if first statements contains ↵Zequan Wu
terminate statements. Differential Revision: https://reviews.llvm.org/D97101
2020-09-21[Coverage] Add empty line regions to SkippedRegionsZequan Wu
Differential Revision: https://reviews.llvm.org/D84988
2020-07-28Reland [Coverage] Add comment to skipped regionsZequan Wu
Bug filled here: https://bugs.llvm.org/show_bug.cgi?id=45757. Add comment to skipped regions so we don't track execution count for lines containing only comments. Differential Revision: https://reviews.llvm.org/D83592
2020-07-22Revert abd45154b "[Coverage] Add comment to skipped regions"Hans Wennborg
This casued assertions during Chromium builds. See comment on the code review > Bug filled here: https://bugs.llvm.org/show_bug.cgi?id=45757. > Add comment to skipped regions so we don't track execution count for lines containing only comments. > > Differential Revision: https://reviews.llvm.org/D84208 This reverts commit abd45154bdb6b76c5b480455eacc8c75b08242aa and the follow-up 87d725473380652bbe845fd2fbd9c0507a55172f.
2020-07-21[Coverage] Add comment to skipped regionsZequan Wu
Bug filled here: https://bugs.llvm.org/show_bug.cgi?id=45757. Add comment to skipped regions so we don't track execution count for lines containing only comments. Differential Revision: https://reviews.llvm.org/D84208
2018-05-30[Coverage] Discard the last uncompleted deferred region in a declVedant Kumar
Discard the last uncompleted deferred region in a decl, if one exists. This prevents lines at the end of a function containing only whitespace or closing braces from being marked as uncovered, if they follow a region terminator (return/break/etc). The previous behavior was to heuristically complete deferred regions at the end of a decl. In practice this ended up being too brittle for too little gain. Users would complain that there was no way to reach full code coverage because whitespace at the end of a function would be marked uncovered. rdar://40238228 Differential Revision: https://reviews.llvm.org/D46918 llvm-svn: 333609
2017-11-09[Coverage] Emit a gap area after if conditionsVedant Kumar
The area immediately after the closing right-paren of an if condition should have a count equal to the 'then' block's count. Use a gap region to set this count, so that region highlighting for the 'then' block remains precise. This solves a problem we have with wrapped segments. Consider: 1| if (false) 2| foo(); Without a gap area starting after the condition, the wrapped segment from line 1 would make it look like line 2 is executed, when it's not. rdar://35373009 llvm-svn: 317758
2017-09-08[Coverage] Precise region termination with deferred regions (reapply)Vedant Kumar
The current coverage implementation doesn't handle region termination very precisely. Take for example an `if' statement with a `return': void f() { if (true) { return; // The `if' body's region is terminated here. } // This line gets the same coverage as the `if' condition. } If the function `f' is called, the line containing the comment will be marked as having executed once, which is not correct. The solution here is to create a deferred region after terminating a region. The deferred region is completed once the start location of the next statement is known, and is then pushed onto the region stack. In the cases where it's not possible to complete a deferred region, it can safely be dropped. Testing: lit test updates, a stage2 coverage-enabled build of clang This is a reapplication but there are no changes from the original commit. With D36813, the segment builder in llvm will be able to handle deferred regions correctly. llvm-svn: 312818
2017-08-05Revert "[Coverage] Precise region termination with deferred regions"Vedant Kumar
This reverts commit r310010. I don't think there's anything wrong with this commit, but it's causing clang to generate output that llvm-cov doesn't do a good job with and the fix isn't immediately clear. See Eli's comment in D36250 for more context. I'm reverting the clang change so the coverage bot can revert back to producing sensible output, and to give myself some time to investigate what went wrong in llvm. llvm-svn: 310154
2017-08-04[Coverage] Precise region termination with deferred regionsVedant Kumar
The current coverage implementation doesn't handle region termination very precisely. Take for example an `if' statement with a `return': void f() { if (true) { return; // The `if' body's region is terminated here. } // This line gets the same coverage as the `if' condition. } If the function `f' is called, the line containing the comment will be marked as having executed once, which is not correct. The solution here is to create a deferred region after terminating a region. The deferred region is completed once the start location of the next statement is known, and is then pushed onto the region stack. In the cases where it's not possible to complete a deferred region, it can safely be dropped. Testing: lit test updates, a stage2 coverage-enabled build of clang llvm-svn: 310010
2016-06-22[Coverage] Push a new region when handling CXXTryStmtsVedant Kumar
Push a new region for the try block and propagate execution counts through it. This ensures that catch statements get a region counter distinct from the try block's counter. llvm-svn: 273463
2016-02-04[PGO] cc1 option name change for profile instrumentationRong Xu
This patch changes cc1 option -fprofile-instr-generate to an enum option -fprofile-instrument={clang|none}. It also changes cc1 options -fprofile-instr-generate= to -fprofile-instrument-path=. The driver level option -fprofile-instr-generate and -fprofile-instr-generate= remain intact. This change will pave the way to integrate new PGO instrumentation in IR level. Review: http://reviews.llvm.org/D16730 llvm-svn: 259811
2015-04-28InstrProf: Mark code regions after throw expressions as unreachableJustin Bogner
We weren't setting regions as being unreachable after C++ throw expressions, leading to incorrect count propagations. llvm-svn: 235967
2015-02-19InstrProf: Always emit a coverage region for the condition of an ifJustin Bogner
When tools like llvm-cov show regions, it's much easier to understand what's happening if the condition of an if shows a counter as well as the body. llvm-svn: 229813
2015-02-18InstrProf: Rewrite most of coverage mapping generation in a simpler wayJustin Bogner
The coverage mapping generation code previously generated a large number of redundant coverage regions and then tried to merge similar ones back together. This then relied on some awkward heuristics to prevent combining of regions that were importantly different but happened to have the same count. The end result was inefficient and hard to follow. Now, we more carefully create the regions we actually want. This makes it much easier to create regions at precise locations as well as making the basic approach quite a bit easier to follow. There's still a fair bit of complexity here dealing with included code and macro expansions, but that's pretty hard to avoid without significantly reducing the quality of data we provide. I had to modify quite a few tests where the source ranges became more precise or the old ranges seemed to be wrong anyways, and I've added quite a few new tests since a large number of constructs didn't seem to be tested before. llvm-svn: 229748
2015-02-03InstrProf: Remove CoverageMapping::HasCodeBefore, it isn't usedJustin Bogner
llvm-svn: 228035
2014-08-19Add tests for coverage mapping generation.Alex Lorenz
This patch adds the tests for the coverage mapping generation. Most of the tests check the mapping regions produced by the generator, and one checks the llvm IR. Differential Revision: http://reviews.llvm.org/D4847 llvm-svn: 215995
2014-08-09Revert "Add tests for coverage mapping generation."Justin Bogner
I reverted one of the added tests from r215261 in r215274, since it was failing on quite a few bots. It looks like this wasn't sufficient, as we're still getting failures on windows, like the following: http://bb.pgr.jp/builders/ninja-x64-msvc-RA-centos6/builds/5378 I'm reverting this entire commit so the bots aren't blocked on these failures. This reverts commit r215261. llvm-svn: 215278
2014-08-08Add tests for coverage mapping generation.Alex Lorenz
This patch adds the tests for the coverage mapping generation. Most of the tests check the mapping regions produced by the generator, and one checks the llvm IR. Differential Revision: http://reviews.llvm.org/D4793 llvm-svn: 215261