File tree Expand file tree Collapse file tree 1 file changed +18
-0
lines changed Expand file tree Collapse file tree 1 file changed +18
-0
lines changed Original file line number Diff line number Diff line change @@ -5046,6 +5046,20 @@ class ArrayExprLowering {
5046
5046
: sel.gen (base.GetComponent ());
5047
5047
}
5048
5048
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
+
5049
5063
// / When we have an array reference, the expressions specified in each
5050
5064
// / dimension may be slice operations (e.g. `i:j:k`), vectors, or simple
5051
5065
// / (loop-invarianet) scalar expressions. This returns the base entity, the
@@ -5089,6 +5103,10 @@ class ArrayExprLowering {
5089
5103
// vector subscript with replicated values.
5090
5104
assert (!isBoxValue () &&
5091
5105
" 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" );
5092
5110
auto base = x.base ();
5093
5111
auto exv = genArrayBase (base);
5094
5112
auto arrExpr = ignoreEvConvert (e);
You can’t perform that action at this time.
0 commit comments