mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 03:56:42 +00:00

The 10-byte FP on big-endian system such as AIX is not represented as a valid number in FE, so Flang issues an extra WARNING message as `underflow on REAL(10) to REAL(4) conversion` for `_10` for such a number. This PR is to fix the test case.
44 lines
2.0 KiB
Fortran
44 lines
2.0 KiB
Fortran
! RUN: not %flang_fc1 %s 2>%t.stderr
|
|
! RUN: FileCheck %s --input-file=%t.stderr --check-prefixes=%if system-aix %{"PORTABILITY","WARNING","ERROR","AIX_WARNING"%} %else %{"PORTABILITY","WARNING","ERROR"%}
|
|
! C716 If both kind-param and exponent-letter appear, exponent-letter
|
|
! shall be E. (As an extension we also allow an exponent-letter which matches
|
|
! the kind-param)
|
|
! C717 The value of kind-param shall specify an approximation method that
|
|
! exists on the processor.
|
|
!
|
|
! This test is for non-x86_64, where exponent-letter 'q' is for
|
|
! 16-byte quadruple precision
|
|
! UNSUPPORTED: x86-registered-target
|
|
subroutine s(var)
|
|
real :: realvar1 = 4.0E6_4
|
|
real :: realvar2 = 4.0D6
|
|
real :: realvar3 = 4.0Q6
|
|
!PORTABILITY: Explicit kind parameter together with non-'E' exponent letter is not standard
|
|
real :: realvar4 = 4.0D6_8
|
|
!WARNING: Explicit kind parameter on real constant disagrees with exponent letter 'q'
|
|
!AIX_WARNING: underflow on REAL(10) to REAL(4) conversion
|
|
real :: realvar5 = 4.0Q6_10
|
|
!PORTABILITY: Explicit kind parameter together with non-'E' exponent letter is not standard
|
|
real :: realvar6 = 4.0Q6_16
|
|
real :: realvar7 = 4.0E6_8
|
|
!AIX_WARNING: underflow on REAL(10) to REAL(4) conversion
|
|
real :: realvar8 = 4.0E6_10
|
|
real :: realvar9 = 4.0E6_16
|
|
!ERROR: Unsupported REAL(KIND=32)
|
|
real :: realvar10 = 4.0E6_32
|
|
|
|
double precision :: doublevar1 = 4.0E6_4
|
|
double precision :: doublevar2 = 4.0D6
|
|
double precision :: doublevar3 = 4.0Q6
|
|
!PORTABILITY: Explicit kind parameter together with non-'E' exponent letter is not standard
|
|
double precision :: doublevar4 = 4.0D6_8
|
|
!PORTABILITY: Explicit kind parameter together with non-'E' exponent letter is not standard
|
|
double precision :: doublevar5 = 4.0Q6_16
|
|
double precision :: doublevar6 = 4.0E6_8
|
|
!AIX_WARNING: underflow on REAL(10) to REAL(8) conversion
|
|
double precision :: doublevar7 = 4.0E6_10
|
|
double precision :: doublevar8 = 4.0E6_16
|
|
!ERROR: Unsupported REAL(KIND=32)
|
|
double precision :: doublevar9 = 4.0E6_32
|
|
end subroutine s
|