diff options
Diffstat (limited to 'flang/lib')
| -rw-r--r-- | flang/lib/Lower/OpenMP/Clauses.cpp | 15 | ||||
| -rw-r--r-- | flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp | 22 | ||||
| -rw-r--r-- | flang/lib/Parser/prescan.cpp | 2 | ||||
| -rw-r--r-- | flang/lib/Semantics/check-omp-structure.cpp | 1 | 
4 files changed, 39 insertions, 1 deletions
| diff --git a/flang/lib/Lower/OpenMP/Clauses.cpp b/flang/lib/Lower/OpenMP/Clauses.cpp index d39f9dd..0f60b47 100644 --- a/flang/lib/Lower/OpenMP/Clauses.cpp +++ b/flang/lib/Lower/OpenMP/Clauses.cpp @@ -1482,6 +1482,21 @@ ThreadLimit make(const parser::OmpClause::ThreadLimit &inp,    return ThreadLimit{/*Threadlim=*/makeExpr(inp.v, semaCtx)};  } +Threadset make(const parser::OmpClause::Threadset &inp, +               semantics::SemanticsContext &semaCtx) { +  // inp.v -> parser::OmpThreadsetClause +  using wrapped = parser::OmpThreadsetClause; + +  CLAUSET_ENUM_CONVERT( // +      convert, wrapped::ThreadsetPolicy, Threadset::ThreadsetPolicy, +      // clang-format off +      MS(Omp_Pool, Omp_Pool) +      MS(Omp_Team, Omp_Team) +      // clang-format on +  ); +  return Threadset{/*ThreadsetPolicy=*/convert(inp.v.v)}; +} +  // Threadprivate: empty  // Threads: empty diff --git a/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp b/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp index ed9e41c..ae0f5fb8 100644 --- a/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp +++ b/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp @@ -193,6 +193,28 @@ OpenACCMappableModel<fir::PointerType>::getOffsetInBytes(      mlir::Type type, mlir::Value var, mlir::ValueRange accBounds,      const mlir::DataLayout &dataLayout) const; +template <typename Ty> +bool OpenACCMappableModel<Ty>::hasUnknownDimensions(mlir::Type type) const { +  assert(fir::isa_ref_type(type) && "expected FIR reference type"); +  return fir::hasDynamicSize(fir::unwrapRefType(type)); +} + +template bool OpenACCMappableModel<fir::ReferenceType>::hasUnknownDimensions( +    mlir::Type type) const; + +template bool OpenACCMappableModel<fir::HeapType>::hasUnknownDimensions( +    mlir::Type type) const; + +template bool OpenACCMappableModel<fir::PointerType>::hasUnknownDimensions( +    mlir::Type type) const; + +template <> +bool OpenACCMappableModel<fir::BaseBoxType>::hasUnknownDimensions( +    mlir::Type type) const { +  // Descriptor-based entities have dimensions encoded. +  return false; +} +  static llvm::SmallVector<mlir::Value>  generateSeqTyAccBounds(fir::SequenceType seqType, mlir::Value var,                         mlir::OpBuilder &builder) { diff --git a/flang/lib/Parser/prescan.cpp b/flang/lib/Parser/prescan.cpp index 4739da0..fd69404 100644 --- a/flang/lib/Parser/prescan.cpp +++ b/flang/lib/Parser/prescan.cpp @@ -557,7 +557,7 @@ bool Prescanner::MustSkipToEndOfLine() const {      return true; // skip over ignored columns in right margin (73:80)    } else if (*at_ == '!' && !inCharLiteral_ &&        (!inFixedForm_ || tabInCurrentLine_ || column_ != 6)) { -    return !IsCompilerDirectiveSentinel(at_); +    return !IsCompilerDirectiveSentinel(at_ + 1);    } else {      return false;    } diff --git a/flang/lib/Semantics/check-omp-structure.cpp b/flang/lib/Semantics/check-omp-structure.cpp index e094458f..aaaf1ec 100644 --- a/flang/lib/Semantics/check-omp-structure.cpp +++ b/flang/lib/Semantics/check-omp-structure.cpp @@ -3390,6 +3390,7 @@ CHECK_SIMPLE_CLAUSE(Read, OMPC_read)  CHECK_SIMPLE_CLAUSE(Threadprivate, OMPC_threadprivate)  CHECK_SIMPLE_CLAUSE(Groupprivate, OMPC_groupprivate)  CHECK_SIMPLE_CLAUSE(Threads, OMPC_threads) +CHECK_SIMPLE_CLAUSE(Threadset, OMPC_threadset)  CHECK_SIMPLE_CLAUSE(Inbranch, OMPC_inbranch)  CHECK_SIMPLE_CLAUSE(Link, OMPC_link)  CHECK_SIMPLE_CLAUSE(Indirect, OMPC_indirect) | 
