diff options
| author | Eli Friedman <efriedma@codeaurora.org> | 2017-08-08 20:10:14 +0000 |
|---|---|---|
| committer | Eli Friedman <efriedma@codeaurora.org> | 2017-08-08 20:10:14 +0000 |
| commit | 181dfe4c92ad2671a4ff5c2d91d927dd5a9958b8 (patch) | |
| tree | 72fb63de58b20761fd03f90d5e8617cfc1e6d071 /clang/test/CoverageMapping/md.cpp | |
| parent | 8a813cf646069b88b61ef0b1177327826b0d9ec6 (diff) | |
| download | bcm5719-llvm-181dfe4c92ad2671a4ff5c2d91d927dd5a9958b8.tar.gz bcm5719-llvm-181dfe4c92ad2671a4ff5c2d91d927dd5a9958b8.zip | |
[coverage] Special-case calls to noreturn functions.
The code after a noreturn call doesn't execute.
The pattern in the testcase is pretty common in LLVM (a switch with
a default case that calls llvm_unreachable).
The original version of this patch was reverted in r309995 due to a
crash. This version includes a fix for that crash (testcase in
test/CoverageMapping/md.cpp).
Differential Revision: https://reviews.llvm.org/D36250
llvm-svn: 310406
Diffstat (limited to 'clang/test/CoverageMapping/md.cpp')
| -rw-r--r-- | clang/test/CoverageMapping/md.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/test/CoverageMapping/md.cpp b/clang/test/CoverageMapping/md.cpp index 20c696c7dfb..5f2b2d61224 100644 --- a/clang/test/CoverageMapping/md.cpp +++ b/clang/test/CoverageMapping/md.cpp @@ -27,6 +27,17 @@ void foo(MD i) { #include "Inputs/md.def" } +// CHECK: bar +// CHECK-NEXT: File 0, [[@LINE+3]]:12 -> [[@LINE+8]]:2 = #0 +bool isVal1(); +bool isVal2(); +bool bar() { + #define HANDLE_MD(X) is##X() || + return +#include "Inputs/md.def" + 0; +} + int main(int argc, const char *argv[]) { foo(MD::Val1); return 0; |

