OSDN Git Service

2010-11-13 Tobias Burnus <burnus@net-b.de>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / compiler-directive_1.f90
1 ! { dg-do compile }
2 !
3 ! PR fortran/34112
4 !
5 ! Check for calling convention consitency
6 ! in procedure-pointer assignments.
7
8 program test
9   interface
10     subroutine sub1()
11     end subroutine sub1
12     subroutine sub2()
13       !GCC$ ATTRIBUTES CDECL :: sub2
14     end subroutine sub2
15     subroutine sub3()
16       !GCC$ ATTRIBUTES STDCALL :: sub3
17     end subroutine sub3
18     subroutine sub4()
19 !GCC$ ATTRIBUTES FASTCALL :: sub4
20     end subroutine sub4
21   end interface
22
23   !gcc$ attributes cdecl :: cdecl
24   !gcc$ attributes stdcall :: stdcall
25   procedure(), pointer :: ptr
26   procedure(), pointer :: cdecl
27   procedure(), pointer :: stdcall
28   procedure(), pointer :: fastcall
29   !gcc$ attributes fastcall :: fastcall
30
31   ! Valid:
32   ptr => sub1
33   cdecl => sub2
34   stdcall => sub3
35   fastcall => sub4
36
37   ! Invalid:
38   ptr => sub3 ! { dg-error "mismatch in the calling convention" }
39   ptr => sub4 ! { dg-error "mismatch in the calling convention" }
40   cdecl => sub3 ! { dg-error "mismatch in the calling convention" }
41   cdecl => sub4 ! { dg-error "mismatch in the calling convention" }
42   stdcall => sub1 ! { dg-error "mismatch in the calling convention" }
43   stdcall => sub2 ! { dg-error "mismatch in the calling convention" }
44   stdcall => sub4 ! { dg-error "mismatch in the calling convention" }
45   fastcall => sub1 ! { dg-error "mismatch in the calling convention" }
46   fastcall => sub2 ! { dg-error "mismatch in the calling convention" }
47   fastcall => sub3 ! { dg-error "mismatch in the calling convention" }
48 end program