================
@@ -0,0 +1,134 @@
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -fopenmp 
-emit-llvm %s -o %t-cir.ll
+// RUN: FileCheck %s -check-prefix=CIR --input-file %t-cir.ll
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fopenmp -emit-llvm %s -o 
%t.ll
+// RUN: FileCheck %s -check-prefix=OGCG --input-file %t.ll
+
+// CIR-LABEL: define dso_local i32 @main()
+// CIR: %[[STRUCTARG:.*]] = alloca { ptr, ptr }, align 8
+// CIR: %[[VAR1:.*]] = alloca i32, i64 1, align 4
+// CIR: %[[VAR2:.*]] = alloca i32, i64 1, align 4
+// CIR: %[[VAR3:.*]] = alloca i32, i64 1, align 4
+// CIR: br label %[[ENTRY:.*]]
+
+// CIR: [[ENTRY]]:
+// CIR: %[[THREAD_NUM:.*]] = call i32 @__kmpc_global_thread_num(ptr @1)
----------------
jsjodin wrote:

It is not needed in this case, but the createParallel function in the 
OpenMPIRBuilder always generates a call. This is a case where the code paths 
diverge between clang and flang codegen. Ideally both clang and flang should 
have used the same function from the OpenMPIRBuilder and generated the same 
code. On the target offloading side we were a bit more diligent about this 
regarding the code in clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp because we 
wanted to be sure that the code generated for flang would be on par with clang 
and that the OpenMPRbuilder genrated code could be fully tested through the 
clang test suite. This was mostly related to reductions and kernel launch.

https://github.com/llvm/llvm-project/pull/178515
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to