[flang-commits] [flang] bc99d56 - [NFC][Flang][OpenMP] Refactor getting ompobject symbol
via flang-commits
flang-commits at lists.llvm.org
Wed Jun 8 09:29:36 PDT 2022
Author: PeixinQiao
Date: 2022-06-09T00:29:07+08:00
New Revision: bc99d56589d86fbd7280b525d0889ca591012a6f
URL: https://github.com/llvm/llvm-project/commit/bc99d56589d86fbd7280b525d0889ca591012a6f
DIFF: https://github.com/llvm/llvm-project/commit/bc99d56589d86fbd7280b525d0889ca591012a6f.diff
LOG: [NFC][Flang][OpenMP] Refactor getting ompobject symbol
Getting ompobject symbol is needed in multiple places and will be
needed later for the lowering of other constructs/clauses such as
copyin clause. Extract them into one function.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D127280
Added:
Modified:
flang/lib/Lower/OpenMP.cpp
Removed:
################################################################################
diff --git a/flang/lib/Lower/OpenMP.cpp b/flang/lib/Lower/OpenMP.cpp
index d53617c7bd59d..e0028cc0e9b6c 100644
--- a/flang/lib/Lower/OpenMP.cpp
+++ b/flang/lib/Lower/OpenMP.cpp
@@ -44,23 +44,27 @@ getDesignatorNameIfDataRef(const Fortran::parser::Designator &designator) {
return dataRef ? std::get_if<Fortran::parser::Name>(&dataRef->u) : nullptr;
}
+static Fortran::semantics::Symbol *
+getOmpObjectSymbol(const Fortran::parser::OmpObject &ompObject) {
+ Fortran::semantics::Symbol *sym = nullptr;
+ std::visit(Fortran::common::visitors{
+ [&](const Fortran::parser::Designator &designator) {
+ if (const Fortran::parser::Name *name =
+ getDesignatorNameIfDataRef(designator)) {
+ sym = name->symbol;
+ }
+ },
+ [&](const Fortran::parser::Name &name) { sym = name.symbol; }},
+ ompObject.u);
+ return sym;
+}
+
template <typename T>
static void createPrivateVarSyms(Fortran::lower::AbstractConverter &converter,
const T *clause) {
- Fortran::semantics::Symbol *sym = nullptr;
const Fortran::parser::OmpObjectList &ompObjectList = clause->v;
for (const Fortran::parser::OmpObject &ompObject : ompObjectList.v) {
- std::visit(
- Fortran::common::visitors{
- [&](const Fortran::parser::Designator &designator) {
- if (const Fortran::parser::Name *name =
- getDesignatorNameIfDataRef(designator)) {
- sym = name->symbol;
- }
- },
- [&](const Fortran::parser::Name &name) { sym = name.symbol; }},
- ompObject.u);
-
+ Fortran::semantics::Symbol *sym = getOmpObjectSymbol(ompObject);
// Privatization for symbols which are pre-determined (like loop index
// variables) happen separately, for everything else privatize here
if constexpr (std::is_same_v<T, Fortran::parser::OmpClause::Firstprivate>) {
@@ -204,17 +208,8 @@ static void genObjectList(const Fortran::parser::OmpObjectList &objectList,
}
};
for (const Fortran::parser::OmpObject &ompObject : objectList.v) {
- std::visit(Fortran::common::visitors{
- [&](const Fortran::parser::Designator &designator) {
- if (const Fortran::parser::Name *name =
- getDesignatorNameIfDataRef(designator)) {
- addOperands(*name->symbol);
- }
- },
- [&](const Fortran::parser::Name &name) {
- addOperands(*name.symbol);
- }},
- ompObject.u);
+ Fortran::semantics::Symbol *sym = getOmpObjectSymbol(ompObject);
+ addOperands(*sym);
}
}
More information about the flang-commits
mailing list