[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