[PATCH] D94561: [flang] Fix classification of shape inquiries in specification exprs

Peter Klausler via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 12 15:41:21 PST 2021


klausler created this revision.
klausler added reviewers: PeteSteinfeld, tskeith, jeanPerier.
klausler added a project: Flang.
Herald added a subscriber: jdoerfert.
Herald added a reviewer: sscalpone.
klausler requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

  In some contexts, including the motivating case of determining whether
  the expressions that define the shape of a variable are "constant expressions"
  in the sense of the Fortran standard, expression rewriting via Fold()
  is not necessary, and should not be required.  The inquiry intrinsics LBOUND,
  UBOUND, and SIZE work correctly now in specification expressions and are
  classified correctly as being constant expressions (or not).  Getting this right
  led to a fair amount of API clean-up as a consequence, including the
  folding of shapes and TypeAndShape objects, and new APIs for shapes
  that do not fold for those cases where folding isn't needed.  Further,
  the symbol-testing predicate APIs in Evaluate/tools.h now all resolve any
  associations of their symbols and work transparently on use-, host-, and
  construct-association symbols; the tools used to resolve those associations have
  been defined and documented more precisely, and their clients adjusted as needed.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D94561

Files:
  flang/include/flang/Evaluate/characteristics.h
  flang/include/flang/Evaluate/fold.h
  flang/include/flang/Evaluate/shape.h
  flang/include/flang/Evaluate/tools.h
  flang/include/flang/Evaluate/type.h
  flang/include/flang/Semantics/tools.h
  flang/lib/Evaluate/characteristics.cpp
  flang/lib/Evaluate/check-expression.cpp
  flang/lib/Evaluate/fold.cpp
  flang/lib/Evaluate/intrinsics.cpp
  flang/lib/Evaluate/shape.cpp
  flang/lib/Evaluate/tools.cpp
  flang/lib/Semantics/check-call.cpp
  flang/lib/Semantics/check-declarations.cpp
  flang/lib/Semantics/check-do-forall.cpp
  flang/lib/Semantics/resolve-names.cpp
  flang/lib/Semantics/semantics.cpp
  flang/lib/Semantics/tools.cpp
  flang/test/Semantics/data04.f90
  flang/test/Semantics/resolve44.f90
  flang/test/Semantics/shape.f90

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D94561.316260.patch
Type: text/x-patch
Size: 75246 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210112/d8f8be0f/attachment.bin>


More information about the llvm-commits mailing list