1*89a1d03eSRichard // RUN: %check_clang_tidy %s bugprone-exception-escape %t -- -extra-arg=-fopenmp=libomp -extra-arg=-fexceptions -- 2*89a1d03eSRichard thrower()3*89a1d03eSRichardint thrower() { 4*89a1d03eSRichard throw 42; 5*89a1d03eSRichard } 6*89a1d03eSRichard ok_parallel()7*89a1d03eSRichardvoid ok_parallel() { 8*89a1d03eSRichard #pragma omp parallel 9*89a1d03eSRichard thrower(); 10*89a1d03eSRichard } 11*89a1d03eSRichard bad_for_header_XFAIL(const int a)12*89a1d03eSRichardvoid bad_for_header_XFAIL(const int a) noexcept { 13*89a1d03eSRichard #pragma omp for 14*89a1d03eSRichard for (int i = 0; i < thrower(); i++) 15*89a1d03eSRichard ; 16*89a1d03eSRichard // FIXME: this really should be caught by bugprone-exception-escape. 17*89a1d03eSRichard // https://bugs.llvm.org/show_bug.cgi?id=41102 18*89a1d03eSRichard } 19*89a1d03eSRichard ok_forloop(const int a)20*89a1d03eSRichardvoid ok_forloop(const int a) { 21*89a1d03eSRichard #pragma omp for 22*89a1d03eSRichard for (int i = 0; i < a; i++) 23*89a1d03eSRichard thrower(); 24*89a1d03eSRichard } 25*89a1d03eSRichard some_exception_just_so_that_check_clang_tidy_shuts_up()26*89a1d03eSRichardvoid some_exception_just_so_that_check_clang_tidy_shuts_up() noexcept { 27*89a1d03eSRichard thrower(); 28*89a1d03eSRichard } 29*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-3]]:6: warning: an exception may be thrown in function 'some_exception_just_so_that_check_clang_tidy_shuts_up' which should not throw exceptions 30