forked from OSchip/llvm-project
c757418869
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 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
call.cpp | ||
character.h | ||
characteristics.cpp | ||
check-expression.cpp | ||
common.cpp | ||
complex.cpp | ||
constant.cpp | ||
expression.cpp | ||
fold-character.cpp | ||
fold-complex.cpp | ||
fold-designator.cpp | ||
fold-implementation.h | ||
fold-integer.cpp | ||
fold-logical.cpp | ||
fold-real.cpp | ||
fold.cpp | ||
formatting.cpp | ||
host.cpp | ||
host.h | ||
initial-image.cpp | ||
int-power.h | ||
integer.cpp | ||
intrinsics-library.cpp | ||
intrinsics.cpp | ||
logical.cpp | ||
real.cpp | ||
shape.cpp | ||
static-data.cpp | ||
tools.cpp | ||
type.cpp | ||
variable.cpp |