Skip to content

Commit bf27dce

Browse files
committed
Fix store to logical array in elemental expression
1 parent 1fb03ef commit bf27dce

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

flang/lib/Lower/ConvertExpr.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1900,9 +1900,11 @@ class ArrayExprLowering {
19001900
auto [iterSpace, insPt] = genIterSpace();
19011901
auto exv = f(iterSpace);
19021902
auto innerArg = iterSpace.innerArgument();
1903+
// Convert to array elemental type is needed for logical.
1904+
auto eleTy = innerArg.getType().cast<fir::SequenceType>().getEleTy();
1905+
auto element = builder.createConvert(loc, eleTy, fir::getBase(exv));
19031906
auto upd = builder.create<fir::ArrayUpdateOp>(
1904-
loc, innerArg.getType(), innerArg, fir::getBase(exv),
1905-
iterSpace.iterVec());
1907+
loc, innerArg.getType(), innerArg, element, iterSpace.iterVec());
19061908
builder.create<fir::ResultOp>(loc, upd.getResult());
19071909
builder.restoreInsertionPoint(insPt);
19081910
return fir::substBase(exv, iterSpace.outerResult());

0 commit comments

Comments
 (0)