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/master_codegen.cpp
Show All 40 Lines | |||||
#pragma omp master | #pragma omp master | ||||
a = 2; | a = 2; | ||||
// IRBUILDER: [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num(ptr [[DEFAULT_LOC:@.+]]) | // IRBUILDER: [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num(ptr [[DEFAULT_LOC:@.+]]) | ||||
// ALL: [[RES:%.+]] = call {{.*}}i32 @__kmpc_master(ptr [[DEFAULT_LOC]], i32 [[GTID]]) | // ALL: [[RES:%.+]] = call {{.*}}i32 @__kmpc_master(ptr [[DEFAULT_LOC]], i32 [[GTID]]) | ||||
// ALL-NEXT: [[IS_MASTER:%.+]] = icmp ne i32 [[RES]], 0 | // ALL-NEXT: [[IS_MASTER:%.+]] = icmp ne i32 [[RES]], 0 | ||||
// ALL-NEXT: br i1 [[IS_MASTER]], label {{%?}}[[THEN:.+]], label {{%?}}[[EXIT:.+]] | // ALL-NEXT: br i1 [[IS_MASTER]], label {{%?}}[[THEN:.+]], label {{%?}}[[EXIT:.+]] | ||||
// ALL: [[THEN]] | // ALL: [[THEN]] | ||||
// IRBUILDER-NEXT: call {{.*}}void [[FOO]]() | // IRBUILDER-NEXT: call {{.*}}void [[FOO]]() | ||||
// NORMAL-NEXT: invoke {{.*}}void [[FOO]]() | // NORMAL-NEXT: call unwindabort {{.*}}void [[FOO]]() | ||||
// ALL: call {{.*}}void @__kmpc_end_master(ptr [[DEFAULT_LOC]], i32 [[GTID]]) | // ALL: call {{.*}}void @__kmpc_end_master(ptr [[DEFAULT_LOC]], i32 [[GTID]]) | ||||
// ALL-NEXT: br label {{%?}}[[EXIT]] | // ALL-NEXT: br label {{%?}}[[EXIT]] | ||||
// ALL: [[EXIT]] | // ALL: [[EXIT]] | ||||
#pragma omp master | #pragma omp master | ||||
foo(); | foo(); | ||||
// ALL-NOT: call i32 @__kmpc_master | // ALL-NOT: call i32 @__kmpc_master | ||||
// ALL-NOT: call void @__kmpc_end_master | // ALL-NOT: call void @__kmpc_end_master | ||||
return a; | return a; | ||||
Show All 36 Lines | |||||
// ALL-LABEL: parallel_master | // ALL-LABEL: parallel_master | ||||
// TERM_DEBUG-LABEL: parallel_master | // TERM_DEBUG-LABEL: parallel_master | ||||
void parallel_master() { | void parallel_master() { | ||||
#pragma omp parallel | #pragma omp parallel | ||||
#pragma omp master | #pragma omp master | ||||
// TERM_DEBUG-NOT: __kmpc_global_thread_num | // TERM_DEBUG-NOT: __kmpc_global_thread_num | ||||
// TERM_DEBUG: call i32 @__kmpc_master({{.+}}), !dbg [[DBG_LOC_START:![0-9]+]] | // TERM_DEBUG: call i32 @__kmpc_master({{.+}}), !dbg [[DBG_LOC_START:![0-9]+]] | ||||
// TERM_DEBUG: invoke void {{.*}}foo{{.*}}() | // TERM_DEBUG: call unwindabort void {{.*}}foo{{.*}}() | ||||
// TERM_DEBUG: unwind label %[[TERM_LPAD:.+]], | |||||
// TERM_DEBUG-NOT: __kmpc_global_thread_num | // TERM_DEBUG-NOT: __kmpc_global_thread_num | ||||
// TERM_DEBUG: call void @__kmpc_end_master({{.+}}), !dbg [[DBG_LOC_END:![0-9]+]] | // TERM_DEBUG: call void @__kmpc_end_master({{.+}}), !dbg [[DBG_LOC_END:![0-9]+]] | ||||
// TERM_DEBUG: [[TERM_LPAD]] | |||||
// TERM_DEBUG: call void @__clang_call_terminate | |||||
// TERM_DEBUG: unreachable | |||||
foo(); | foo(); | ||||
} | } | ||||
// TERM_DEBUG-DAG: [[DBG_LOC_START]] = !DILocation(line: [[@LINE-12]], | // TERM_DEBUG-DAG: [[DBG_LOC_START]] = !DILocation(line: [[@LINE-8]], | ||||
// TERM_DEBUG-DAG: [[DBG_LOC_END]] = !DILocation(line: [[@LINE-3]], | // TERM_DEBUG-DAG: [[DBG_LOC_END]] = !DILocation(line: [[@LINE-3]], | ||||
#endif | #endif |