[PATCH] D118785: [flang] Switch return to ExtendedValue in AbstractConverter and Bridge
Valentin Clement via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 2 06:33:02 PST 2022
clementval created this revision.
Herald added a subscriber: mehdi_amini.
Herald added a project: Flang.
clementval requested review of this revision.
Herald added subscribers: llvm-commits, jdoerfert.
Herald added a project: LLVM.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D118785
Files:
flang/include/flang/Lower/AbstractConverter.h
flang/lib/Lower/Bridge.cpp
Index: flang/lib/Lower/Bridge.cpp
===================================================================
--- flang/lib/Lower/Bridge.cpp
+++ flang/lib/Lower/Bridge.cpp
@@ -71,12 +71,13 @@
return lookupSymbol(sym).getAddr();
}
- mlir::Value genExprAddr(const Fortran::lower::SomeExpr &expr,
- mlir::Location *loc = nullptr) override final {
+ fir::ExtendedValue genExprAddr(const Fortran::lower::SomeExpr &expr,
+ mlir::Location *loc = nullptr) override final {
TODO_NOLOC("Not implemented. Needed for more complex expression lowering");
}
- mlir::Value genExprValue(const Fortran::lower::SomeExpr &expr,
- mlir::Location *loc = nullptr) override final {
+ fir::ExtendedValue
+ genExprValue(const Fortran::lower::SomeExpr &expr,
+ mlir::Location *loc = nullptr) override final {
TODO_NOLOC("Not implemented. Needed for more complex expression lowering");
}
Index: flang/include/flang/Lower/AbstractConverter.h
===================================================================
--- flang/include/flang/Lower/AbstractConverter.h
+++ flang/include/flang/Lower/AbstractConverter.h
@@ -78,19 +78,24 @@
// Expressions
//===--------------------------------------------------------------------===//
+ /// Generate the address of the location holding the expression, someExpr.
+ /// If SomeExpr is a Designator that is not compile time contiguous, the
+ /// address returned is the one of a contiguous temporary storage holding the
+ /// expression value. The clean-up for this temporary is added to the
+ /// StatementContext.
+ virtual fir::ExtendedValue genExprAddr(const SomeExpr &,
+ mlir::Location *loc = nullptr) = 0;
/// Generate the address of the location holding the expression, someExpr
- virtual mlir::Value genExprAddr(const SomeExpr &,
- mlir::Location *loc = nullptr) = 0;
- /// Generate the address of the location holding the expression, someExpr
- mlir::Value genExprAddr(const SomeExpr *someExpr, mlir::Location loc) {
+ fir::ExtendedValue genExprAddr(const SomeExpr *someExpr, mlir::Location loc) {
return genExprAddr(*someExpr, &loc);
}
/// Generate the computations of the expression to produce a value
- virtual mlir::Value genExprValue(const SomeExpr &,
- mlir::Location *loc = nullptr) = 0;
+ virtual fir::ExtendedValue genExprValue(const SomeExpr &,
+ mlir::Location *loc = nullptr) = 0;
/// Generate the computations of the expression, someExpr, to produce a value
- mlir::Value genExprValue(const SomeExpr *someExpr, mlir::Location loc) {
+ fir::ExtendedValue genExprValue(const SomeExpr *someExpr,
+ mlir::Location loc) {
return genExprValue(*someExpr, &loc);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D118785.405246.patch
Type: text/x-patch
Size: 2941 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220202/95ea8bf2/attachment.bin>
More information about the llvm-commits
mailing list