@@ -140,11 +140,9 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
140
140
case OAS , OAS2FUNC :
141
141
instrumentnode (& n .Left , init , 1 , 0 )
142
142
instrumentnode (& n .Right , init , 0 , 0 )
143
- goto ret
144
143
145
144
// can't matter
146
145
case OCFUNC , OVARKILL , OVARLIVE :
147
- goto ret
148
146
149
147
case OBLOCK :
150
148
ls := n .List .Slice ()
@@ -162,26 +160,21 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
162
160
instrumentnode (& ls [i ], & ls [i ].Ninit , 0 , 0 )
163
161
afterCall = (op == OCALLFUNC || op == OCALLMETH || op == OCALLINTER )
164
162
}
165
- goto ret
166
163
167
164
case ODEFER :
168
165
instrumentnode (& n .Left , init , 0 , 0 )
169
- goto ret
170
166
171
167
case OPROC :
172
168
instrumentnode (& n .Left , init , 0 , 0 )
173
- goto ret
174
169
175
170
case OCALLINTER :
176
171
instrumentnode (& n .Left , init , 0 , 0 )
177
- goto ret
178
172
179
173
// Instrument dst argument of runtime.writebarrier* calls
180
174
// as we do not instrument runtime code.
181
175
// typedslicecopy is instrumented in runtime.
182
176
case OCALLFUNC :
183
177
instrumentnode (& n .Left , init , 0 , 0 )
184
- goto ret
185
178
186
179
case ONOT ,
187
180
OMINUS ,
@@ -190,28 +183,23 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
190
183
OIMAG ,
191
184
OCOM :
192
185
instrumentnode (& n .Left , init , wr , 0 )
193
- goto ret
194
186
195
187
case ODOTINTER :
196
188
instrumentnode (& n .Left , init , 0 , 0 )
197
- goto ret
198
189
199
190
case ODOT :
200
191
instrumentnode (& n .Left , init , 0 , 1 )
201
192
callinstr (& n , init , wr , skip )
202
- goto ret
203
193
204
194
case ODOTPTR : // dst = (*x).f with implicit *; otherwise it's ODOT+OIND
205
195
instrumentnode (& n .Left , init , 0 , 0 )
206
196
207
197
callinstr (& n , init , wr , skip )
208
- goto ret
209
198
210
199
case OIND : // *p
211
200
instrumentnode (& n .Left , init , 0 , 0 )
212
201
213
202
callinstr (& n , init , wr , skip )
214
- goto ret
215
203
216
204
case OSPTR , OLEN , OCAP :
217
205
instrumentnode (& n .Left , init , 0 , 0 )
@@ -223,8 +211,6 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
223
211
callinstr (& n1 , init , 0 , skip )
224
212
}
225
213
226
- goto ret
227
-
228
214
case OLSH ,
229
215
ORSH ,
230
216
OAND ,
@@ -243,7 +229,6 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
243
229
OCOMPLEX :
244
230
instrumentnode (& n .Left , init , wr , 0 )
245
231
instrumentnode (& n .Right , init , wr , 0 )
246
- goto ret
247
232
248
233
case OANDAND , OOROR :
249
234
instrumentnode (& n .Left , init , wr , 0 )
@@ -254,24 +239,18 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
254
239
// so instrumentation goes to n->right->ninit, not init.
255
240
instrumentnode (& n .Right , & n .Right .Ninit , wr , 0 )
256
241
257
- goto ret
258
-
259
242
case ONAME :
260
243
callinstr (& n , init , wr , skip )
261
- goto ret
262
244
263
245
case OCONV :
264
246
instrumentnode (& n .Left , init , wr , 0 )
265
- goto ret
266
247
267
248
case OCONVNOP :
268
249
instrumentnode (& n .Left , init , wr , 0 )
269
- goto ret
270
250
271
251
case ODIV , OMOD :
272
252
instrumentnode (& n .Left , init , wr , 0 )
273
253
instrumentnode (& n .Right , init , wr , 0 )
274
- goto ret
275
254
276
255
case OINDEX :
277
256
if ! n .Left .Type .IsArray () {
@@ -281,14 +260,13 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
281
260
instrumentnode (& n .Left , init , wr , 0 )
282
261
283
262
instrumentnode (& n .Right , init , 0 , 0 )
284
- goto ret
263
+ break
285
264
}
286
265
287
266
instrumentnode (& n .Right , init , 0 , 0 )
288
267
if ! n .Left .Type .IsString () {
289
268
callinstr (& n , init , wr , skip )
290
269
}
291
- goto ret
292
270
293
271
case OSLICE , OSLICEARR , OSLICE3 , OSLICE3ARR , OSLICESTR :
294
272
instrumentnode (& n .Left , init , 0 , 0 )
@@ -297,34 +275,26 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
297
275
instrumentnode (& high , init , 0 , 0 )
298
276
instrumentnode (& max , init , 0 , 0 )
299
277
n .SetSliceBounds (low , high , max )
300
- goto ret
301
278
302
279
case OADDR :
303
280
instrumentnode (& n .Left , init , 0 , 1 )
304
- goto ret
305
281
306
282
// n->left is Type* which is not interesting.
307
283
case OEFACE :
308
284
instrumentnode (& n .Right , init , 0 , 0 )
309
285
310
- goto ret
311
-
312
286
case OITAB , OIDATA :
313
287
instrumentnode (& n .Left , init , 0 , 0 )
314
- goto ret
315
288
316
289
case OSTRARRAYBYTETMP :
317
290
instrumentnode (& n .Left , init , 0 , 0 )
318
- goto ret
319
291
320
292
case OAS2DOTTYPE :
321
293
instrumentnode (& n .Left , init , 1 , 0 )
322
294
instrumentnode (& n .Right , init , 0 , 0 )
323
- goto ret
324
295
325
296
case ODOTTYPE , ODOTTYPE2 :
326
297
instrumentnode (& n .Left , init , 0 , 0 )
327
- goto ret
328
298
329
299
// should not appear in AST by now
330
300
case OSEND ,
@@ -376,13 +346,11 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
376
346
if n .Right != nil {
377
347
instrumentnode (& n .Right , & n .Right .Ninit , 0 , 0 )
378
348
}
379
- goto ret
380
349
381
350
case OIF , OSWITCH :
382
351
if n .Left != nil {
383
352
instrumentnode (& n .Left , & n .Left .Ninit , 0 , 0 )
384
353
}
385
- goto ret
386
354
387
355
// just do generic traversal
388
356
case OCALLMETH ,
@@ -395,7 +363,6 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
395
363
OFALL ,
396
364
OGOTO ,
397
365
OLABEL :
398
- goto ret
399
366
400
367
// does not require instrumentation
401
368
case OPRINT , // don't bother instrumenting it
@@ -411,10 +378,8 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
411
378
ONONAME ,
412
379
OLITERAL ,
413
380
OTYPESW : // ignored by code generation, do not instrument.
414
- goto ret
415
381
}
416
382
417
- ret:
418
383
if n .Op != OBLOCK { // OBLOCK is handled above in a special way.
419
384
instrumentlist (n .List , init )
420
385
}
0 commit comments