Lines Matching refs:components

5836             ComponentPath &components) {  in genarr()  argument
5837 return genarr(sym.get(), components); in genarr()
5884 CC genarr(const ExtValue &extMemref, ComponentPath &components) { in genarr() argument
5891 if (components.isSlice()) { in genarr()
5892 if (isBoxValue() && components.substring) { in genarr()
5897 populateBounds(substringBounds, components.substring); in genarr()
5931 loc, padSlice(components.trips, shape), components.suffixComponents, in genarr()
5934 slice = builder.createSlice(loc, extMemref, components.trips, in genarr()
5935 components.suffixComponents); in genarr()
5937 if (components.hasComponents()) { in genarr()
5940 fir::applyPathToType(seqTy.getEleTy(), components.suffixComponents); in genarr()
5963 if (components.substring) { in genarr()
6001 populateBounds(substringBounds, components.substring); in genarr()
6029 : defaultStoreToDestination(components.substring); in genarr()
6094 populateBounds(substringBounds, components.substring); in genarr()
6239 ComponentPath &components) { in genarr() argument
6240 components.reversePath.push_back(&x); in genarr()
6241 return genarr(x.complex(), components); in genarr()
6245 CC genSlicePath(const A &x, ComponentPath &components) { in genSlicePath() argument
6246 return genarr(x, components); in genSlicePath()
6250 ComponentPath &components) { in genarr() argument
6255 CC genarr(const Fortran::evaluate::Substring &x, ComponentPath &components) { in genarr() argument
6256 components.substring = &x; in genarr()
6257 return std::visit([&](const auto &v) { return genarr(v, components); }, in genarr()
6808 ComponentPath components(des.Rank() > 0); in genarr() local
6809 return std::visit([&](const auto &x) { return genarr(x, components); }, in genarr()
6848 mlir::Type lowerPath(const ExtValue &arrayExv, ComponentPath &components) { in lowerPath() argument
6851 auto &revPath = components.reversePath; in lowerPath()
6857 extendComponent(components, ty, vals); in lowerPath()
6860 components.prefixComponents.push_back(v); in lowerPath()
6863 components.suffixComponents.push_back(v); in lowerPath()
6886 components.suffixComponents.push_back(offset); in lowerPath()
6891 genSliceIndices(components, arrayExv, *x, atBase); in lowerPath()
6955 auto currentFunc = components.getExtendCoorRef(); in lowerPath()
6961 components.extendCoorRef = newCoorRef; in lowerPath()
6971 extendComponent(components, ty, {fld}); in lowerPath()
6982 components.applied = true; in lowerPath()
6986 llvm::SmallVector<mlir::Value> genSubstringBounds(ComponentPath &components) { in genSubstringBounds() argument
6988 if (components.substring) in genSubstringBounds()
6989 populateBounds(result, components.substring); in genSubstringBounds()
6993 CC applyPathToArrayLoad(fir::ArrayLoadOp load, ComponentPath &components) { in applyPathToArrayLoad() argument
6995 auto revPath = components.reversePath; in applyPathToArrayLoad()
6998 mlir::Type eleTy = lowerPath(arrayExv, components); in applyPathToArrayLoad()
6999 auto currentPC = components.pc; in applyPathToArrayLoad()
7000 auto pc = [=, prefix = components.prefixComponents, in applyPathToArrayLoad()
7001 suffix = components.suffixComponents](IterSpace iters) { in applyPathToArrayLoad()
7005 components.resetPC(); in applyPathToArrayLoad()
7007 genSubstringBounds(components); in applyPathToArrayLoad()
7036 if (components.hasExtendCoorRef()) { in applyPathToArrayLoad()
7043 mlir::Value addr = components.getExtendCoorRef()(arrayOp); in applyPathToArrayLoad()
7044 components.resetExtendCoorRef(); in applyPathToArrayLoad()
7108 if (components.hasExtendCoorRef()) { in applyPathToArrayLoad()
7114 mlir::Value addr = components.getExtendCoorRef()(access); in applyPathToArrayLoad()
7115 components.resetExtendCoorRef(); in applyPathToArrayLoad()
7127 auto addr = components.getExtendCoorRef()(access); in applyPathToArrayLoad()
7128 components.resetExtendCoorRef(); in applyPathToArrayLoad()
7134 if (components.hasExtendCoorRef()) in applyPathToArrayLoad()
7152 CC genImplicitArrayAccess(const A &x, ComponentPath &components) { in genImplicitArrayAccess() argument
7153 components.reversePath.push_back(ImplicitSubscripts{}); in genImplicitArrayAccess()
7155 lowerPath(exv, components); in genImplicitArrayAccess()
7156 auto lambda = genarr(exv, components); in genImplicitArrayAccess()
7157 return [=](IterSpace iters) { return lambda(components.pc(iters)); }; in genImplicitArrayAccess()
7160 ComponentPath &components) { in genImplicitArrayAccess() argument
7162 return genImplicitArrayAccess(getFirstSym(x), components); in genImplicitArrayAccess()
7163 return genImplicitArrayAccess(x.GetComponent(), components); in genImplicitArrayAccess()
7195 ComponentPath &components) { in tailIsPointerInPointerAssignment() argument
7197 !components.hasComponents(); in tailIsPointerInPointerAssignment()
7200 ComponentPath &components) { in tailIsPointerInPointerAssignment() argument
7201 return tailIsPointerInPointerAssignment(getLastSym(x), components); in tailIsPointerInPointerAssignment()
7204 CC genarr(const Fortran::semantics::Symbol &x, ComponentPath &components) { in genarr() argument
7206 if (x.Rank() > 0 && !tailIsPointerInPointerAssignment(x, components)) in genarr()
7207 components.reversePath.push_back(ImplicitSubscripts{}); in genarr()
7209 return applyPathToArrayLoad(load, components); in genarr()
7211 return genImplicitArrayAccess(x, components); in genarr()
7213 if (pathIsEmpty(components)) in genarr()
7214 return components.substring ? genAsScalar(*components.substring) in genarr()
7224 CC genarr(const Fortran::evaluate::Component &x, ComponentPath &components) { in genarr() argument
7227 !tailIsPointerInPointerAssignment(x, components)) in genarr()
7228 components.reversePath.push_back(ImplicitSubscripts{}); in genarr()
7230 return applyPathToArrayLoad(load, components); in genarr()
7233 return genImplicitArrayAccess(x, components); in genarr()
7235 bool atEnd = pathIsEmpty(components); in genarr()
7239 components.reversePath.push_back(&x); in genarr()
7240 auto result = genarr(x.base(), components); in genarr()
7241 if (components.applied) in genarr()
7259 CC genarr(const Fortran::evaluate::ArrayRef &x, ComponentPath &components) { in genarr() argument
7262 components.reversePath.push_back(ImplicitSubscripts{}); in genarr()
7264 components.reversePath.push_back(&x); in genarr()
7265 return applyPathToArrayLoad(load, components); in genarr()
7269 components.reversePath.push_back(&x); in genarr()
7270 return genImplicitArrayAccess(x.base(), components); in genarr()
7273 bool atEnd = pathIsEmpty(components); in genarr()
7274 components.reversePath.push_back(&x); in genarr()
7275 auto result = genarr(x.base(), components); in genarr()
7276 if (components.applied) in genarr()
7289 CC genarr(const Fortran::evaluate::CoarrayRef &x, ComponentPath &components) { in genarr() argument
7294 ComponentPath &components) { in genarr() argument
7295 return x.IsSymbol() ? genarr(getFirstSym(x), components) in genarr()
7296 : genarr(x.GetComponent(), components); in genarr()
7299 CC genarr(const Fortran::evaluate::DataRef &x, ComponentPath &components) { in genarr() argument
7300 return std::visit([&](const auto &v) { return genarr(v, components); }, in genarr()
7304 bool pathIsEmpty(const ComponentPath &components) { in pathIsEmpty() argument
7305 return components.reversePath.empty(); in pathIsEmpty()