1*9caa3fbeSZequan Wu // RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -triple %itanium_abi_triple -std=c++11 -fexceptions -fcxx-exceptions -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name trymacro.cpp %s | FileCheck %s 261bf8cb9SJustin Bogner 361bf8cb9SJustin Bogner // CHECK: Z3fn1v: fn1()461bf8cb9SJustin Bognervoid fn1() try { return; } // CHECK: [[@LINE]]:12 -> [[@LINE+1]]:14 = #1 561bf8cb9SJustin Bogner catch(...) {} // CHECK: [[@LINE]]:12 -> [[@LINE]]:14 = #2 661bf8cb9SJustin Bogner 761bf8cb9SJustin Bogner #define RETURN_BLOCK { return; } 861bf8cb9SJustin Bogner 961bf8cb9SJustin Bogner // CHECK: Z3fn2v: 1061bf8cb9SJustin Bogner void fn2() try RETURN_BLOCK // CHECK: [[@LINE]]:12 -> [[@LINE+1]]:14 = #1 1161bf8cb9SJustin Bogner catch(...) {} // CHECK: [[@LINE]]:12 -> [[@LINE]]:14 = #2 1261bf8cb9SJustin Bogner 1361bf8cb9SJustin Bogner #define TRY try 1461bf8cb9SJustin Bogner #define CATCH(x) catch (x) 1561bf8cb9SJustin Bogner 1661bf8cb9SJustin Bogner // CHECK: Z3fn3v: fn3()173cfb62daSJustin Bognervoid fn3() TRY { return; } // CHECK: [[@LINE]]:15 -> [[@LINE+1]]:14 = #1 CATCH(...)1861bf8cb9SJustin BognerCATCH(...) {} // CHECK: [[@LINE]]:12 -> [[@LINE]]:14 = #2 1961bf8cb9SJustin Bogner 20049908b2SVedant Kumar // CHECK: Z3fn4v: 21049908b2SVedant Kumar #define TRY2 try { // CHECK-DAG: File 1, [[@LINE]]:18 -> [[@LINE]]:19 = #1 22049908b2SVedant Kumar void fn4() TRY2 // CHECK-DAG: Expansion,File 0, [[@LINE]]:12 -> [[@LINE]]:16 = #1 (Expanded file = 1) 23049908b2SVedant Kumar for (;;) 24049908b2SVedant Kumar return; 25049908b2SVedant Kumar } 26049908b2SVedant Kumar catch (...) {} 27049908b2SVedant Kumar 28049908b2SVedant Kumar // CHECK: Z3fn5v: 29049908b2SVedant Kumar #define TRY3 try { return; } catch (...) // CHECK-DAG: File 2, [[@LINE]]:18 -> [[@LINE]]:29 = #1 30049908b2SVedant Kumar #define TRY4 try { TRY3 { return; } } catch (...) // CHECK-DAG: Expansion,File 1, [[@LINE]]:20 -> [[@LINE]]:24 = #1 (Expanded file = 2) 31049908b2SVedant Kumar void fn5() { 32049908b2SVedant Kumar for (;;) { 33049908b2SVedant Kumar TRY4 { return; } // CHECK-DAG: Expansion,File 0, [[@LINE]]:5 -> [[@LINE]]:9 = #1 (Expanded file = 1) 34049908b2SVedant Kumar } // CHECK-DAG: File 0, [[@LINE-1]]:10 -> [[@LINE-1]]:21 = #5 35049908b2SVedant Kumar } 36049908b2SVedant Kumar 3761bf8cb9SJustin Bogner int main() { 3861bf8cb9SJustin Bogner fn1(); 3961bf8cb9SJustin Bogner fn2(); 4061bf8cb9SJustin Bogner fn3(); 41049908b2SVedant Kumar fn4(); 42049908b2SVedant Kumar fn5(); 4361bf8cb9SJustin Bogner } 44