[flang-commits] [flang] [flang][OpenMP] Rewrite min/max with more than 2 arguments (PR #146423)
Tom Eccles via flang-commits
flang-commits at lists.llvm.org
Tue Jul 1 03:35:35 PDT 2025
================
@@ -350,10 +603,28 @@ genAtomicUpdate(lower::AbstractConverter &converter,
mlir::Type atomType = fir::unwrapRefType(atomAddr.getType());
// This must exist by now.
- semantics::SomeExpr input = *evaluate::GetConvertInput(assign.rhs);
- std::vector<semantics::SomeExpr> args =
- evaluate::GetTopLevelOperation(input).second;
+ semantics::SomeExpr rhs = assign.rhs;
+ semantics::SomeExpr input = *evaluate::GetConvertInput(rhs);
+ auto [opcode, args] = evaluate::GetTopLevelOperation(input);
assert(!args.empty() && "Update operation without arguments");
+
+ const semantics::SomeExpr *atomArg = [&]() {
+ for (const semantics::SomeExpr &e : args) {
----------------
tblah wrote:
```
/home/USER/llvm-project/flang/lib/Lower/OpenMP/Atomic.cpp:612:41: error: captured structured bindings are a C++20 extension [-Werror,-Wc++20-extensions]
612 | for (const semantics::SomeExpr &e : args) {
| ^
/home/USER/llvm-project/flang/lib/Lower/OpenMP/Atomic.cpp:608:17: note: 'args' declared here
608 | auto [opcode, args] = evaluate::GetTopLevelOperation(input);
| ^
1 error generated.
```
With clang 19
https://github.com/llvm/llvm-project/pull/146423
More information about the flang-commits
mailing list