Lines Matching defs:extent

29 //   it may be unallocated if the array constructor length parameters or extent
37 // This strategy can only be used if the array constructor extent and length
45 // This strategy can only be used if the array constructor extent and length
120 fir::SequenceType declaredType, mlir::Value extent,
125 extent, lengths, /*allocateOnHeap=*/true,
170 /// %extent = max((%u-%l+1)/%s, 0)
171 /// %shape = fir.shape %extent
194 fir::SequenceType declaredType, mlir::Value extent,
196 : StrategyBase{stmtCtx, symMap}, shape{builder.genShape(loc, {extent})},
295 /// \p extent is the pre-computed extent of the array constructor, if it could
304 std::optional<mlir::Value> extent,
313 if (extent && !missingLengthParameters) {
314 llvm::SmallVector<mlir::Value, 1> extents{*extent};
331 // deallocated status and all the available knowledge about the extent
334 if (!extent)
335 extent = builder.createIntegerConstant(loc, builder.getIndexType(), 0);
345 mlir::Value shape = builder.genShape(loc, {*extent});
484 // pre-lowers the array constructor extent and length parameters if it can,
488 /// Helper to lower a scalar extent expression (like implied-do bounds).
659 /// Core function that pre-lowers the extent and length parameters of
669 // Try to gather the array constructor extent.
670 mlir::Value extent;
678 extent = builder.createIntegerConstant(loc, idxType, typeExtent);
681 // extent does not contain procedure symbols. It is side effect free.
684 extent = lowerExtentExpr(loc, converter, symMap, stmtCtx, extentExpr);
687 // reallocation and the extent will only be known at the end of the array
703 if (!extent || needToEvaluateOneExprToGetLengthParameters ||
708 extent ? std::optional<mlir::Value>(extent) : std::nullopt, lengths,
716 extent, lengths);
720 extent, lengths);
723 declaredType, extent, lengths);