Skip to content

Commit ce56fc4

Browse files
authored
Merge pull request #1142 from schweitzpgi/ch-todo
Add a TODO for vector subscripts with (recursive) vector/slice subscripts.
2 parents f69d30f + 5fef618 commit ce56fc4

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

flang/lib/Lower/ConvertExpr.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5046,6 +5046,20 @@ class ArrayExprLowering {
50465046
: sel.gen(base.GetComponent());
50475047
}
50485048

5049+
template <typename A>
5050+
bool hasEvArrayRef(const A &x) {
5051+
struct HasEvArrayRefHelper
5052+
: public Fortran::evaluate::AnyTraverse<HasEvArrayRefHelper> {
5053+
HasEvArrayRefHelper()
5054+
: Fortran::evaluate::AnyTraverse<HasEvArrayRefHelper>(*this) {}
5055+
using Fortran::evaluate::AnyTraverse<HasEvArrayRefHelper>::operator();
5056+
bool operator()(const Fortran::evaluate::ArrayRef &) const {
5057+
return true;
5058+
}
5059+
} helper;
5060+
return helper(x);
5061+
}
5062+
50495063
/// When we have an array reference, the expressions specified in each
50505064
/// dimension may be slice operations (e.g. `i:j:k`), vectors, or simple
50515065
/// (loop-invarianet) scalar expressions. This returns the base entity, the
@@ -5089,6 +5103,10 @@ class ArrayExprLowering {
50895103
// vector subscript with replicated values.
50905104
assert(!isBoxValue() &&
50915105
"fir.box cannot be created with vector subscripts");
5106+
if (Fortran::evaluate::HasVectorSubscript(toEvExpr(e)))
5107+
TODO(loc, "vector subscript of vector subscript");
5108+
if (hasEvArrayRef(e))
5109+
TODO(loc, "vector subscript with slice subscript");
50925110
auto base = x.base();
50935111
auto exv = genArrayBase(base);
50945112
auto arrExpr = ignoreEvConvert(e);

0 commit comments

Comments
 (0)