[llvm-branch-commits] [flang] [flang][CodeGen] Run PreCGRewrite on omp reduction declare ops (PR #84954)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Mar 12 10:30:26 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-codegen
Author: Tom Eccles (tblah)
<details>
<summary>Changes</summary>
OpenMP reduction declare operations can contain FIR code which needs to be lowered to LLVM. With array reductions, these regions can contain more complicated operations which need PreCGRewriting. A similar extra case was already needed for fir::GlobalOp.
OpenMP array reductions 3/6
---
Full diff: https://github.com/llvm/llvm-project/pull/84954.diff
1 Files Affected:
- (modified) flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp (+5)
``````````diff
diff --git a/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp b/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp
index 0170b56367cf3c..dd935e71762355 100644
--- a/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp
+++ b/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp
@@ -22,6 +22,7 @@
#include "mlir/Transforms/RegionUtils.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/Debug.h"
+#include <mlir/Dialect/OpenMP/OpenMPDialect.h>
namespace fir {
#define GEN_PASS_DEF_CODEGENREWRITE
@@ -319,6 +320,10 @@ class CodeGenRewrite : public fir::impl::CodeGenRewriteBase<CodeGenRewrite> {
runOn(func, func.getBody());
for (auto global : mod.getOps<fir::GlobalOp>())
runOn(global, global.getRegion());
+ for (auto omp : mod.getOps<mlir::omp::ReductionDeclareOp>()) {
+ runOn(omp, omp.getInitializerRegion());
+ runOn(omp, omp.getReductionRegion());
+ }
}
};
``````````
</details>
https://github.com/llvm/llvm-project/pull/84954
More information about the llvm-branch-commits
mailing list