| ! { dg-do run } |
| ! { dg-additional-sources enum_10.c } |
| ! { dg-options "-fshort-enums -w" } |
| ! { dg-options "-fshort-enums -w -Wl,--no-enum-size-warning" { target arm*-*-linux* } } |
| ! Make sure short enums are indeed interoperable with the |
| ! corresponding C type. |
| |
| module enum_10 |
| enum, bind( c ) |
| enumerator :: one1 = 1, two1, max1 = huge(1_1) |
| end enum |
| |
| enum, bind( c ) |
| enumerator :: one2 = 1, two2, max2 = huge(1_2) |
| end enum |
| |
| enum, bind( c ) |
| enumerator :: one4 = 1, two4, max4 = huge(1_4) |
| end enum |
| end module enum_10 |
| |
| use enum_10 |
| |
| interface f1 |
| subroutine f1(i,j) |
| use enum_10 |
| integer (kind(max1)) :: i |
| integer :: j |
| end subroutine f1 |
| end interface |
| |
| |
| interface f2 |
| subroutine f2(i,j) |
| use enum_10 |
| integer (kind(max2)) :: i |
| integer :: j |
| end subroutine f2 |
| end interface |
| |
| |
| interface f4 |
| subroutine f4(i,j) |
| use enum_10 |
| integer (kind(max4)) :: i |
| integer :: j |
| end subroutine f4 |
| end interface |
| |
| |
| call f1 (one1, 1) |
| call f1 (two1, 2) |
| call f1 (max1, huge(1_1)+0) ! Adding 0 to get default integer |
| |
| call f2 (one2, 1) |
| call f2 (two2, 2) |
| call f2 (max2, huge(1_2)+0) |
| |
| call f4 (one4, 1) |
| call f4 (two4, 2) |
| call f4 (max4, huge(1_4)+0) |
| end |