! { dg-do run } program foo use ieee_arithmetic implicit none call test04 call test08 call test10 call test16 contains subroutine test04 real(4) x, y if (ieee_support_subnormal(x)) then x = ieee_value(x, ieee_positive_subnormal) y = ieee_value(y, ieee_positive_denormal) if (x /= y) stop 1 x = ieee_value(x, ieee_negative_subnormal) y = ieee_value(y, ieee_negative_denormal) if (x /= y) stop 2 end if end subroutine test04 subroutine test08 real(8) x, y if (ieee_support_subnormal(x)) then x = ieee_value(x, ieee_positive_subnormal) y = ieee_value(y, ieee_positive_denormal) if (x /= y) stop 1 x = ieee_value(x, ieee_negative_subnormal) y = ieee_value(y, ieee_negative_denormal) if (x /= y) stop 2 end if end subroutine test08 #ifdef __GFC_REAL_10__ subroutine test10 real(10) x, y if (ieee_support_subnormal(x)) then x = ieee_value(x, ieee_positive_subnormal) y = ieee_value(y, ieee_positive_denormal) if (x /= y) stop 1 x = ieee_value(x, ieee_negative_subnormal) y = ieee_value(y, ieee_negative_denormal) if (x /= y) stop 2 end if end subroutine test10 #else subroutine test10 end subroutine test10 #endif #ifdef __GFC_REAL_16__ subroutine test16 real(16) x, y if (ieee_support_subnormal(x)) then x = ieee_value(x, ieee_positive_subnormal) y = ieee_value(y, ieee_positive_denormal) if (x /= y) stop 1 x = ieee_value(x, ieee_negative_subnormal) y = ieee_value(y, ieee_negative_denormal) if (x /= y) stop 2 end if end subroutine test16 #else subroutine test16 end subroutine test16 #endif end program foo