[flang-commits] [flang] [flang] [test] add tests for FIRToSCF (PR #176026)
Susan Tan ス-ザン タン via flang-commits
flang-commits at lists.llvm.org
Thu Jan 15 08:21:36 PST 2026
================
@@ -937,13 +937,39 @@ emitCtorDtorPair(mlir::OpBuilder &modBuilder, fir::FirOpBuilder &builder,
modBuilder, builder, operandLocation, globalOp, clause, ctorName,
/*implicit=*/false, asFortran);
- std::stringstream dtorName;
- dtorName << globalOp.getSymName().str() << "_acc_dtor";
- createDeclareGlobalOp<mlir::acc::GlobalDestructorOp,
- mlir::acc::GetDevicePtrOp, mlir::acc::DeclareExitOp,
- ExitOp>(modBuilder, builder, operandLocation, globalOp,
- clause, dtorName.str(),
- /*implicit=*/false, asFortran);
+ // `declare link` is registration-only: it does not need any teardown, so it
+ // uses a constructor only.
+ if constexpr (!std::is_same_v<ExitOp, mlir::acc::DeclareLinkOp>) {
+ std::stringstream dtorName;
+ dtorName << globalOp.getSymName().str() << "_acc_dtor";
+ createDeclareGlobalOp<mlir::acc::GlobalDestructorOp,
+ mlir::acc::GetDevicePtrOp, mlir::acc::DeclareExitOp,
+ ExitOp>(modBuilder, builder, operandLocation,
+ globalOp, clause, dtorName.str(),
+ /*implicit=*/false, asFortran);
+ }
+}
+
+/// Return true iff this OpenACC clause is valid for lowering a global/COMMON
+/// symbol via module-level global ctor/dtor. Other clauses must be handled
+/// through structured declare lowering (e.g. `present`, `deviceptr`, `copy`).
+///
+/// OpenACC 3.0:
+/// - 3000: In a Fortran module declaration section, only create, copyin,
+/// device_resident clauses are allowed.
+/// - 3001: link is also allowed.
+static bool isValidClauseForGlobalDeclare(mlir::acc::DataClause clause) {
+ switch (clause) {
+ case mlir::acc::DataClause::acc_create:
+ case mlir::acc::DataClause::acc_create_zero:
+ case mlir::acc::DataClause::acc_copyin:
+ case mlir::acc::DataClause::acc_copyin_readonly:
+ case mlir::acc::DataClause::acc_declare_device_resident:
+ case mlir::acc::DataClause::acc_declare_link:
+ return true;
+ default:
+ return false;
+ }
----------------
SusanTan wrote:
oh oops, these are changes related to a different PR that I messed up merging. Thank you for catching them! I'll change them
https://github.com/llvm/llvm-project/pull/176026
More information about the flang-commits
mailing list