forked from OSchip/llvm-project
73506256bf
When processing the literal constants of the various kinds of INTEGER that are too large by 1 (e.g., 2147483648_4) in expression analysis, emit a portability warning rather than a fatal error if the literal constant appears as the operand to a unary minus, since the folded result will be in range. And don't emit any warning if the negated literal is coming from a module file -- f18 wrote the module file and the warning would simply be confusing, especially to the programmer that wrote (-2147483647_4-1) in the first place. Further, emit portability warnings for the canonical expressions for infinities and NaN (-1./0., 0./0., & 1./0.), but not when they appear in a module file, for the same reason. The Fortran language has no syntax for these special values so we have to emit expressions that fold to them. Fixes LLVM bugs https://github.com/llvm/llvm-project/issues/55086 and https://github.com/llvm/llvm-project/issues/55081. Differential Revision: https://reviews.llvm.org/D126584 |
||
---|---|---|
.. | ||
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-reduction.cpp | ||
fold-reduction.h | ||
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 |