[flang-commits] [flang] b67be52 - [fir] Add !fir.field type conversion

Valentin Clement via flang-commits flang-commits at lists.llvm.org
Thu Nov 11 06:40:26 PST 2021


Author: Valentin Clement
Date: 2021-11-11T15:40:15+01:00
New Revision: b67be520548ec3c251f8e723ad36e0b311b3dbc3

URL: https://github.com/llvm/llvm-project/commit/b67be520548ec3c251f8e723ad36e0b311b3dbc3
DIFF: https://github.com/llvm/llvm-project/commit/b67be520548ec3c251f8e723ad36e0b311b3dbc3.diff

LOG: [fir] Add !fir.field type conversion

This patch adds conversion for !fir.field types.

This patch is part of the upstreaming effort from fir-dev branch.

Reviewed By: kiranchandramohan

Differential Revision: https://reviews.llvm.org/D113669

Co-authored-by: Eric Schweitz <eschweitz at nvidia.com>

Added: 
    

Modified: 
    flang/lib/Optimizer/CodeGen/TypeConverter.h
    flang/test/Fir/types-to-llvm.fir

Removed: 
    


################################################################################
diff  --git a/flang/lib/Optimizer/CodeGen/TypeConverter.h b/flang/lib/Optimizer/CodeGen/TypeConverter.h
index 8595513c84b9..7295da2a4e29 100644
--- a/flang/lib/Optimizer/CodeGen/TypeConverter.h
+++ b/flang/lib/Optimizer/CodeGen/TypeConverter.h
@@ -64,6 +64,10 @@ class LLVMTypeConverter : public mlir::LLVMTypeConverter {
         [&](fir::PointerType pointer) { return convertPointerLike(pointer); });
     addConversion(
         [&](fir::RecordType derived) { return convertRecordType(derived); });
+    addConversion([&](fir::FieldType field) {
+      // Convert to i32 because of LLVM GEP indexing restriction.
+      return mlir::IntegerType::get(field.getContext(), 32);
+    });
     addConversion(
         [&](fir::ComplexType cmplx) { return convertComplexType(cmplx); });
     addConversion(

diff  --git a/flang/test/Fir/types-to-llvm.fir b/flang/test/Fir/types-to-llvm.fir
index 6d6f1c652eac..e872a3a514ac 100644
--- a/flang/test/Fir/types-to-llvm.fir
+++ b/flang/test/Fir/types-to-llvm.fir
@@ -215,3 +215,11 @@ func private @foo0(%arg0: !fir.boxchar<1>)
 func private @foo1(%arg0: !fir.boxchar<2>)
 // CHECK-LABEL: foo1
 // CHECK-SAME: !llvm.struct<(ptr<i16>, i64)>
+
+// -----
+
+// Test `!fir.field` conversion
+
+func private @foo0(%arg0: !fir.field)
+// CHECK-LABEL: foo0
+// CHECK-SAME: i32


        


More information about the flang-commits mailing list