[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