================
@@ -548,19 +357,16 @@ class DoConcurrentConversionPass
       return;
     }
 
-    llvm::DenseSet<fir::DoLoopOp> concurrentLoopsToSkip;
+    llvm::DenseSet<fir::DoConcurrentOp> concurrentLoopsToSkip;
----------------
ergawy wrote:

> I'm not certain that is guaranteed.

ops are walked [in 
pre-order](https://github.com/llvm/llvm-project/blob/main/mlir/lib/Transforms/Utils/DialectConversion.cpp#L2679).
 So the parent op is guaranteed to be traversed before the nested ones.

> could we instead now skip any fir::DoConcurrentOp which has an ancestor which 
> is a fir::DoConcurrentOp?

The problem is that we clone region of the parent `do concurrent` op to the 
newly created set of OMP ops including any nested `do concurrent` loops. 
Therefore, the condition of checking for a `do concurrent` ansector will not 
apply anymore.

I also do not like the gloabl list that much tbh. I am trying to think of a 
better solution.

https://github.com/llvm/llvm-project/pull/138489
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to