[PATCH] D119283: [flang] Add missing CFI case for REAL and COMPLEX

Valentin Clement via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 8 13:53:23 PST 2022


clementval created this revision.
clementval added reviewers: jeanPerier, vdonaldson, PeteSteinfeld, schweitz, svedanayagam.
Herald added a project: Flang.
clementval requested review of this revision.
Herald added subscribers: llvm-commits, jdoerfert.
Herald added a project: LLVM.

ISO_Fortran_binding.h was updated with missing entries for CFI
types for REAL and COMPLEX kinds 2,3,10,16. This patch updates TypeCode.h
to use these new types.

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


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D119283

Files:
  flang/include/flang/Optimizer/Support/TypeCode.h
  flang/test/Fir/convert-to-llvm.fir


Index: flang/test/Fir/convert-to-llvm.fir
===================================================================
--- flang/test/Fir/convert-to-llvm.fir
+++ flang/test/Fir/convert-to-llvm.fir
@@ -1583,7 +1583,7 @@
 }
 
 // CHECK-LABEL: llvm.func @embox_typecode2
-// CHECK: %[[TYPE_CODE_F128:.*]] = llvm.mlir.constant(30 : i32) : i32
+// CHECK: %[[TYPE_CODE_F128:.*]] = llvm.mlir.constant(31 : i32) : i32
 // CHECK: %[[TYPE_CODE_F128_I8:.*]] = llvm.trunc %[[TYPE_CODE_F128]] : i32 to i8
 // CHECK: %{{.*}} = llvm.insertvalue %[[TYPE_CODE_F128_I8]], %{{.*}}[4 : i32] : !llvm.struct<(ptr<f128>, i{{.*}}, i{{.*}}, i{{.*}}, i{{.*}}, i{{.*}}, i{{.*}})>
 
Index: flang/include/flang/Optimizer/Support/TypeCode.h
===================================================================
--- flang/include/flang/Optimizer/Support/TypeCode.h
+++ flang/include/flang/Optimizer/Support/TypeCode.h
@@ -37,10 +37,11 @@
 inline int complexBitsToTypeCode(unsigned bitwidth) {
   // clang-format off
   switch (bitwidth) {
+  case 16:  return CFI_type_half_float_Complex; // CFI_type_bfloat_Complex ?
   case 32:  return CFI_type_float_Complex;
   case 64:  return CFI_type_double_Complex;
-  case 80:
-  case 128: return CFI_type_long_double_Complex;
+  case 80:  return CFI_type_extended_double_Complex;
+  case 128: return CFI_type_float128_Complex;
   default:  llvm_unreachable("unsupported complex size");
   }
   // clang-format on
@@ -74,10 +75,11 @@
 inline int realBitsToTypeCode(unsigned bitwidth) {
   // clang-format off
   switch (bitwidth) {
+  case 16:  return CFI_type_half_float; // CFI_type_bfloat ?
   case 32:  return CFI_type_float;
   case 64:  return CFI_type_double;
-  case 80:
-  case 128: return CFI_type_long_double;
+  case 80:  return CFI_type_extended_double;
+  case 128: return CFI_type_float128;
   default:  llvm_unreachable("unsupported real size");
   }
   // clang-format on


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D119283.406963.patch
Type: text/x-patch
Size: 1888 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220208/97a575d8/attachment.bin>


More information about the llvm-commits mailing list