@@ -163,17 +163,20 @@ def g():
163
163
r5 :: str
164
164
r6 :: object
165
165
r7 :: str
166
- r8, r9 :: object
167
- r10 :: bit
168
- r11 :: None
166
+ r8 :: object
167
+ r9 :: object[1]
168
+ r10 :: object_ptr
169
+ r11 :: object
170
+ r12 :: bit
171
+ r13 :: None
169
172
L0:
170
173
L1:
171
174
r0 = builtins :: module
172
175
r1 = 'object'
173
176
r2 = CPyObject_GetAttr(r0, r1)
174
177
if is_error(r2) goto L3 (error at g:3) else goto L2
175
178
L2:
176
- r3 = PyObject_CallFunctionObjArgs (r2, 0)
179
+ r3 = PyObject_Vectorcall (r2, 0, 0 , 0)
177
180
dec_ref r2
178
181
if is_error(r3) goto L3 (error at g:3) else goto L10
179
182
L3:
@@ -184,30 +187,32 @@ L3:
184
187
r8 = CPyObject_GetAttr(r6, r7)
185
188
if is_error(r8) goto L6 (error at g:5) else goto L4
186
189
L4:
187
- r9 = PyObject_CallFunctionObjArgs(r8, r5, 0)
190
+ r9 = [r5]
191
+ r10 = load_address r9
192
+ r11 = PyObject_Vectorcall(r8, r10, 1, 0)
188
193
dec_ref r8
189
- if is_error(r9 ) goto L6 (error at g:5) else goto L11
194
+ if is_error(r11 ) goto L6 (error at g:5) else goto L11
190
195
L5:
191
196
CPy_RestoreExcInfo(r4)
192
197
dec_ref r4
193
198
goto L8
194
199
L6:
195
200
CPy_RestoreExcInfo(r4)
196
201
dec_ref r4
197
- r10 = CPy_KeepPropagating()
198
- if not r10 goto L9 else goto L7 :: bool
202
+ r12 = CPy_KeepPropagating()
203
+ if not r12 goto L9 else goto L7 :: bool
199
204
L7:
200
205
unreachable
201
206
L8:
202
207
return 1
203
208
L9:
204
- r11 = <error> :: None
205
- return r11
209
+ r13 = <error> :: None
210
+ return r13
206
211
L10:
207
212
dec_ref r3
208
213
goto L8
209
214
L11:
210
- dec_ref r9
215
+ dec_ref r11
211
216
goto L5
212
217
213
218
[case testGenopsTryFinally]
@@ -229,17 +234,20 @@ def a():
229
234
r10 :: str
230
235
r11 :: object
231
236
r12 :: str
232
- r13, r14 :: object
233
- r15 :: bit
234
- r16 :: str
237
+ r13 :: object
238
+ r14 :: object[1]
239
+ r15 :: object_ptr
240
+ r16 :: object
241
+ r17 :: bit
242
+ r18 :: str
235
243
L0:
236
244
L1:
237
245
r0 = builtins :: module
238
246
r1 = 'print'
239
247
r2 = CPyObject_GetAttr(r0, r1)
240
248
if is_error(r2) goto L5 (error at a:3) else goto L2
241
249
L2:
242
- r3 = PyObject_CallFunctionObjArgs (r2, 0)
250
+ r3 = PyObject_Vectorcall (r2, 0, 0 , 0)
243
251
dec_ref r2
244
252
if is_error(r3) goto L5 (error at a:3) else goto L19
245
253
L3:
262
270
r13 = CPyObject_GetAttr(r11, r12)
263
271
if is_error(r13) goto L20 (error at a:6) else goto L7
264
272
L7:
265
- r14 = PyObject_CallFunctionObjArgs(r13, r10, 0)
273
+ r14 = [r10]
274
+ r15 = load_address r14
275
+ r16 = PyObject_Vectorcall(r13, r15, 1, 0)
266
276
dec_ref r13
267
- if is_error(r14 ) goto L20 (error at a:6) else goto L21
277
+ if is_error(r16 ) goto L20 (error at a:6) else goto L21
268
278
L8:
269
279
if is_error(r7) goto L11 else goto L22
270
280
L9:
@@ -282,23 +292,23 @@ L14:
282
292
CPy_RestoreExcInfo(r7)
283
293
xdec_ref r7
284
294
L15:
285
- r15 = CPy_KeepPropagating()
286
- if not r15 goto L18 else goto L16 :: bool
295
+ r17 = CPy_KeepPropagating()
296
+ if not r17 goto L18 else goto L16 :: bool
287
297
L16:
288
298
unreachable
289
299
L17:
290
300
unreachable
291
301
L18:
292
- r16 = <error> :: str
293
- return r16
302
+ r18 = <error> :: str
303
+ return r18
294
304
L19:
295
305
dec_ref r3
296
306
goto L3
297
307
L20:
298
308
xdec_ref r5
299
309
goto L13
300
310
L21:
301
- dec_ref r14
311
+ dec_ref r16
302
312
goto L8
303
313
L22:
304
314
xdec_ref r5
@@ -446,59 +456,71 @@ def f(b):
446
456
r6 :: str
447
457
r7 :: object
448
458
r8 :: bool
449
- r9 :: object
450
- r10 :: None
459
+ r9 :: object[1]
460
+ r10 :: object_ptr
461
+ r11 :: object
462
+ r12 :: bool
463
+ r13 :: None
451
464
L0:
452
465
r0 = <error> :: str
453
466
v = r0
454
467
r1 = 'a'
455
468
inc_ref r1
456
469
u = r1
457
470
L1:
458
- if b goto L10 else goto L11 :: bool
471
+ if b goto L13 else goto L14 :: bool
459
472
L2:
460
473
r2 = 'b'
461
474
inc_ref r2
462
475
v = r2
463
476
r3 = v == u
464
477
r4 = r3 ^ 1
465
- if r4 goto L11 else goto L1 :: bool
478
+ if r4 goto L14 else goto L1 :: bool
466
479
L3:
467
480
r5 = builtins :: module
468
481
r6 = 'print'
469
482
r7 = CPyObject_GetAttr(r5, r6)
470
- if is_error(r7) goto L12 (error at f:7) else goto L4
483
+ if is_error(r7) goto L15 (error at f:7) else goto L4
471
484
L4:
472
- if is_error(v) goto L13 else goto L7
485
+ if is_error(v) goto L16 else goto L7
473
486
L5:
474
487
r8 = raise UnboundLocalError('local variable "v" referenced before assignment')
475
- if not r8 goto L9 (error at f:7 ) else goto L6 :: bool
488
+ if not r8 goto L12 (error at f:-1 ) else goto L6 :: bool
476
489
L6:
477
490
unreachable
478
491
L7:
479
- r9 = PyObject_CallFunctionObjArgs(r7, v, 0)
492
+ r9 = [v]
493
+ r10 = load_address r9
494
+ r11 = PyObject_Vectorcall(r7, r10, 1, 0)
480
495
dec_ref r7
481
- xdec_ref v
482
- if is_error(r9) goto L9 (error at f:7) else goto L14
496
+ if is_error(r11) goto L15 (error at f:7) else goto L17
483
497
L8:
484
- return 1
498
+ if is_error(v) goto L9 else goto L11
485
499
L9:
486
- r10 = <error> :: None
487
- return r10
500
+ r12 = raise UnboundLocalError('local variable "v" referenced before assignment')
501
+ if not r12 goto L12 (error at f:-1) else goto L10 :: bool
488
502
L10:
503
+ unreachable
504
+ L11:
505
+ xdec_ref v
506
+ return 1
507
+ L12:
508
+ r13 = <error> :: None
509
+ return r13
510
+ L13:
489
511
xdec_ref v
490
512
goto L2
491
- L11 :
513
+ L14 :
492
514
dec_ref u
493
515
goto L3
494
- L12 :
516
+ L15 :
495
517
xdec_ref v
496
- goto L9
497
- L13 :
518
+ goto L12
519
+ L16 :
498
520
dec_ref r7
499
521
goto L5
500
- L14 :
501
- dec_ref r9
522
+ L17 :
523
+ dec_ref r11
502
524
goto L8
503
525
504
526
[case testExceptionWithOverlappingErrorValue]
0 commit comments