@@ -146,13 +146,14 @@ class OmpStructureChecker
146146 bool CheckAllowedClause (llvmOmpClause clause);
147147 bool IsVariableListItem (const Symbol &sym);
148148 bool IsExtendedListItem (const Symbol &sym);
149+ bool IsCommonBlock (const Symbol &sym);
149150 std::optional<bool > IsContiguous (const parser::OmpObject &object);
150151 void CheckMultipleOccurrence (semantics::UnorderedSymbolSet &listVars,
151152 const std::list<parser::Name> &nameList, const parser::CharBlock &item,
152153 const std::string &clauseName);
153154 void CheckMultListItems ();
154- void CheckStructureElement ( const parser::OmpObjectList &ompObjectList,
155- const llvm::omp::Clause clause );
155+ void CheckStructureComponent (
156+ const parser::OmpObjectList &objects, llvm::omp::Clause clauseId );
156157 bool HasInvalidWorksharingNesting (
157158 const parser::CharBlock &, const OmpDirectiveSet &);
158159 bool IsCloselyNestedRegion (const OmpDirectiveSet &set);
@@ -171,6 +172,9 @@ class OmpStructureChecker
171172 typename IterTy = decltype (std::declval<RangeTy>().begin())>
172173 std::optional<IterTy> FindDuplicate (RangeTy &&);
173174
175+ const Symbol *GetObjectSymbol (const parser::OmpObject &object);
176+ std::optional<parser::CharBlock> GetObjectSource (
177+ const parser::OmpObject &object);
174178 void CheckDependList (const parser::DataRef &);
175179 void CheckDependArraySection (
176180 const common::Indirection<parser::ArrayElement> &, const parser::Name &);
@@ -182,8 +186,8 @@ class OmpStructureChecker
182186 const parser::OmpObjectList &objList);
183187 void CheckSymbolNames (
184188 const parser::CharBlock &source, const parser::OmpObjectList &objList);
185- void CheckIntentInPointer (
186- const parser::OmpObjectList &, const llvm::omp::Clause);
189+ void CheckIntentInPointer (SymbolSourceMap &, const llvm::omp::Clause);
190+ void CheckProcedurePointer (SymbolSourceMap &, const llvm::omp::Clause);
187191 void GetSymbolsInObjectList (const parser::OmpObjectList &, SymbolSourceMap &);
188192 void CheckDefinableObjects (SymbolSourceMap &, const llvm::omp::Clause);
189193 void CheckCopyingPolymorphicAllocatable (
@@ -220,6 +224,8 @@ class OmpStructureChecker
220224 void CheckCancellationNest (
221225 const parser::CharBlock &source, const parser::OmpCancelType::Type &type);
222226 std::int64_t GetOrdCollapseLevel (const parser::OpenMPLoopConstruct &x);
227+ void CheckReductionObjects (
228+ const parser::OmpObjectList &objects, llvm::omp::Clause clauseId);
223229 bool CheckReductionOperators (const parser::OmpClause::Reduction &);
224230 bool CheckIntrinsicOperator (
225231 const parser::DefinedOperator::IntrinsicOperator &);
@@ -232,8 +238,6 @@ class OmpStructureChecker
232238 void ChecksOnOrderedAsStandalone ();
233239 void CheckOrderedDependClause (std::optional<std::int64_t > orderedValue);
234240 void CheckReductionArraySection (const parser::OmpObjectList &ompObjectList);
235- void CheckIntentInPointerAndDefinable (
236- const parser::OmpObjectList &, const llvm::omp::Clause);
237241 void CheckArraySection (const parser::ArrayElement &arrayElement,
238242 const parser::Name &name, const llvm::omp::Clause clause);
239243 void CheckSharedBindingInOuterContext (
0 commit comments