[PATCH] D113887: [fir] Add fir.global_len conversion placeholder
Valentin Clement via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 15 07:37:50 PST 2021
clementval updated this revision to Diff 387259.
clementval marked an inline comment as done.
clementval added a comment.
Remove extra return + rebase
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D113887/new/
https://reviews.llvm.org/D113887
Files:
flang/include/flang/Optimizer/Dialect/FIROps.td
flang/lib/Optimizer/CodeGen/CodeGen.cpp
flang/test/Fir/convert-to-llvm-invalid.fir
Index: flang/test/Fir/convert-to-llvm-invalid.fir
===================================================================
--- flang/test/Fir/convert-to-llvm-invalid.fir
+++ flang/test/Fir/convert-to-llvm-invalid.fir
@@ -72,3 +72,14 @@
%zero = arith.constant 0 : i32
return %zero : i32
}
+
+// -----
+
+// Test `fir.global_len` conversion failure. Not implemented yet.
+
+fir.global @global_derived : !fir.type<minez(f:i32)> {
+ // expected-error at +1{{failed to legalize operation 'fir.global_len'}}
+ fir.global_len f, 1 : i32
+ %0 = fir.undefined !fir.type<minez>
+ fir.has_value %0 : !fir.type<minez>
+}
Index: flang/lib/Optimizer/CodeGen/CodeGen.cpp
===================================================================
--- flang/lib/Optimizer/CodeGen/CodeGen.cpp
+++ flang/lib/Optimizer/CodeGen/CodeGen.cpp
@@ -636,6 +636,18 @@
}
};
+/// Lower `fir.global_len` operation.
+struct GlobalLenOpConversion : public FIROpConversion<fir::GlobalLenOp> {
+ using FIROpConversion::FIROpConversion;
+
+ mlir::LogicalResult
+ matchAndRewrite(fir::GlobalLenOp globalLen, OpAdaptor adaptor,
+ mlir::ConversionPatternRewriter &rewriter) const override {
+ return rewriter.notifyMatchFailure(
+ globalLen, "fir.global_len codegen is not implemented yet");
+ }
+};
+
/// Lower `fir.has_value` operation to `llvm.return` operation.
struct HasValueOpConversion : public FIROpConversion<fir::HasValueOp> {
using FIROpConversion::FIROpConversion;
@@ -1464,8 +1476,8 @@
BoxIsPtrOpConversion, BoxRankOpConversion, CallOpConversion,
ConvertOpConversion, DispatchOpConversion, DispatchTableOpConversion,
DTEntryOpConversion, DivcOpConversion, EmboxCharOpConversion,
- ExtractValueOpConversion, HasValueOpConversion, GlobalOpConversion,
- InsertOnRangeOpConversion, InsertValueOpConversion,
+ ExtractValueOpConversion, HasValueOpConversion, GlobalLenOpConversion,
+ GlobalOpConversion, InsertOnRangeOpConversion, InsertValueOpConversion,
IsPresentOpConversion, LoadOpConversion, NegcOpConversion,
MulcOpConversion, SelectCaseOpConversion, SelectOpConversion,
SelectRankOpConversion, SelectTypeOpConversion, StoreOpConversion,
Index: flang/include/flang/Optimizer/Dialect/FIROps.td
===================================================================
--- flang/include/flang/Optimizer/Dialect/FIROps.td
+++ flang/include/flang/Optimizer/Dialect/FIROps.td
@@ -2797,8 +2797,8 @@
```mlir
global @g : !fir.type<t(len1:i32)> {
fir.global_len len1, 10 : i32
- %1 = fir.undefined : !fir.type<t(len1:i32)>
- return %1 : !fir.type<t(len1:i32)>
+ %1 = fir.undefined !fir.type<t(len1:i32)>
+ fir.has_value %1 : !fir.type<t(len1:i32)>
}
```
}];
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113887.387259.patch
Type: text/x-patch
Size: 2802 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211115/048096b3/attachment.bin>
More information about the llvm-commits
mailing list