[flang-commits] [clang] [clang-tools-extra] [compiler-rt] [flang] [lld] [lldb] [llvm] [mlir] [openmp] Treewide C++26/2d fixes (PR #223284)
via flang-commits
flang-commits at lists.llvm.org
Sat Sep 26 20:01:20 PDT 2026
================
@@ -6037,5 +6047,13 @@ struct CUFKernelDoConstruct {
std::tuple<Directive, std::optional<DoConstruct>> t;
};
+inline SpecificationPart::SpecificationPart(SpecificationPart &&) = default;
+inline SpecificationPart &SpecificationPart::operator=(SpecificationPart &&) = default;
+inline SpecificationPart::~SpecificationPart() = default;
+
+inline OmpApplyClause::OmpApplyClause(OmpApplyClause &&) = default;
+inline OmpApplyClause &OmpApplyClause::operator=(OmpApplyClause &&) = default;
+inline OmpApplyClause::~OmpApplyClause() = default;
+
----------------
rdong8 wrote:
The `WRAPPER_CLASS(BlockSpecificationPart, SpecificationPart);` defines a wrapper struct `BlockSpecificationPart` with a move ctor from `SpecificationPart`. Since `SpecificationPart` had an inline defaulted move ctor generated by `TUPLE_CLASS_BOILERPLATE`, this causes `SpecificationPart`'s move ctor to also be synthesized. It holds some stuff in a `std::list`, ie. `OpenMPDeclarativeConstruct`, that are still only forward declared at that point, so the new constexpr list ctors cause a compile error. Putting the definitions at the bottom of the header fixes it
https://github.com/llvm/llvm-project/pull/223284
More information about the flang-commits
mailing list