[flang-commits] [flang] [Flang][OpenMP] Add semantic support for Loop Sequences and OpenMP loop fuse (PR #161213)
Tom Eccles via flang-commits
flang-commits at lists.llvm.org
Tue Sep 30 02:52:10 PDT 2025
================
@@ -170,17 +183,37 @@ class CanonicalizationOfOmp {
messages_.Say(beginName.source,
"DO loop after the %s directive must have loop control"_err_en_US,
parser::ToUpperCaseLetters(beginName.source.ToString()));
+ endFuseNeeded = false;
}
} else if (auto *ompLoopCons{
GetOmpIf<parser::OpenMPLoopConstruct>(*nextIt)}) {
// We should allow UNROLL and TILE constructs to be inserted between an
// OpenMP Loop Construct and the DO loop itself
auto &nestedBeginDirective = ompLoopCons->BeginDir();
auto &nestedBeginName = nestedBeginDirective.DirName();
- if ((nestedBeginName.v == llvm::omp::Directive::OMPD_unroll ||
- nestedBeginName.v == llvm::omp::Directive::OMPD_tile) &&
- !(nestedBeginName.v == llvm::omp::Directive::OMPD_unroll &&
- beginName.v == llvm::omp::Directive::OMPD_tile)) {
+ if (llvm::omp::loopTransformationSet.test(nestedBeginName.v)) {
+ if (nestedBeginName.v == llvm::omp::Directive::OMPD_unroll &&
+ llvm::omp::loopTransformationSet.test(beginName.v)) {
+ // if a loop has been unrolled, the user can not then tile that loop
----------------
tblah wrote:
```suggestion
// if a loop has been unrolled, the user can not then transform that loop
```
https://github.com/llvm/llvm-project/pull/161213
More information about the flang-commits
mailing list