68 lines · c
1// This testcase checks emission of DIFlagArtificial flag for outlined2// subroutines generated by compiler.3 4// REQUIRES: x86-registered-target5 6// RUN: %clang_cc1 -debug-info-kind=constructor -x c -verify -triple x86_64-pc-linux-gnu -fopenmp -emit-llvm %s -o - | FileCheck %s7// expected-no-diagnostics8 9#if defined(_WIN32)10#define __KAI_KMPC_CONVENTION __cdecl11#else12#define __KAI_KMPC_CONVENTION13#endif14 15extern int printf(const char *, ...);16extern void __KAI_KMPC_CONVENTION omp_set_num_threads(int);17extern int __KAI_KMPC_CONVENTION omp_get_thread_num(void);18 19#define N 1020 21float f[10];22void foo_simd(int low, int up) {23 for (int i = low; i < up; ++i) {24 f[i] = 0.0;25#pragma omp ordered simd26 f[i] = 1.0;27 }28}29 30int main() {31 int arr[10];32 int i;33 omp_set_num_threads(2);34#pragma omp parallel35#pragma omp single36#pragma omp taskloop num_tasks(10)37 for (i = 0; i < N; i++) {38 arr[i] = i * i;39 }40 41 for (int j = 0; j < N; j++) {42 printf("%d\n", arr[j]);43 }44 return 0;45}46 47// foo_simd is not artificial.48// CHECK-DAG: !DISubprogram(name: "foo_simd"49// CHECK-DAG-SAME: flags: DIFlagPrototyped,50 51// CHECK-DAG: !DISubprogram(name: "__captured_stmt_debug__"52// CHECK-DAG-SAME: flags: DIFlagArtificial53 54// CHECK-DAG: !DISubprogram(name: "__captured_stmt"55// CHECK-DAG-SAME: flags: DIFlagArtificial56 57// CHECK-DAG: !DISubprogram(name: "main.omp_outlined_debug__"58// CHECK-DAG-SAME: flags: DIFlagArtificial59 60// CHECK-DAG: !DISubprogram(linkageName: ".omp_task_entry."61// CHECK-DAG-SAME: flags: DIFlagArtificial62 63// CHECK-DAG: !DISubprogram(name: ".omp_outlined."64// CHECK-DAG-SAME: flags: DIFlagArtificial65 66// CHECK-DAG: !DISubprogram(name: "main.omp_outlined"67// CHECK-DAG-SAME: flags: DIFlagArtificial68