[flang-commits] [flang] [flang][openacc] Check trip count invariance with other IVs (PR #79906)
Slava Zakharin via flang-commits
flang-commits at lists.llvm.org
Tue Jan 30 09:53:06 PST 2024
================
@@ -1250,10 +1256,41 @@ void AccAttributeVisitor::CheckAssociatedLoopIndex(
return nullptr;
};
- const auto &outer{std::get<std::optional<parser::DoConstruct>>(x.t)};
- for (const parser::DoConstruct *loop{&*outer}; loop && level > 0;) {
+ auto checkExprHasSymbols = [&](llvm::SmallVector<Symbol *> &ivs,
+ semantics::UnorderedSymbolSet &symbols) {
+ for (auto iv : ivs) {
+ if (symbols.count(*iv) != 0) {
+ context_.Say(GetContext().directiveSource,
+ "Trip count must be computable and invariant"_err_en_US);
+ }
+ }
+ };
+
+ Symbol::Flag flag;
+ llvm::SmallVector<Symbol *> ivs;
+ using Bounds = parser::LoopControl::Bounds;
+ for (const parser::DoConstruct *loop{&outerDoConstruct}; loop && level > 0;) {
// Go through all nested loops to ensure index variable exists.
- GetLoopIndex(*loop);
+ if (const parser::Name * ivName{GetLoopIndex(*loop)}) {
+ if (auto *symbol{ResolveAcc(*ivName, flag, currScope())}) {
+ if (auto &control = loop->GetLoopControl()) {
----------------
vzakhari wrote:
nit: I see a mix of var initialization styles (via `{}` and `=`). You may consider sticking to one :)
https://github.com/llvm/llvm-project/pull/79906
More information about the flang-commits
mailing list