diff options
author | fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-05-14 21:36:26 +0000 |
---|---|---|
committer | fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-05-14 21:36:26 +0000 |
commit | 9003d15ce6f4d6e609202893e17f93cd3c04102f (patch) | |
tree | df80bd35e852b8a95650c6aa6011baacf3b5d0b0 /gcc/testsuite/gfortran.dg | |
parent | 538eb341a870fbd8e09d9e7506166ca308f4e287 (diff) | |
download | gcc-9003d15ce6f4d6e609202893e17f93cd3c04102f.tar.gz |
PR fortran/36186
* simplify.c (only_convert_cmplx_boz): New function.
(gfc_simplify_cmplx, gfc_simplify_complex, gfc_simplify_dcmplx):
Call only_convert_cmplx_boz.
* gfortran.dg/boz_11.f90: New test.
* gfortran.dg/boz_12.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135308 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gfortran.dg')
-rw-r--r-- | gcc/testsuite/gfortran.dg/boz_11.f90 | 27 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/boz_12.f90 | 14 |
2 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/boz_11.f90 b/gcc/testsuite/gfortran.dg/boz_11.f90 new file mode 100644 index 00000000000..2bbf0221995 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/boz_11.f90 @@ -0,0 +1,27 @@ +! { dg-do run } +! +program test0 + implicit none + real, parameter :: & + r = transfer(int(b'01000000001010010101001111111101',kind=4),0.) + complex, parameter :: z = r * (0, 1.) + real(kind=8), parameter :: rd = dble(b'00000000000000000000000000000000& + &01000000001010010101001111111101') + complex(kind=8), parameter :: zd = (0._8, 1._8) * rd + integer :: x = 0 + + if (cmplx(b'01000000001010010101001111111101',x,4) /= r) call abort + if (cmplx(x,b'01000000001010010101001111111101',4) /= z) call abort + if (complex(b'01000000001010010101001111111101',0) /= r) call abort + if (complex(0,b'01000000001010010101001111111101') /= z) call abort + + !if (cmplx(b'00000000000000000000000000000000& + ! &01000000001010010101001111111101',x,8) /= rd) call abort + !if (cmplx(x,b'00000000000000000000000000000000& + ! &01000000001010010101001111111101',8) /= zd) call abort + !if (dcmplx(b'00000000000000000000000000000000& + ! &01000000001010010101001111111101',x) /= rd) call abort + !if (dcmplx(x,b'00000000000000000000000000000000& + ! &01000000001010010101001111111101') /= zd) call abort + +end program test0 diff --git a/gcc/testsuite/gfortran.dg/boz_12.f90 b/gcc/testsuite/gfortran.dg/boz_12.f90 new file mode 100644 index 00000000000..4c5c750d594 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/boz_12.f90 @@ -0,0 +1,14 @@ +! { dg-do compile } +! +program test + implicit none + real x4 + double precision x8 + + x4 = 1.7 + x8 = 1.7 + write(*,*) complex(x4,z'1FFFFFFFF') ! { dg-error "too" } + write(*,*) cmplx(x8,z'1FFFFFFFFFFFFFFFF') ! { dg-error "too" } + write(*,*) complex(x8,z'1FFFFFFFFFFFFFFFF') ! { dg-error "too" } + write(*,*) dcmplx(x8,z'1FFFFFFFFFFFFFFFF') ! { dg-error "too" } +end program test |