! { dg-do compile } ! { dg-require-weak "" } ! { dg-skip-if "" { x86_64-*-mingw* } } ! 1. ! { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?__foo_MOD_abc" { target { ! nvptx-*-* } } } } ! { dg-final { scan-assembler-times "\\.weak \\.global \\.align 4 \\.u32 __foo_MOD_abc" 1 { target nvptx-*-* } } } module foo implicit none !GCC$ ATTRIBUTES weak :: abc real :: abc(7) end module ! 2. ! { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?impl1" { target { ! nvptx-*-* } } } } ! { dg-final { scan-assembler-times "\\.weak \\.func \\(\\.param\\.u32 %value_out\\) impl1" 2 { target nvptx-*-* } } } integer function impl1() implicit none !GCC$ ATTRIBUTES weak :: impl1 end function ! 3. ! { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?bar__" { target { ! nvptx-*-* } } } } ! { dg-final { scan-assembler-times "\\.weak \\.func \\(\\.param\\.u32 %value_out\\) bar__" 2 { target nvptx-*-* } } } integer function impl2() bind(c,name='bar__') implicit none !GCC$ ATTRIBUTES weak :: impl2 end function