diff --git a/flang/lib/Optimizer/CodeGen/TypeConverter.h b/flang/lib/Optimizer/CodeGen/TypeConverter.h --- a/flang/lib/Optimizer/CodeGen/TypeConverter.h +++ b/flang/lib/Optimizer/CodeGen/TypeConverter.h @@ -21,6 +21,18 @@ #include "llvm/ADT/StringMap.h" #include "llvm/Support/Debug.h" +// Position of the different values in a `fir.box`. +static constexpr unsigned kAddrPosInBox = 0; +static constexpr unsigned kElemLenPosInBox = 1; +static constexpr unsigned kVersionPosInBox = 2; +static constexpr unsigned kRankPosInBox = 3; +static constexpr unsigned kTypePosInBox = 4; +static constexpr unsigned kAttributePosInBox = 5; +static constexpr unsigned kF18AddendumPosInBox = 6; +static constexpr unsigned kDimsPosInBox = 7; +static constexpr unsigned kOptTypePtrPosInBox = 8; +static constexpr unsigned kOptRowTypePosInBox = 9; + namespace fir { /// FIR type converter @@ -107,17 +119,23 @@ else dataDescFields.push_back(mlir::LLVM::LLVMPointerType::get(eleTy)); // elem_len - dataDescFields.push_back(getDescFieldTypeModel<1>()(&getContext())); + dataDescFields.push_back( + getDescFieldTypeModel()(&getContext())); // version - dataDescFields.push_back(getDescFieldTypeModel<2>()(&getContext())); + dataDescFields.push_back( + getDescFieldTypeModel()(&getContext())); // rank - dataDescFields.push_back(getDescFieldTypeModel<3>()(&getContext())); + dataDescFields.push_back( + getDescFieldTypeModel()(&getContext())); // type - dataDescFields.push_back(getDescFieldTypeModel<4>()(&getContext())); + dataDescFields.push_back( + getDescFieldTypeModel()(&getContext())); // attribute - dataDescFields.push_back(getDescFieldTypeModel<5>()(&getContext())); + dataDescFields.push_back( + getDescFieldTypeModel()(&getContext())); // f18Addendum - dataDescFields.push_back(getDescFieldTypeModel<6>()(&getContext())); + dataDescFields.push_back( + getDescFieldTypeModel()(&getContext())); // [dims] if (rank == unknownRank()) { if (auto seqTy = ele.dyn_cast()) @@ -126,14 +144,15 @@ rank = 0; } if (rank > 0) { - auto rowTy = getDescFieldTypeModel<7>()(&getContext()); + auto rowTy = getDescFieldTypeModel()(&getContext()); dataDescFields.push_back(mlir::LLVM::LLVMArrayType::get(rowTy, rank)); } // opt-type-ptr: i8* (see fir.tdesc) if (requiresExtendedDesc(ele)) { dataDescFields.push_back( - getExtendedDescFieldTypeModel<8>()(&getContext())); - auto rowTy = getExtendedDescFieldTypeModel<9>()(&getContext()); + getExtendedDescFieldTypeModel()(&getContext())); + auto rowTy = + getExtendedDescFieldTypeModel()(&getContext()); dataDescFields.push_back(mlir::LLVM::LLVMArrayType::get(rowTy, 1)); if (auto recTy = fir::unwrapSequenceType(ele).dyn_cast()) if (recTy.getNumLenParams() > 0) {