| ! { dg-lto-do run } |
| ! { dg-lto-options {{ -O3 -flto }} } |
| ! This testcase will abort if integer types are not interoperable. |
| module lto_type_merge_test |
| use, intrinsic :: iso_c_binding |
| implicit none |
| |
| type, bind(c) :: MYFTYPE_1 |
| integer(c_int) :: val_int |
| integer(c_short) :: val_short |
| integer(c_long) :: val_long |
| integer(c_long_long) :: val_long_long |
| integer(c_size_t) :: val_size_t |
| integer(c_int8_t) :: val_int8_t |
| integer(c_int16_t) :: val_int16_t |
| integer(c_int32_t) :: val_int32_t |
| integer(c_int64_t) :: val_int64_t |
| integer(c_int_least8_t) :: val_intleast_8_t |
| integer(c_int_least16_t) :: val_intleast_16_t |
| integer(c_int_least32_t) :: val_intleast_32_t |
| integer(c_int_least64_t) :: val_intleast_64_t |
| integer(c_int_fast8_t) :: val_intfast_8_t |
| integer(c_int_fast16_t) :: val_intfast_16_t |
| integer(c_int_fast32_t) :: val_intfast_32_t |
| integer(c_int_fast64_t) :: val_intfast_64_t |
| integer(c_intmax_t) :: val_intmax_t |
| integer(c_intptr_t) :: val_intptr_t |
| end type MYFTYPE_1 |
| |
| type(myftype_1), bind(c, name="myVar") :: myVar |
| |
| contains |
| subroutine types_test1() bind(c) |
| myVar%val_int = 2 |
| end subroutine types_test1 |
| subroutine types_test2() bind(c) |
| myVar%val_short = 2 |
| end subroutine types_test2 |
| subroutine types_test3() bind(c) |
| myVar%val_long = 2 |
| end subroutine types_test3 |
| subroutine types_test4() bind(c) |
| myVar%val_long_long = 2 |
| end subroutine types_test4 |
| subroutine types_test5() bind(c) |
| myVar%val_size_t = 2 |
| end subroutine types_test5 |
| subroutine types_test6() bind(c) |
| myVar%val_int8_t = 2 |
| end subroutine types_test6 |
| subroutine types_test7() bind(c) |
| myVar%val_int16_t = 2 |
| end subroutine types_test7 |
| subroutine types_test8() bind(c) |
| myVar%val_int32_t = 2 |
| end subroutine types_test8 |
| subroutine types_test9() bind(c) |
| myVar%val_int64_t = 2 |
| end subroutine types_test9 |
| subroutine types_test10() bind(c) |
| myVar%val_intleast_8_t = 2 |
| end subroutine types_test10 |
| subroutine types_test11() bind(c) |
| myVar%val_intleast_16_t = 2 |
| end subroutine types_test11 |
| subroutine types_test12() bind(c) |
| myVar%val_intleast_32_t = 2 |
| end subroutine types_test12 |
| subroutine types_test13() bind(c) |
| myVar%val_intleast_64_t = 2 |
| end subroutine types_test13 |
| subroutine types_test14() bind(c) |
| myVar%val_intfast_8_t = 2 |
| end subroutine types_test14 |
| subroutine types_test15() bind(c) |
| myVar%val_intfast_16_t = 2 |
| end subroutine types_test15 |
| subroutine types_test16() bind(c) |
| myVar%val_intfast_32_t = 2 |
| end subroutine types_test16 |
| subroutine types_test17() bind(c) |
| myVar%val_intfast_64_t = 2 |
| end subroutine types_test17 |
| subroutine types_test18() bind(c) |
| myVar%val_intmax_t = 2 |
| end subroutine types_test18 |
| subroutine types_test19() bind(c) |
| myVar%val_intptr_t = 2 |
| end subroutine types_test19 |
| end module lto_type_merge_test |
| |