[PATCH] D113553: [fir] Use contralized values for indexing box

Valentin Clement via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 10 06:35:30 PST 2021


This revision was automatically updated to reflect the committed changes.
Closed by commit rG5eca6ad75274: [fir] Use contralized values for indexing box (authored by clementval).

Changed prior to commit:
  https://reviews.llvm.org/D113553?vs=386101&id=386142#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113553/new/

https://reviews.llvm.org/D113553

Files:
  flang/lib/Optimizer/CodeGen/TypeConverter.h


Index: flang/lib/Optimizer/CodeGen/TypeConverter.h
===================================================================
--- flang/lib/Optimizer/CodeGen/TypeConverter.h
+++ 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<kElemLenPosInBox>()(&getContext()));
     // version
-    dataDescFields.push_back(getDescFieldTypeModel<2>()(&getContext()));
+    dataDescFields.push_back(
+        getDescFieldTypeModel<kVersionPosInBox>()(&getContext()));
     // rank
-    dataDescFields.push_back(getDescFieldTypeModel<3>()(&getContext()));
+    dataDescFields.push_back(
+        getDescFieldTypeModel<kRankPosInBox>()(&getContext()));
     // type
-    dataDescFields.push_back(getDescFieldTypeModel<4>()(&getContext()));
+    dataDescFields.push_back(
+        getDescFieldTypeModel<kTypePosInBox>()(&getContext()));
     // attribute
-    dataDescFields.push_back(getDescFieldTypeModel<5>()(&getContext()));
+    dataDescFields.push_back(
+        getDescFieldTypeModel<kAttributePosInBox>()(&getContext()));
     // f18Addendum
-    dataDescFields.push_back(getDescFieldTypeModel<6>()(&getContext()));
+    dataDescFields.push_back(
+        getDescFieldTypeModel<kF18AddendumPosInBox>()(&getContext()));
     // [dims]
     if (rank == unknownRank()) {
       if (auto seqTy = ele.dyn_cast<SequenceType>())
@@ -126,14 +144,15 @@
         rank = 0;
     }
     if (rank > 0) {
-      auto rowTy = getDescFieldTypeModel<7>()(&getContext());
+      auto rowTy = getDescFieldTypeModel<kDimsPosInBox>()(&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<kOptTypePtrPosInBox>()(&getContext()));
+      auto rowTy =
+          getExtendedDescFieldTypeModel<kOptRowTypePosInBox>()(&getContext());
       dataDescFields.push_back(mlir::LLVM::LLVMArrayType::get(rowTy, 1));
       if (auto recTy = fir::unwrapSequenceType(ele).dyn_cast<fir::RecordType>())
         if (recTy.getNumLenParams() > 0) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113553.386142.patch
Type: text/x-patch
Size: 3155 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211110/a42d9cb3/attachment.bin>


More information about the llvm-commits mailing list