From e0f549a43ae02e65fce6c9c7a567fe3dc27bec9b Mon Sep 17 00:00:00 2001 From: Shraiysh Vaishay Date: Thu, 10 Mar 2022 22:40:23 +0530 Subject: [PATCH] [flang] Added basic connect to lower OpenMP constructs Reviewed By: clementval Differential Revision: https://reviews.llvm.org/D121382 --- flang/lib/Lower/Bridge.cpp | 12 ++++++++++-- flang/test/Lower/OpenMP/simple-barrier.f90 | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 flang/test/Lower/OpenMP/simple-barrier.f90 diff --git a/flang/lib/Lower/Bridge.cpp b/flang/lib/Lower/Bridge.cpp index e904937..b062406 100644 --- a/flang/lib/Lower/Bridge.cpp +++ b/flang/lib/Lower/Bridge.cpp @@ -20,6 +20,7 @@ #include "flang/Lower/IO.h" #include "flang/Lower/IterationSpace.h" #include "flang/Lower/Mangler.h" +#include "flang/Lower/OpenMP.h" #include "flang/Lower/PFTBuilder.h" #include "flang/Lower/Runtime.h" #include "flang/Lower/StatementContext.h" @@ -1200,8 +1201,15 @@ private: TODO(toLocation(), "OpenACCDeclarativeConstruct lowering"); } - void genFIR(const Fortran::parser::OpenMPConstruct &) { - TODO(toLocation(), "OpenMPConstruct lowering"); + void genFIR(const Fortran::parser::OpenMPConstruct &omp) { + mlir::OpBuilder::InsertPoint insertPt = builder->saveInsertionPoint(); + localSymbols.pushScope(); + Fortran::lower::genOpenMPConstruct(*this, getEval(), omp); + + for (Fortran::lower::pft::Evaluation &e : getEval().getNestedEvaluations()) + genFIR(e); + localSymbols.popScope(); + builder->restoreInsertionPoint(insertPt); } void genFIR(const Fortran::parser::OpenMPDeclarativeConstruct &) { diff --git a/flang/test/Lower/OpenMP/simple-barrier.f90 b/flang/test/Lower/OpenMP/simple-barrier.f90 new file mode 100644 index 0000000..c621b80 --- /dev/null +++ b/flang/test/Lower/OpenMP/simple-barrier.f90 @@ -0,0 +1,6 @@ +! RUN: bbc -fopenmp -emit-fir -o - %s | FileCheck %s + +subroutine sample() +! CHECK: omp.barrier +!$omp barrier +end subroutine sample -- 2.7.4