llvm-project/flang/lib/Evaluate
Peter Steinfeld c757418869 [flang] Failed call to CHECK() for call to ASSOCIATED(NULL())
Calling "ASSOCATED(NULL()) was causing an internal check of the compiler to
fail.

I fixed this by changing the entry for "ASSOCIATED" in the intrinsics table to
accept "AnyPointer" which contains a new "KindCode" of "pointerType".  I also
changed the function "FromActual()" to return a typeless intrinsic when called
on a pointer, which duplicates its behavior for BOZ literals.  This required
changing the analysis of procedure arguments.  While testing processing for
procedure arguments, I found another bad call to `CHECK()` which I fixed.

I made several other changes:
  -- I implemented constant folding for ASSOCIATED().
  -- I fixed handling of NULL() in relational operations.
  -- I implemented semantic analysis for ASSOCIATED().
    -- I noticed that the semantics for ASSOCIATED() are similar to those for
       pointer assignment.  So I extracted the code that pointer assignment uses
       for procedure pointer compatibility to a place where it could be used by
       the semantic analysis for ASSOCIATED().
    -- I couldn't figure out how to make the general semantic analysis for
       procedure arguments work with ASSOCIATED()'s second argument, which can
       be either a pointer or a target.  So I stopped using normal semantic
       analysis for arguments for ASSOCIATED().
  -- I added tests for all of this.

Differential Revision: https://reviews.llvm.org/D88313
2020-10-16 07:12:57 -07:00
..
CMakeLists.txt [flang] Fix build with BUILD_SHARED_LIBS=ON and FLANG_BUILD_NEW_DRIVER=ON 2020-10-15 13:03:55 +02:00
call.cpp [flang] Fix frontend build with -DBUILD_SHARED_LIBS=On 2020-07-09 15:54:19 -07:00
character.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
characteristics.cpp [flang] Failed call to CHECK() for call to ASSOCIATED(NULL()) 2020-10-16 07:12:57 -07:00
check-expression.cpp [flang] Check shape conformance on initializers 2020-08-31 16:27:06 -07:00
common.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
complex.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
constant.cpp [flang] Fixes for RESHAPE() 2020-07-30 19:05:06 -07:00
expression.cpp [flang] Fix assert on constant folding of extended types 2020-09-10 14:34:03 -07:00
fold-character.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
fold-complex.cpp [flang] Rework host runtime folding and enable REAL(2) folding with it. 2020-10-14 16:40:44 +02:00
fold-designator.cpp [flang] Implement shape analysis of TRANSFER intrinsic function result 2020-08-13 09:56:24 -07:00
fold-implementation.h [flang] Rework host runtime folding and enable REAL(2) folding with it. 2020-10-14 16:40:44 +02:00
fold-integer.cpp [flang] Make `TypeParamInquiry` monomorphic 2020-08-31 15:40:40 -07:00
fold-logical.cpp [flang] Failed call to CHECK() for call to ASSOCIATED(NULL()) 2020-10-16 07:12:57 -07:00
fold-real.cpp [flang] Rework host runtime folding and enable REAL(2) folding with it. 2020-10-14 16:40:44 +02:00
fold.cpp [flang] DATA stmt processing (part 3/4): Remaining prep work 2020-06-19 09:09:05 -07:00
formatting.cpp [flang] Make `TypeParamInquiry` monomorphic 2020-08-31 15:40:40 -07:00
host.cpp [flang] Fix setting mxcsr on MSVC 2020-07-08 07:25:25 -05:00
host.h [flang] Rework host runtime folding and enable REAL(2) folding with it. 2020-10-14 16:40:44 +02:00
initial-image.cpp [flang] Implement shape analysis of TRANSFER intrinsic function result 2020-08-13 09:56:24 -07:00
int-power.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
integer.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
intrinsics-library.cpp [flang] Rework host runtime folding and enable REAL(2) folding with it. 2020-10-14 16:40:44 +02:00
intrinsics.cpp [flang] Failed call to CHECK() for call to ASSOCIATED(NULL()) 2020-10-16 07:12:57 -07:00
logical.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
real.cpp [flang][msvc] Avoid a reinterpret_cast 2020-10-15 10:38:48 -07:00
shape.cpp [flang] Track CHARACTER length better in TypeAndShape 2020-10-06 08:45:46 -07:00
static-data.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
tools.cpp [flang] Failed call to CHECK() for call to ASSOCIATED(NULL()) 2020-10-16 07:12:57 -07:00
type.cpp [flang] Semantic analysis for FINAL subroutines 2020-09-30 15:46:15 -07:00
variable.cpp [flang] Substrings with lower bound greater than upper bound 2020-09-16 14:56:23 -07:00