[flang] This adds the lowering stubs for Open MP.
authorEric Schweitz <eschweitz@nvidia.com>
Wed, 27 May 2020 21:18:40 +0000 (14:18 -0700)
committerEric Schweitz <eschweitz@nvidia.com>
Mon, 1 Jun 2020 16:11:53 +0000 (09:11 -0700)
The lowering bridge will call these lowering hooks to process the Open
MP directives that it iterates over in the PFT.  This is a mock
interface without an implementation in this patch.

Reviewed By: kiranchandramohan

Differential Revision: https://reviews.llvm.org/D80815

flang/include/flang/Lower/AbstractConverter.h [new file with mode: 0644]
flang/include/flang/Lower/OpenMP.h [new file with mode: 0644]
flang/lib/Lower/CMakeLists.txt
flang/lib/Lower/OpenMP.cpp [new file with mode: 0644]

diff --git a/flang/include/flang/Lower/AbstractConverter.h b/flang/include/flang/Lower/AbstractConverter.h
new file mode 100644 (file)
index 0000000..0716b84
--- /dev/null
@@ -0,0 +1,19 @@
+//===-- Lower/AbstractConverter.h -------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef FORTRAN_LOWER_ABSTRACTCONVERTER_H
+#define FORTRAN_LOWER_ABSTRACTCONVERTER_H
+
+namespace Fortran::lower {
+
+// temporary stub
+class AbstractConverter;
+
+} // namespace Fortran::lower
+
+#endif // FORTRAN_LOWER_ABSTRACTCONVERTER_H
diff --git a/flang/include/flang/Lower/OpenMP.h b/flang/include/flang/Lower/OpenMP.h
new file mode 100644 (file)
index 0000000..0b273a6
--- /dev/null
@@ -0,0 +1,35 @@
+//===-- Lower/OpenMP.h -- lower Open MP directives --------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef FORTRAN_LOWER_OPENMP_H
+#define FORTRAN_LOWER_OPENMP_H
+
+namespace Fortran {
+namespace parser {
+struct OpenMPConstruct;
+struct OmpEndLoopDirective;
+} // namespace parser
+
+namespace lower {
+
+class AbstractConverter;
+
+namespace pft {
+struct Evaluation;
+} // namespace pft
+
+void genOpenMPConstruct(AbstractConverter &, pft::Evaluation &,
+                        const parser::OpenMPConstruct &);
+
+void genOpenMPEndLoop(AbstractConverter &, pft::Evaluation &,
+                      const parser::OmpEndLoopDirective &);
+
+} // namespace lower
+} // namespace Fortran
+
+#endif // FORTRAN_LOWER_OPENMP_H
index 6cbcfc3..9e1dbc7 100644 (file)
@@ -1,5 +1,6 @@
 
 add_flang_library(FortranLower
+  OpenMP.cpp
   PFTBuilder.cpp
 
   LINK_COMPONENTS
diff --git a/flang/lib/Lower/OpenMP.cpp b/flang/lib/Lower/OpenMP.cpp
new file mode 100644 (file)
index 0000000..ad75eff
--- /dev/null
@@ -0,0 +1,26 @@
+//===-- OpenMP.cpp -- Open MP directive lowering --------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "flang/Lower/OpenMP.h"
+#include "flang/Lower/AbstractConverter.h"
+#include "flang/Lower/PFTBuilder.h"
+#include "flang/Parser/parse-tree.h"
+
+#define TODO() llvm_unreachable("not yet implemented")
+
+void Fortran::lower::genOpenMPConstruct(
+    Fortran::lower::AbstractConverter &, Fortran::lower::pft::Evaluation &,
+    const Fortran::parser::OpenMPConstruct &) {
+  TODO();
+}
+
+void Fortran::lower::genOpenMPEndLoop(
+    Fortran::lower::AbstractConverter &, Fortran::lower::pft::Evaluation &,
+    const Fortran::parser::OmpEndLoopDirective &) {
+  TODO();
+}