gdb/fortran: Nested subroutine support
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.fortran / nested-funcs.f90
index 3431705a75638c146cd505006204995ae0beb892..ce2f269e484023393cc65b5475066c5ae641f20c 100755 (executable)
 ! You should have received a copy of the GNU General Public License\r
 ! along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
 \r
-program TestNestedFuncs\r
+module mod1\r
+  integer :: var_i = 1\r
+  integer :: var_const\r
+  parameter (var_const = 20)\r
+\r
+CONTAINS\r
+\r
+  SUBROUTINE sub_nested_outer\r
+    integer :: local_int\r
+    character (len=20) :: name\r
+\r
+    name = 'sub_nested_outer_mod1'\r
+    local_int = 11\r
+\r
+  END SUBROUTINE sub_nested_outer\r
+end module mod1\r
+\r
+! Public sub_nested_outer\r
+SUBROUTINE sub_nested_outer\r
+  integer :: local_int\r
+  character (len=16) :: name\r
+\r
+  name = 'sub_nested_outer external'\r
+  local_int = 11\r
+END SUBROUTINE sub_nested_outer\r
+\r
+! Needed indirection to call public sub_nested_outer from main\r
+SUBROUTINE sub_nested_outer_ind\r
+  character (len=20) :: name\r
+\r
+  name = 'sub_nested_outer_ind'\r
+  CALL sub_nested_outer\r
+END SUBROUTINE sub_nested_outer_ind\r
+\r
+! public routine with internal subroutine\r
+SUBROUTINE sub_with_sub_nested_outer()\r
+  integer :: local_int\r
+  character (len=16) :: name\r
+\r
+  name = 'subroutine_with_int_sub'\r
+  local_int = 1\r
+\r
+  CALL sub_nested_outer  ! Should call the internal fct\r
+\r
+CONTAINS\r
 \r
+  SUBROUTINE sub_nested_outer\r
+    integer :: local_int\r
+    local_int = 11\r
+  END SUBROUTINE sub_nested_outer\r
+\r
+END SUBROUTINE sub_with_sub_nested_outer\r
+\r
+! Main\r
+program TestNestedFuncs\r
+  USE mod1, sub_nested_outer_use_mod1 => sub_nested_outer\r
   IMPLICIT NONE\r
 \r
   TYPE :: t_State\r
@@ -22,10 +76,13 @@ program TestNestedFuncs
   END TYPE t_State\r
 \r
   TYPE (t_State) :: v_state\r
-  integer index\r
+  integer index, local_int\r
 \r
   index = 13\r
-  CALL sub_nested_outer\r
+  CALL sub_nested_outer            ! Call internal sub_nested_outer\r
+  CALL sub_nested_outer_ind        ! Call external sub_nested_outer via sub_nested_outer_ind\r
+  CALL sub_with_sub_nested_outer   ! Call external routine with nested sub_nested_outer\r
+  CALL sub_nested_outer_use_mod1   ! Call sub_nested_outer imported via module\r
   index = 11              ! BP_main\r
   v_state%code = 27\r
 \r
This page took 0.057648 seconds and 4 git commands to generate.