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/critical_codegen.cpp
Show All 35 Lines | |||||
// IRBUILDER-NEXT: br label %[[AFTER:[^ ,]+]] | // IRBUILDER-NEXT: br label %[[AFTER:[^ ,]+]] | ||||
// IRBUILDER: [[AFTER]] | // IRBUILDER: [[AFTER]] | ||||
// ALL-NEXT: call {{.*}}void @__kmpc_end_critical(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[UNNAMED_LOCK]]) | // ALL-NEXT: call {{.*}}void @__kmpc_end_critical(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[UNNAMED_LOCK]]) | ||||
#pragma omp critical | #pragma omp critical | ||||
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: call {{.*}}void @__kmpc_critical(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[THE_NAME_LOCK]]) | // ALL: call {{.*}}void @__kmpc_critical(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[THE_NAME_LOCK]]) | ||||
// IRBUILDER-NEXT: call {{.*}}void [[FOO]]() | // IRBUILDER-NEXT: call {{.*}}void [[FOO]]() | ||||
// NORMAL-NEXT: invoke {{.*}}void [[FOO]]() | // NORMAL-NEXT: call unwindabort {{.*}}void [[FOO]]() | ||||
// IRBUILDER-NEXT: br label %[[AFTER:[^ ,]+]] | // IRBUILDER-NEXT: br label %[[AFTER:[^ ,]+]] | ||||
// IRBUILDER: [[AFTER]] | // IRBUILDER: [[AFTER]] | ||||
// ALL: call {{.*}}void @__kmpc_end_critical(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[THE_NAME_LOCK]]) | // ALL: call {{.*}}void @__kmpc_end_critical(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[THE_NAME_LOCK]]) | ||||
#pragma omp critical(the_name) | #pragma omp critical(the_name) | ||||
foo(); | foo(); | ||||
// IRBUILDER: [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num(ptr [[DEFAULT_LOC:@.+]]) | // IRBUILDER: [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num(ptr [[DEFAULT_LOC:@.+]]) | ||||
// ALL: call {{.*}}void @__kmpc_critical_with_hint(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[THE_NAME_LOCK1]], i{{64|32}} 23) | // ALL: call {{.*}}void @__kmpc_critical_with_hint(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[THE_NAME_LOCK1]], i{{64|32}} 23) | ||||
// IRBUILDER-NEXT: call {{.*}}void [[FOO]]() | // IRBUILDER-NEXT: call {{.*}}void [[FOO]]() | ||||
// NORMAL-NEXT: invoke {{.*}}void [[FOO]]() | // NORMAL-NEXT: call unwindabort {{.*}}void [[FOO]]() | ||||
// IRBUILDER-NEXT: br label %[[AFTER:[^ ,]+]] | // IRBUILDER-NEXT: br label %[[AFTER:[^ ,]+]] | ||||
// IRBUILDER: [[AFTER]] | // IRBUILDER: [[AFTER]] | ||||
// ALL: call {{.*}}void @__kmpc_end_critical(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[THE_NAME_LOCK1]]) | // ALL: call {{.*}}void @__kmpc_end_critical(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[THE_NAME_LOCK1]]) | ||||
#pragma omp critical(the_name1) hint(23) | #pragma omp critical(the_name1) hint(23) | ||||
foo(); | foo(); | ||||
// IRBUILDER: [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num(ptr [[DEFAULT_LOC:@.+]]) | // IRBUILDER: [[GTID:%.+]] = call {{.*}}i32 @__kmpc_global_thread_num(ptr [[DEFAULT_LOC:@.+]]) | ||||
// ALL: call {{.*}}void @__kmpc_critical(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[THE_NAME_LOCK]]) | // ALL: call {{.*}}void @__kmpc_critical(ptr [[DEFAULT_LOC]], i32 [[GTID]], ptr [[THE_NAME_LOCK]]) | ||||
// NORMAL: br label | // NORMAL: br label | ||||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | |||||
// ALL-LABEL: parallel_critical | // ALL-LABEL: parallel_critical | ||||
// TERM_DEBUG-LABEL: parallel_critical | // TERM_DEBUG-LABEL: parallel_critical | ||||
void parallel_critical() { | void parallel_critical() { | ||||
#pragma omp parallel | #pragma omp parallel | ||||
#pragma omp critical | #pragma omp critical | ||||
// TERM_DEBUG-NOT: __kmpc_global_thread_num | // TERM_DEBUG-NOT: __kmpc_global_thread_num | ||||
// TERM_DEBUG: call void @__kmpc_critical({{.+}}), !dbg [[DBG_LOC_START:![0-9]+]] | // TERM_DEBUG: call void @__kmpc_critical({{.+}}), !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_critical({{.+}}), !dbg [[DBG_LOC_END:![0-9]+]] | // TERM_DEBUG: call void @__kmpc_end_critical({{.+}}), !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 |