|
5 | 5 | !> @brief Simple runtime call tracing helpers. |
6 | 6 | module m_trace |
7 | 7 |
|
8 | | - use iso_fortran_env, only: output_unit |
9 | | - |
10 | 8 | implicit none |
11 | 9 |
|
12 | 10 | private |
13 | | - public :: s_trace_enter, s_trace_call, s_trace_global_call, s_trace_point_begin, s_trace_point_end |
14 | | - |
15 | | - logical, private :: trace_initialized = .false. |
16 | | - logical, private :: trace_enabled = .false. |
17 | | - logical, private :: trace_point_enabled = .false. |
18 | | - logical, private :: trace_point_middle = .false. |
19 | | - integer, private :: trace_j = 0 |
20 | | - integer, private :: trace_k = 0 |
21 | | - integer, private :: trace_l = 0 |
22 | | - integer, private :: trace_point_depth = 0 |
23 | | - character(len=64), private :: trace_point_vars = '' |
| 11 | + public :: s_trace_point_begin, s_trace_point_end |
| 12 | + |
| 13 | + logical, private :: trace_initialized = .false. |
| 14 | + logical, private :: trace_enabled = .false. |
| 15 | + logical, private :: trace_point_enabled = .false. |
| 16 | + logical, private :: trace_point_middle = .false. |
| 17 | + integer, private :: trace_j = 0 |
| 18 | + integer, private :: trace_k = 0 |
| 19 | + integer, private :: trace_l = 0 |
| 20 | + integer, private :: trace_point_depth = 0 |
24 | 21 |
|
25 | 22 | interface |
26 | 23 | subroutine c_trace_point_begin() bind(C, name="mfc_trace_point_begin") |
@@ -70,78 +67,27 @@ subroutine s_initialize_trace |
70 | 67 | end if |
71 | 68 | end if |
72 | 69 |
|
73 | | - call get_environment_variable('MFC_TRACE_POINT_VARS', env_value, length=env_len) |
74 | | - if (env_len > 0) trace_point_vars = trim(env_value(:env_len)) |
75 | | - |
76 | 70 | trace_initialized = .true. |
77 | 71 |
|
78 | 72 | end subroutine s_initialize_trace |
79 | 73 |
|
80 | | - !> Emit a live call-trace line when MFC_TRACE is enabled. |
81 | | - subroutine s_trace_enter(name) |
82 | | - |
83 | | - character(len=*), intent(in) :: name |
84 | | - |
85 | | - call s_initialize_trace() |
86 | | - |
87 | | - if (.not. trace_enabled) return |
88 | | - if (trace_point_enabled .and. trace_point_depth <= 0) return |
89 | | - |
90 | | - write (output_unit, '(A,A)') 'TRACE ', trim(name) |
91 | | - call flush (output_unit) |
92 | | - |
93 | | - end subroutine s_trace_enter |
94 | | - |
95 | | - !> Emit a live call-site trace when the current trace scope is active. |
96 | | - subroutine s_trace_call(name) |
97 | | - |
98 | | - character(len=*), intent(in) :: name |
99 | | - |
100 | | - call s_initialize_trace() |
101 | | - |
102 | | - if (.not. trace_enabled) return |
103 | | - if (trace_point_enabled .and. trace_point_depth <= 0) return |
104 | | - |
105 | | - write (output_unit, '(A,A)') 'TRACE ', trim(name) |
106 | | - call flush (output_unit) |
107 | | - |
108 | | - end subroutine s_trace_call |
109 | | - |
110 | | - !> Emit a call-site trace even when point tracing has not entered a cell loop yet. |
111 | | - subroutine s_trace_global_call(name) |
112 | | - |
113 | | - character(len=*), intent(in) :: name |
114 | | - |
115 | | - call s_initialize_trace() |
116 | | - |
117 | | - if (.not. trace_enabled) return |
118 | | - |
119 | | - write (output_unit, '(A,A)') 'TRACE ', trim(name) |
120 | | - call flush (output_unit) |
121 | | - |
122 | | - end subroutine s_trace_global_call |
123 | | - |
124 | 74 | !> Enable nested routine-entry tracing while a call at MFC_TRACE_POINT executes. |
125 | | - subroutine s_trace_point_begin(j, k, l, vars, mid_j, mid_k, mid_l) |
126 | | - |
127 | | - integer, intent(in) :: j |
128 | | - integer, intent(in) :: k |
129 | | - integer, intent(in) :: l |
130 | | - character(len=*), intent(in) :: vars |
131 | | - integer, intent(in) :: mid_j |
132 | | - integer, intent(in) :: mid_k |
133 | | - integer, intent(in) :: mid_l |
134 | | - integer :: target_j |
135 | | - integer :: target_k |
136 | | - integer :: target_l |
| 75 | + subroutine s_trace_point_begin(j, k, l, mid_j, mid_k, mid_l) |
| 76 | + |
| 77 | + integer, intent(in) :: j |
| 78 | + integer, intent(in) :: k |
| 79 | + integer, intent(in) :: l |
| 80 | + integer, intent(in) :: mid_j |
| 81 | + integer, intent(in) :: mid_k |
| 82 | + integer, intent(in) :: mid_l |
| 83 | + integer :: target_j |
| 84 | + integer :: target_k |
| 85 | + integer :: target_l |
137 | 86 |
|
138 | 87 | call s_initialize_trace() |
139 | 88 |
|
140 | 89 | if (.not. trace_enabled) return |
141 | 90 | if (.not. trace_point_enabled) return |
142 | | - if (len_trim(trace_point_vars) > 0 .and. trim(trace_point_vars) /= 'any') then |
143 | | - if (trim(vars) /= trim(trace_point_vars)) return |
144 | | - end if |
145 | 91 | if (trace_point_middle) then |
146 | 92 | target_j = mid_j |
147 | 93 | target_k = mid_k |
|
0 commit comments