Alexey Bataev | 36bf011 | 2015-03-10 05:15:26 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -fopenmp=libiomp5 -fexceptions -fcxx-exceptions -gline-tables-only -x c++ -emit-llvm %s -o - | FileCheck %s --check-prefix=TERM_DEBUG |
| 2 | // expected-no-diagnostics |
| 3 | |
| 4 | int a; |
| 5 | int &foo() { return a; } |
| 6 | |
| 7 | // TERM_DEBUG-LABEL: parallel_atomic |
| 8 | void parallel_atomic() { |
| 9 | #pragma omp parallel |
| 10 | { |
| 11 | #pragma omp atomic read |
| 12 | // TERM_DEBUG-NOT: __kmpc_global_thread_num |
| 13 | // TERM_DEBUG: invoke {{.*}}foo{{.*}}() |
| 14 | // TERM_DEBUG: unwind label %[[TERM_LPAD:.+]], |
| 15 | // TERM_DEBUG: load atomic i32, i32* @{{.+}} monotonic, {{.*}}!dbg [[READ_LOC:![0-9]+]] |
| 16 | foo() = a; |
| 17 | #pragma omp atomic write |
| 18 | // TERM_DEBUG-NOT: __kmpc_global_thread_num |
| 19 | // TERM_DEBUG: invoke {{.*}}foo{{.*}}() |
| 20 | // TERM_DEBUG: unwind label %[[TERM_LPAD:.+]], |
| 21 | // TERM_DEBUG-NOT: __kmpc_global_thread_num |
| 22 | // TERM_DEBUG: store atomic i32 {{%.+}}, i32* @{{.+}} monotonic, {{.*}}!dbg [[WRITE_LOC:![0-9]+]] |
Alexey Bataev | da19af4 | 2015-03-10 05:28:46 +0000 | [diff] [blame^] | 23 | // TERM_DEBUG: [[TERM_LPAD]] |
Alexey Bataev | 36bf011 | 2015-03-10 05:15:26 +0000 | [diff] [blame] | 24 | // TERM_DEBUG: call void @__clang_call_terminate |
| 25 | // TERM_DEBUG: unreachable |
| 26 | a = foo(); |
| 27 | } |
| 28 | } |
| 29 | // TERM_DEBUG-DAG: [[READ_LOC]] = !MDLocation(line: 11, |
| 30 | // TERM_DEBUG-DAG: [[WRITE_LOC]] = !MDLocation(line: 17, |