Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
clang/test/OpenMP/sections_codegen.cpp
Show First 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | |||||
// CHECK: [[INNER_LOOP_BODY]] | // CHECK: [[INNER_LOOP_BODY]] | ||||
// <<TRUE>> - > <BODY> | // <<TRUE>> - > <BODY> | ||||
// CHECK: [[IV:%.+]] = load i32, ptr [[IV_PTR]] | // CHECK: [[IV:%.+]] = load i32, ptr [[IV_PTR]] | ||||
// CHECK: switch i32 [[IV]], label %[[SECTIONS_EXIT:.+]] [ | // CHECK: switch i32 [[IV]], label %[[SECTIONS_EXIT:.+]] [ | ||||
// CHECK-NEXT: i32 0, label %[[SECTIONS_CASE0:.+]] | // CHECK-NEXT: i32 0, label %[[SECTIONS_CASE0:.+]] | ||||
// CHECK-NEXT: i32 1, label %[[SECTIONS_CASE1:.+]] | // CHECK-NEXT: i32 1, label %[[SECTIONS_CASE1:.+]] | ||||
#pragma omp section | #pragma omp section | ||||
// CHECK: [[SECTIONS_CASE0]] | // CHECK: [[SECTIONS_CASE0]] | ||||
// CHECK-NEXT: invoke void @{{.*}}foo{{.*}}() | // CHECK-NEXT: call unwindabort void @{{.*}}foo{{.*}}() | ||||
// CHECK: br label %[[SECTIONS_EXIT]] | // CHECK: br label %[[SECTIONS_EXIT]] | ||||
foo(); | foo(); | ||||
#pragma omp section | #pragma omp section | ||||
// CHECK: [[SECTIONS_CASE1]] | // CHECK: [[SECTIONS_CASE1]] | ||||
// CHECK-NEXT: invoke void @{{.*}}bar{{.*}}() | // CHECK-NEXT: call unwindabort void @{{.*}}bar{{.*}}() | ||||
// CHECK: br label %[[SECTIONS_EXIT]] | // CHECK: br label %[[SECTIONS_EXIT]] | ||||
bar(); | bar(); | ||||
// CHECK: [[SECTIONS_EXIT]] | // CHECK: [[SECTIONS_EXIT]] | ||||
// <<++IV;>> | // <<++IV;>> | ||||
// CHECK: [[IV:%.+]] = load i32, ptr [[IV_PTR]] | // CHECK: [[IV:%.+]] = load i32, ptr [[IV_PTR]] | ||||
// CHECK-NEXT: [[INC:%.+]] = add nsw i32 [[IV]], 1 | // CHECK-NEXT: [[INC:%.+]] = add nsw i32 [[IV]], 1 | ||||
// CHECK-NEXT: store i32 [[INC]], ptr [[IV_PTR]] | // CHECK-NEXT: store i32 [[INC]], ptr [[IV_PTR]] | ||||
// CHECK-NEXT: br label %[[INNER_FOR_COND]] | // CHECK-NEXT: br label %[[INNER_FOR_COND]] | ||||
Show All 10 Lines | |||||
// CHECK-NOT: __kmpc_cancel_barrier | // CHECK-NOT: __kmpc_cancel_barrier | ||||
return tmain<int>(); | return tmain<int>(); | ||||
} | } | ||||
// CHECK-LABEL: tmain | // CHECK-LABEL: tmain | ||||
// CHECK: call void {{.*}} @__kmpc_fork_call( | // CHECK: call void {{.*}} @__kmpc_fork_call( | ||||
// CHECK-NOT: __kmpc_global_thread_num | // CHECK-NOT: __kmpc_global_thread_num | ||||
// CHECK: call void @__kmpc_for_static_init_4( | // CHECK: call void @__kmpc_for_static_init_4( | ||||
// CHECK: invoke void @{{.*}}foo{{.*}}() | // CHECK: call unwindabort void @{{.*}}foo{{.*}}() | ||||
// CHECK-NEXT: unwind label %[[TERM_LPAD:.+]] | |||||
// CHECK: call void @__kmpc_for_static_fini( | // CHECK: call void @__kmpc_for_static_fini( | ||||
// CHECK: call void @__kmpc_barrier(ptr [[IMPLICIT_BARRIER_SECTIONS_LOC]], | // CHECK: call void @__kmpc_barrier(ptr [[IMPLICIT_BARRIER_SECTIONS_LOC]], | ||||
// CHECK: ret | // CHECK: ret | ||||
// CHECK: [[TERM_LPAD]] | |||||
// CHECK: call void @__clang_call_terminate(ptr | |||||
// CHECK-NEXT: unreachable | |||||
#endif | #endif |