1 // RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name trycatch.cpp %s | FileCheck %s 2 3 class Error { 4 }; 5 6 class ImportantError { 7 }; 8 9 class Warning { 10 }; 11 12 void func(int i) { 13 if(i % 2) 14 throw Error(); 15 else if(i == 8) 16 throw ImportantError(); 17 } 18 19 // CHECK: func 20 // CHECK-NEXT: File 0, 12:18 -> 17:2 = #0 (HasCodeBefore = 0) 21 // CHECK-NEXT: File 0, 14:5 -> 14:16 = #1 (HasCodeBefore = 0) 22 // CHECK-NEXT: File 0, 15:8 -> 15:17 = (#0 - #1) (HasCodeBefore = 0) 23 // CHECK-NEXT: File 0, 16:5 -> 16:25 = #2 (HasCodeBefore = 0) 24 25 int main() { 26 int j = 0; 27 for(int i = 0; i < 9; ++i) { 28 try { 29 func(i); 30 } catch(const Error &e) { 31 j = 1; 32 } catch(const ImportantError &e) { 33 j = 11; 34 } 35 catch(const Warning &w) { 36 j = 0; 37 } 38 } 39 return 0; 40 } 41 42 // CHECK-NEXT: main 43 // CHECK-NEXT: File 0, 25:12 -> 40:2 = #0 (HasCodeBefore = 0) 44 // CHECK-NEXT: File 0, 27:18 -> 27:23 = (#0 + #2) (HasCodeBefore = 0) 45 // CHECK-NEXT: File 0, 27:25 -> 27:28 = #2 (HasCodeBefore = 0) 46 // CHECK-NEXT: File 0, 27:30 -> 38:4 = #1 (HasCodeBefore = 0) 47 // CHECK-NEXT: File 0, 30:29 -> 32:12 = #3 (HasCodeBefore = 0) 48 // CHECK-NEXT: File 0, 32:38 -> 35:10 = #4 (HasCodeBefore = 0) 49 // CHECK-NEXT: File 0, 35:29 -> 37:6 = #5 (HasCodeBefore = 0) 50 // CHECK-NEXT: File 0, 39:3 -> 39:11 = ((#0 + #2) - #1) (HasCodeBefore = 0) 51