[flang-commits] [flang] [flang][MIF] Fix team_type usage in all MIF operations #205953 (PR #214207)
via flang-commits
flang-commits at lists.llvm.org
Wed Aug 5 05:08:00 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-fir-hlfir
Author: Jean-Didier PAILLEUX (JDPailleux)
<details>
<summary>Changes</summary>
This PR resolves the issue #<!-- -->205953. Its purpose is to correct the use of `team_type` by lowering it to Addr rather than to Box.
---
Patch is 97.31 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/214207.diff
11 Files Affected:
- (modified) flang/include/flang/Optimizer/Dialect/MIF/MIFOps.td (+8-8)
- (modified) flang/lib/Lower/MultiImageFortran.cpp (+3-3)
- (modified) flang/lib/Optimizer/Builder/IntrinsicCall.cpp (+7-4)
- (modified) flang/lib/Optimizer/Transforms/MIFOpConversion.cpp (+21-25)
- (modified) flang/test/Fir/MIF/change_team.mlir (+12-16)
- (modified) flang/test/Fir/MIF/change_team2.mlir (+65-72)
- (modified) flang/test/Fir/MIF/form_team.mlir (+25-31)
- (modified) flang/test/Fir/MIF/get_team.mlir (+39-40)
- (modified) flang/test/Fir/MIF/sync_team.mlir (+16-22)
- (modified) flang/test/Fir/MIF/team_number.mlir (+10-13)
- (modified) flang/test/Fir/MIF/this_image.mlir (+19-32)
``````````diff
diff --git a/flang/include/flang/Optimizer/Dialect/MIF/MIFOps.td b/flang/include/flang/Optimizer/Dialect/MIF/MIFOps.td
index 337a9eab0b087..cdc81ab1b9764 100644
--- a/flang/include/flang/Optimizer/Dialect/MIF/MIFOps.td
+++ b/flang/include/flang/Optimizer/Dialect/MIF/MIFOps.td
@@ -67,7 +67,7 @@ def mif_NumImagesOp : mif_Op<"num_images", [AttrSizedOperandSegments]> {
}];
let arguments = (ins Optional<AnyInteger>:$team_number,
- Optional<AnyRefOrBoxType>:$team);
+ Optional<AnyReferenceLike>:$team);
let results = (outs I32:$res);
let builders = [OpBuilder<(ins CArg<"mlir::Value", "{}">:$teamArg)>];
@@ -108,7 +108,7 @@ def mif_ThisImageOp : mif_Op<"this_image", [AttrSizedOperandSegments]> {
}];
let arguments = (ins Optional<AnyType>:$coarray, Optional<AnyInteger>:$dim,
- Optional<AnyRefOrBoxType>:$team);
+ Optional<AnyReferenceLike>:$team);
let results = (outs AnyType:$res);
let builders = [OpBuilder<(ins "mlir::Value":$coarray, "mlir::Value":$dim,
@@ -151,7 +151,7 @@ def mif_ImageIndexOp : mif_Op<"image_index", [AttrSizedOperandSegments]> {
}];
let arguments = (ins AnyType:$coarray, fir_BoxType:$sub,
- Optional<AnyRefOrBoxType>:$team, Optional<AnyInteger>:$team_number);
+ Optional<AnyReferenceLike>:$team, Optional<AnyInteger>:$team_number);
let builders = [OpBuilder<(ins "mlir::Value":$coarray, "mlir::Value":$sub,
"mlir::Value":$team)>];
@@ -292,7 +292,7 @@ def mif_SyncMemoryOp : mif_Op<"sync_memory", [AttrSizedOperandSegments]> {
def mif_SyncTeamOp : mif_Op<"sync_team", [AttrSizedOperandSegments]> {
let summary = "Performs a synchronization of the team, identified by `team`";
- let arguments = (ins AnyRefOrBoxType:$team, Optional<AnyReferenceLike>:$stat,
+ let arguments = (ins AnyReferenceLike:$team, Optional<AnyReferenceLike>:$stat,
Optional<AnyRefOrBoxType>:$errmsg);
let assemblyFormat = [{
$team (`stat` $stat^ )?
@@ -418,7 +418,7 @@ def mif_FormTeamOp : mif_Op<"form_team", [AttrSizedOperandSegments]> {
}];
let arguments = (ins AnyIntegerType:$team_number,
- Arg<fir_BoxType, "", [MemWrite]>:$team_var,
+ Arg<AnyReferenceLike, "", [MemWrite]>:$team_var,
Optional<AnyIntegerType>:$new_index,
Arg<Optional<AnyReferenceLike>, "", [MemWrite]>:$stat,
Arg<Optional<AnyRefOrBoxType>, "", [MemWrite]>:$errmsg);
@@ -471,7 +471,7 @@ def mif_ChangeTeamOp : region_Op<"change_team", [AttrSizedOperandSegments]> {
}
}];
- let arguments = (ins AnyRefOrBoxType:$team,
+ let arguments = (ins AnyReferenceLike:$team,
Arg<Optional<AnyReferenceLike>, "", [MemWrite]>:$stat,
Arg<Optional<AnyRefOrBoxType>, "", [MemWrite]>:$errmsg);
@@ -511,7 +511,7 @@ def mif_GetTeamOp : mif_Op<"get_team", []> {
}];
let arguments = (ins Optional<AnyIntegerType>:$level);
- let results = (outs fir_BoxType:$team);
+ let results = (outs AnyType:$team);
let assemblyFormat = [{
(`level` $level^ )?
@@ -527,7 +527,7 @@ def mif_TeamNumberOp : mif_Op<"team_number", []> {
If `team` is absent, the team specified is the current team.
}];
- let arguments = (ins Optional<AnyRefOrBoxType>:$team);
+ let arguments = (ins Optional<AnyReferenceLike>:$team);
let results = (outs I64);
let assemblyFormat = [{
diff --git a/flang/lib/Lower/MultiImageFortran.cpp b/flang/lib/Lower/MultiImageFortran.cpp
index 66ffca0b850dd..12149a537ec29 100644
--- a/flang/lib/Lower/MultiImageFortran.cpp
+++ b/flang/lib/Lower/MultiImageFortran.cpp
@@ -99,7 +99,7 @@ void Fortran::lower::genSyncTeamStatement(
std::get<Fortran::parser::TeamValue>(stmt.t);
const SomeExpr *teamExpr = Fortran::semantics::GetExpr(teamValue);
mlir::Value team =
- fir::getBase(converter.genExprBox(loc, *teamExpr, stmtCtx));
+ fir::getBase(converter.genExprAddr(loc, *teamExpr, stmtCtx));
// Handle STAT and ERRMSG values
const std::list<Fortran::parser::StatOrErrmsg> &statOrErrList =
@@ -163,7 +163,7 @@ Fortran::lower::genChangeTeamStmt(Fortran::lower::AbstractConverter &converter,
// Handle TEAM-VALUE
const auto *teamExpr =
Fortran::semantics::GetExpr(std::get<Fortran::parser::TeamValue>(stmt.t));
- team = fir::getBase(converter.genExprBox(loc, *teamExpr, stmtCtx));
+ team = fir::getBase(converter.genExprAddr(loc, *teamExpr, stmtCtx));
return mif::ChangeTeamOp::create(builder, loc, team, statAddr, errMsgAddr);
}
@@ -253,7 +253,7 @@ void Fortran::lower::genFormTeamStatement(
// Handle TEAM-VARIABLE
const auto *teamExpr = Fortran::semantics::GetExpr(
std::get<Fortran::parser::TeamVariable>(stmt.t));
- team = fir::getBase(converter.genExprBox(loc, *teamExpr, stmtCtx));
+ team = fir::getBase(converter.genExprAddr(loc, *teamExpr, stmtCtx));
mif::FormTeamOp::create(builder, loc, teamNumber, team, newIndex, statAddr,
errMsgAddr);
diff --git a/flang/lib/Optimizer/Builder/IntrinsicCall.cpp b/flang/lib/Optimizer/Builder/IntrinsicCall.cpp
index 6987092ea921d..f349d41888780 100644
--- a/flang/lib/Optimizer/Builder/IntrinsicCall.cpp
+++ b/flang/lib/Optimizer/Builder/IntrinsicCall.cpp
@@ -643,7 +643,7 @@ static constexpr IntrinsicHandler handlers[]{
{"null", &I::genNull, {{{"mold", asInquired}}}, /*isElemental=*/false},
{"num_images",
&I::genNumImages,
- {{{"team_number", asValue}, {"team", asBox}}},
+ {{{"team_number", asValue}, {"team", asAddr}}},
/*isElemental*/ false},
{"pack",
&I::genPack,
@@ -830,13 +830,13 @@ static constexpr IntrinsicHandler handlers[]{
{"tanpi", &I::genTanpi},
{"team_number",
&I::genTeamNumber,
- {{{"team", asBox, handleDynamicOptional}}},
+ {{{"team", asAddr, handleDynamicOptional}}},
/*isElemental=*/false},
{"this_image",
&I::genThisImage,
{{{"coarray", asBox},
{"dim", asValue},
- {"team", asBox, handleDynamicOptional}}},
+ {"team", asAddr, handleDynamicOptional}}},
/*isElemental=*/false},
{"time", &I::genTime, {}, /*isElemental=*/false},
{"timef", &I::genTimef, {}, /*isElemental=*/false},
@@ -4275,7 +4275,7 @@ mlir::Value IntrinsicLibrary::genGetTeam(mlir::Type resultType,
llvm::ArrayRef<mlir::Value> args) {
checkCoarrayEnabled(loc, options);
assert(args.size() == 1);
- return mif::GetTeamOp::create(builder, loc, fir::BoxType::get(resultType),
+ return mif::GetTeamOp::create(builder, loc, builder.getRefType(resultType),
/*level*/ args[0]);
}
@@ -8355,6 +8355,9 @@ IntrinsicLibrary::genThisImage(mlir::Type resultType,
const bool dimIsAbsent = args.size() < 3;
mlir::Value team = fir::getBase(args[args.size() - 1]);
+ if (team)
+ team = fir::BoxAddrOp::create(builder, loc, team);
+
if (!coarrayIsAbsent && dimIsAbsent) {
mlir::Type eleTy = hlfir::getFortranElementType(resultType);
mlir::Type thisImageResultTy = fir::BoxType::get(
diff --git a/flang/lib/Optimizer/Transforms/MIFOpConversion.cpp b/flang/lib/Optimizer/Transforms/MIFOpConversion.cpp
index 77dfb5ac957ea..d5b76e000212b 100644
--- a/flang/lib/Optimizer/Transforms/MIFOpConversion.cpp
+++ b/flang/lib/Optimizer/Transforms/MIFOpConversion.cpp
@@ -472,12 +472,11 @@ struct MIFThisImageOpConversion
mlir::Type i64Ty = builder.getI64Type();
mlir::Type i32Ty = builder.getI32Type();
mlir::Type boxTy = fir::BoxType::get(rewriter.getNoneType());
+ mlir::Type refTy = builder.getRefType(rewriter.getNoneType());
mlir::Value teamArg = op.getTeam();
if (!op.getTeam())
- teamArg = fir::AbsentOp::create(builder, loc, boxTy);
- else
- teamArg = builder.createBox(loc, teamArg);
+ teamArg = fir::AbsentOp::create(builder, loc, refTy);
if (op.getCoarray()) {
llvm::SmallVector<mlir::Value> args;
@@ -494,7 +493,7 @@ struct MIFThisImageOpConversion
ftype = mlir::FunctionType::get(builder.getContext(),
/*inputs*/
{boxTy, builder.getRefType(i32Ty),
- boxTy, builder.getRefType(i64Ty)},
+ refTy, builder.getRefType(i64Ty)},
/*results*/ {});
funcOp = builder.createFunction(
loc, getPRIFProcName("this_image_with_dim"), ftype);
@@ -510,7 +509,7 @@ struct MIFThisImageOpConversion
result = builder.createBox(loc, builder.createTemporary(loc, resTy));
ftype = mlir::FunctionType::get(
builder.getContext(),
- /*inputs*/ {boxTy, boxTy, fir::BoxType::get(resTy)},
+ /*inputs*/ {boxTy, refTy, fir::BoxType::get(resTy)},
/*results*/ {});
funcOp = builder.createFunction(
loc, getPRIFProcName("this_image_with_coarray"), ftype);
@@ -529,7 +528,7 @@ struct MIFThisImageOpConversion
mlir::Value result = builder.createTemporary(loc, i32Ty);
mlir::FunctionType ftype = mlir::FunctionType::get(
builder.getContext(),
- /*inputs*/ {boxTy, builder.getRefType(i32Ty)}, /*results*/ {});
+ /*inputs*/ {refTy, builder.getRefType(i32Ty)}, /*results*/ {});
mlir::func::FuncOp funcOp = builder.createFunction(
loc, getPRIFProcName("this_image_no_coarray"), ftype);
@@ -557,7 +556,7 @@ struct MIFNumImagesOpConversion
mlir::Type i32Ty = builder.getI32Type();
mlir::Type i64Ty = builder.getI64Type();
- mlir::Type boxTy = fir::BoxType::get(rewriter.getNoneType());
+ mlir::Type refTy = builder.getRefType(rewriter.getNoneType());
mlir::Value result = builder.createTemporary(loc, i32Ty);
mlir::func::FuncOp funcOp;
@@ -574,7 +573,7 @@ struct MIFNumImagesOpConversion
mlir::FunctionType ftype =
mlir::FunctionType::get(builder.getContext(),
/*inputs*/
- {boxTy, builder.getRefType(i32Ty)},
+ {refTy, builder.getRefType(i32Ty)},
/*results*/ {});
funcOp = builder.createFunction(
loc, getPRIFProcName("num_images_with_team"), ftype);
@@ -722,11 +721,11 @@ struct MIFSyncTeamOpConversion
fir::FirOpBuilder builder(rewriter, mod);
mlir::Location loc = op.getLoc();
- mlir::Type boxTy = fir::BoxType::get(builder.getNoneType());
+ mlir::Type refTy = builder.getRefType(builder.getNoneType());
mlir::Type errmsgTy = getPRIFErrmsgType(builder);
mlir::FunctionType ftype = mlir::FunctionType::get(
builder.getContext(),
- /*inputs*/ {boxTy, getPRIFStatType(builder), errmsgTy, errmsgTy},
+ /*inputs*/ {refTy, getPRIFStatType(builder), errmsgTy, errmsgTy},
/*results*/ {});
mlir::func::FuncOp funcOp =
builder.createFunction(loc, getPRIFProcName("sync_team"), ftype);
@@ -882,11 +881,11 @@ struct MIFFormTeamOpConversion
fir::FirOpBuilder builder(rewriter, mod);
mlir::Location loc = op.getLoc();
mlir::Type errmsgTy = getPRIFErrmsgType(builder);
- mlir::Type boxTy = fir::BoxType::get(builder.getNoneType());
+ mlir::Type refTy = builder.getRefType(builder.getNoneType());
mlir::FunctionType ftype = mlir::FunctionType::get(
builder.getContext(),
/*inputs*/
- {builder.getRefType(builder.getI64Type()), boxTy,
+ {builder.getRefType(builder.getI64Type()), refTy,
builder.getRefType(builder.getI32Type()), getPRIFStatType(builder),
errmsgTy, errmsgTy},
/*results*/ {});
@@ -960,10 +959,10 @@ struct MIFChangeTeamOpConversion
mlir::Location loc = op.getLoc();
mlir::Type errmsgTy = getPRIFErrmsgType(builder);
- mlir::Type boxTy = fir::BoxType::get(builder.getNoneType());
+ mlir::Type refTy = builder.getRefType(builder.getNoneType());
mlir::FunctionType ftype = mlir::FunctionType::get(
builder.getContext(),
- /*inputs*/ {boxTy, getPRIFStatType(builder), errmsgTy, errmsgTy},
+ /*inputs*/ {refTy, getPRIFStatType(builder), errmsgTy, errmsgTy},
/*results*/ {});
mlir::func::FuncOp funcOp =
builder.createFunction(loc, getPRIFProcName("change_team"), ftype);
@@ -1019,11 +1018,11 @@ struct MIFGetTeamOpConversion : public mlir::OpRewritePattern<mif::GetTeamOp> {
fir::FirOpBuilder builder(rewriter, mod);
mlir::Location loc = op.getLoc();
- mlir::Type boxTy = fir::BoxType::get(builder.getNoneType());
+ mlir::Type refTy = builder.getRefType(builder.getNoneType());
mlir::Type lvlTy = builder.getRefType(builder.getI32Type());
mlir::FunctionType ftype =
mlir::FunctionType::get(builder.getContext(),
- /*inputs*/ {lvlTy, boxTy},
+ /*inputs*/ {lvlTy, refTy},
/*results*/ {});
mlir::func::FuncOp funcOp =
builder.createFunction(loc, getPRIFProcName("get_team"), ftype);
@@ -1042,13 +1041,12 @@ struct MIFGetTeamOpConversion : public mlir::OpRewritePattern<mif::GetTeamOp> {
mlir::Type resultType = op.getResult().getType();
mlir::Type baseTy = fir::unwrapRefType(resultType);
mlir::Value team = builder.createTemporary(loc, baseTy);
- fir::EmboxOp box = fir::EmboxOp::create(builder, loc, resultType, team);
llvm::SmallVector<mlir::Value> args =
- fir::runtime::createArguments(builder, loc, ftype, level, box);
+ fir::runtime::createArguments(builder, loc, ftype, level, team);
fir::CallOp::create(builder, loc, funcOp, args);
- rewriter.replaceOp(op, box);
+ rewriter.replaceOp(op, team);
return mlir::success();
}
};
@@ -1065,17 +1063,17 @@ struct MIFTeamNumberOpConversion
fir::FirOpBuilder builder(rewriter, mod);
mlir::Location loc = op.getLoc();
mlir::Type i64Ty = builder.getI64Type();
- mlir::Type boxTy = fir::BoxType::get(builder.getNoneType());
+ mlir::Type refTy = builder.getRefType(builder.getNoneType());
mlir::FunctionType ftype =
mlir::FunctionType::get(builder.getContext(),
- /*inputs*/ {boxTy, builder.getRefType(i64Ty)},
+ /*inputs*/ {refTy, builder.getRefType(i64Ty)},
/*results*/ {});
mlir::func::FuncOp funcOp =
builder.createFunction(loc, getPRIFProcName("team_number"), ftype);
mlir::Value team = op.getTeam();
if (!team)
- team = fir::AbsentOp::create(builder, loc, boxTy);
+ team = fir::AbsentOp::create(builder, loc, refTy);
mlir::Value result = builder.createTemporary(loc, i64Ty);
llvm::SmallVector<mlir::Value> args =
@@ -1336,14 +1334,12 @@ struct MIFImageIndexOpConversion
std::string imageIndexName =
op.getTeamNumber() ? getPRIFProcName("image_index_with_team_number")
: getPRIFProcName("image_index_with_team");
- mlir::Type teamTy = boxTy;
+ mlir::Type teamTy = builder.getRefType(builder.getNoneType());
if (op.getTeamNumber()) {
teamTy = builder.getRefType(i64Ty);
mlir::Value t = builder.createConvert(loc, i64Ty, team);
team = builder.createTemporary(loc, i64Ty);
fir::StoreOp::create(builder, loc, t, team);
- } else {
- team = builder.createBox(loc, team);
}
mlir::FunctionType ftype = mlir::FunctionType::get(
builder.getContext(),
diff --git a/flang/test/Fir/MIF/change_team.mlir b/flang/test/Fir/MIF/change_team.mlir
index b80f121e09f2e..402e64c00e3d3 100644
--- a/flang/test/Fir/MIF/change_team.mlir
+++ b/flang/test/Fir/MIF/change_team.mlir
@@ -9,21 +9,17 @@
%4:2 = hlfir.declare %3 {uniq_name = "_QFEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
%5 = fir.alloca i32 {bindc_name = "stat", uniq_name = "_QFEstat"}
%6:2 = hlfir.declare %5 {uniq_name = "_QFEstat"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
- %7 = fir.alloca !fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}> {bindc_name = "team", uniq_name = "_QFEteam"}
- %8:2 = hlfir.declare %7 {uniq_name = "_QFEteam"} : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>) -> (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>, !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>)
- %9 = fir.address_of(@_QQ_QM__fortran_builtinsT__builtin_team_type.DerivedInit) : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>
- fir.copy %9 to %8#0 no_overlap : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>, !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>
- %10 = fir.embox %8#0 : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>) -> !fir.box<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>
- mif.change_team %10 : (!fir.box<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>) {
- %13 = fir.load %4#0 : !fir.ref<i32>
+ %7 = fir.address_of(@_QFEteam) : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.info:!fir.box<!fir.ptr<!fir.type<_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type{_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type.__placeholder:i64}>>>}>>
+ %8:2 = hlfir.declare %7 {uniq_name = "_QFEteam"} : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.info:!fir.box<!fir.ptr<!fir.type<_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type{_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type.__placeholder:i64}>>>}>>) -> (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.info:!fir.box<!fir.ptr<!fir.type<_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type{_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type.__placeholder:i64}>>>}>>, !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.info:!fir.box<!fir.ptr<!fir.type<_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type{_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type.__placeholder:i64}>>>}>>)
+ mif.change_team %8#0 : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.info:!fir.box<!fir.ptr<!fir.type<_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type{_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type.__placeholder:i64}>>>}>>) {
+ %10 = fir.load %4#0 : !fir.ref<i32>
%c1_i32 = arith.constant 1 : i32
- %14 = arith.addi %13, %c1_i32 : i32
- hlfir.assign %14 to %4#0 : i32, !fir.ref<i32>
+ %11 = arith.addi %10, %c1_i32 : i32
+ hlfir.assign %11 to %4#0 : i32, !fir.ref<i32>
mif.end_team : () -> ()
}
- %11 = fir.embox %2#0 : (!fir.ref<!fir.char<1,10>>) -> !fir.box<!fir.char<1,10>>
- %12 = fir.embox %8#0 : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>) -> !fir.box<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>
- mif.change_team %12 stat %6#0 errmsg %11 : (!fir.box<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.__id:i64}>>, !fir.ref<i32>, !fir.box<!fir.char<1,10>>) {
+ %9 = fir.embox %2#0 : (!fir.ref<!fir.char<1,10>>) -> !fir.box<!fir.char<1,10>>
+ mif.change_team %8#0 stat %6#0 errmsg %9 : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_team_type{_QM__fortran_builtinsT__builtin_team_type.info:!fir.box<!fir.ptr<!fir.type<_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type{_QM__fortran_builtinsT__builtin_dummy_team_descriptor_type.__placeholder:i64}>>>}>>, !fir.ref<i32>, !fir.box<!fir.char<1,10>>) {
mi...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/214207
More information about the flang-commits
mailing list