[llvm-branch-commits] [cfe-branch] r318315 - Merging r315578:

Tom Stellard via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Nov 15 09:51:09 PST 2017


Author: tstellar
Date: Wed Nov 15 09:51:08 2017
New Revision: 318315

URL: http://llvm.org/viewvc/llvm-project?rev=318315&view=rev
Log:
Merging r315578:

------------------------------------------------------------------------
r315578 | abataev | 2017-10-12 06:51:32 -0700 (Thu, 12 Oct 2017) | 7 lines

[OPENMP] Fix PR34925: Fix getting thread_id lvalue for inlined regions
in C.

If we try to get the lvalue for thread_id variables in inlined regions,
we did not use the correct version of function. Fixed this bug by adding
overrided version of the function getThreadIDVariableLValue for inlined
regions.
------------------------------------------------------------------------

Added:
    cfe/branches/release_50/test/OpenMP/task_codegen.c
Modified:
    cfe/branches/release_50/lib/CodeGen/CGOpenMPRuntime.cpp

Modified: cfe/branches/release_50/lib/CodeGen/CGOpenMPRuntime.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_50/lib/CodeGen/CGOpenMPRuntime.cpp?rev=318315&r1=318314&r2=318315&view=diff
==============================================================================
--- cfe/branches/release_50/lib/CodeGen/CGOpenMPRuntime.cpp (original)
+++ cfe/branches/release_50/lib/CodeGen/CGOpenMPRuntime.cpp Wed Nov 15 09:51:08 2017
@@ -264,6 +264,13 @@ public:
     return nullptr;
   }
 
+  /// \brief Get an LValue for the current ThreadID variable.
+  LValue getThreadIDVariableLValue(CodeGenFunction &CGF) override {
+    if (OuterRegionInfo)
+      return OuterRegionInfo->getThreadIDVariableLValue(CGF);
+    llvm_unreachable("No LValue for inlined OpenMP construct");
+  }
+
   /// \brief Get the name of the capture helper.
   StringRef getHelperName() const override {
     if (auto *OuterRegionInfo = getOldCSI())

Added: cfe/branches/release_50/test/OpenMP/task_codegen.c
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_50/test/OpenMP/task_codegen.c?rev=318315&view=auto
==============================================================================
--- cfe/branches/release_50/test/OpenMP/task_codegen.c (added)
+++ cfe/branches/release_50/test/OpenMP/task_codegen.c Wed Nov 15 09:51:08 2017
@@ -0,0 +1,30 @@
+// RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -fopenmp -x c -emit-llvm %s -o - | FileCheck %s
+// RUN: %clang_cc1 -fopenmp -x c -triple x86_64-apple-darwin10 -emit-pch -o %t %s
+// RUN: %clang_cc1 -fopenmp -x c -triple x86_64-apple-darwin10 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s
+// expected-no-diagnostics
+#ifndef HEADER
+#define HEADER
+
+void foo();
+
+// CHECK-LABEL: @main
+int main() {
+  // CHECK: call i32 @__kmpc_global_thread_num(
+  // CHECK: call i8* @__kmpc_omp_task_alloc(
+  // CHECK: call i32 @__kmpc_omp_task(
+#pragma omp task
+  {
+#pragma omp taskgroup
+    {
+#pragma omp task
+      foo();
+    }
+  }
+  // CHECK: ret i32 0
+  return 0;
+}
+// CHECK: call void @__kmpc_taskgroup(
+// CHECK: call i8* @__kmpc_omp_task_alloc(
+// CHECK: call i32 @__kmpc_omp_task(
+// CHECK: call void @__kmpc_end_taskgroup(
+#endif




More information about the llvm-branch-commits mailing list