[flang-commits] [flang] [flang] fix isSimplyContiguous and isOptional hlfir::Entity methods (PR #125215)
via flang-commits
flang-commits at lists.llvm.org
Mon Feb 3 01:49:19 PST 2025
================
@@ -984,14 +1063,33 @@ static fir::ExtendedValue translateVariableToExtendedValue(
const bool contiguous = variable.isSimplyContiguous() || contiguousHint;
const bool isAssumedRank = variable.isAssumedRank();
if (!contiguous || variable.isPolymorphic() ||
- variable.isDerivedWithLengthParameters() || variable.isOptional() ||
- isAssumedRank) {
+ variable.isDerivedWithLengthParameters() || isAssumedRank) {
llvm::SmallVector<mlir::Value> nonDefaultLbounds;
if (!isAssumedRank)
nonDefaultLbounds = getNonDefaultLowerBounds(loc, builder, variable);
return fir::BoxValue(base, nonDefaultLbounds,
getExplicitTypeParams(variable));
}
+ if (variable.mayBeOptional()) {
+ if (!keepScalarOptionalBoxed && variable.isScalar()) {
+ mlir::Value isPresent = builder.create<fir::IsPresentOp>(
+ loc, builder.getI1Type(), variable);
+ return conditionnalyEvaluate(
----------------
jeanPerier wrote:
```suggestion
return conditionallyEvaluate(
```
https://github.com/llvm/llvm-project/pull/125215
More information about the flang-commits
mailing list