Skip to content

Commit f18f3c5

Browse files
committed
WIP
1 parent 1b11177 commit f18f3c5

File tree

13 files changed

+764
-608
lines changed

13 files changed

+764
-608
lines changed

crates/cairo-lang-lowering/src/borrow_check/test_data/borrow_check

Lines changed: 81 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,29 +33,49 @@ extern fn use_a_drop(x: ADrop) nopanic;
3333
//! > lowering
3434
Parameters: v0: test::ACopy, v1: test::ADrop
3535
blk0 (root):
36+
Statements:
37+
End:
38+
Goto(blk1, {})
39+
40+
blk1:
3641
Statements:
3742
(v2: ()) <- struct_construct()
3843
(v3: core::bool) <- bool::True(v2{`true`})
3944
End:
4045
Match(match_enum(v3{`true`}) {
41-
bool::False(v5) => blk2,
42-
bool::True(v4) => blk1,
46+
bool::False(v5) => blk4,
47+
bool::True(v4) => blk3,
4348
})
4449

45-
blk1:
50+
blk2:
51+
Statements:
52+
End:
53+
Goto(blk2, {})
54+
55+
blk3:
4656
Statements:
4757
() <- test::use_a_copy(v0{`x`})
4858
() <- test::use_a_drop(v1{`y`})
4959
End:
50-
Goto(blk3, {})
60+
Goto(blk5, {})
5161

52-
blk2:
62+
blk4:
63+
Statements:
64+
End:
65+
Goto(blk6, {})
66+
67+
blk5:
68+
Statements:
69+
End:
70+
Goto(blk7, {})
71+
72+
blk6:
5373
Statements:
5474
() <- test::use_a_drop(v1{`y`})
5575
End:
56-
Goto(blk3, {})
76+
Goto(blk7, {})
5777

58-
blk3:
78+
blk7:
5979
Statements:
6080
() <- test::use_a_copy(v0{`x`})
6181
(v6: ()) <- struct_construct()
@@ -117,28 +137,48 @@ note: Trait has no implementation in context: core::traits::Destruct::<test::ACo
117137
//! > lowering
118138
Parameters: v0: test::ACopy, v1: test::ADrop
119139
blk0 (root):
140+
Statements:
141+
End:
142+
Goto(blk1, {})
143+
144+
blk1:
120145
Statements:
121146
(v2: ()) <- struct_construct()
122147
(v3: core::bool) <- bool::True(v2{`true`})
123148
End:
124149
Match(match_enum(v3{`true`}) {
125-
bool::False(v5) => blk2,
126-
bool::True(v4) => blk1,
150+
bool::False(v5) => blk4,
151+
bool::True(v4) => blk3,
127152
})
128153

129-
blk1:
154+
blk2:
155+
Statements:
156+
End:
157+
Goto(blk2, {})
158+
159+
blk3:
130160
Statements:
131161
() <- test::use_a_copy(v0{`x`})
132162
() <- test::use_a_drop(v1{`y`})
133163
End:
134-
Goto(blk3, {})
164+
Goto(blk5, {})
135165

136-
blk2:
166+
blk4:
137167
Statements:
138168
End:
139-
Goto(blk3, {})
169+
Goto(blk6, {})
140170

141-
blk3:
171+
blk5:
172+
Statements:
173+
End:
174+
Goto(blk7, {})
175+
176+
blk6:
177+
Statements:
178+
End:
179+
Goto(blk7, {})
180+
181+
blk7:
142182
Statements:
143183
End:
144184
Return(v1)
@@ -344,27 +384,47 @@ note: Trait has no implementation in context: core::traits::Copy::<test::ADrop>.
344384
//! > lowering
345385
Parameters: v0: test::ADrop, v1: test::ADrop
346386
blk0 (root):
387+
Statements:
388+
End:
389+
Goto(blk1, {})
390+
391+
blk1:
347392
Statements:
348393
(v2: ()) <- struct_construct()
349394
(v3: core::bool) <- bool::True(v2{`true`})
350395
End:
351396
Match(match_enum(v3{`true`}) {
352-
bool::False(v5) => blk2,
353-
bool::True(v4) => blk1,
397+
bool::False(v5) => blk4,
398+
bool::True(v4) => blk3,
354399
})
355400

356-
blk1:
401+
blk2:
402+
Statements:
403+
End:
404+
Goto(blk2, {})
405+
406+
blk3:
357407
Statements:
358408
() <- test::use_a_drop(v1{`y`})
359409
End:
360-
Goto(blk3, {v1 -> v6})
410+
Goto(blk5, {})
361411

362-
blk2:
412+
blk4:
363413
Statements:
364414
End:
365-
Goto(blk3, {v0 -> v6})
415+
Goto(blk6, {})
366416

367-
blk3:
417+
blk5:
418+
Statements:
419+
End:
420+
Goto(blk7, {v1 -> v6})
421+
422+
blk6:
423+
Statements:
424+
End:
425+
Goto(blk7, {v0 -> v6})
426+
427+
blk7:
368428
Statements:
369429
End:
370430
Return(v6)

crates/cairo-lang-lowering/src/inline/test_data/inline

Lines changed: 79 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -392,115 +392,155 @@ fn bar(a: felt252) -> felt252 {
392392
//! > before
393393
Parameters: v0: core::felt252
394394
blk0 (root):
395+
Statements:
396+
End:
397+
Goto(blk1, {})
398+
399+
blk1:
395400
Statements:
396401
(v1: core::felt252, v2: @core::felt252) <- snapshot(v0)
397402
(v3: core::felt252) <- 2
398403
(v4: core::felt252, v5: @core::felt252) <- snapshot(v3)
399404
(v6: core::bool) <- core::Felt252PartialEq::eq(v2, v5)
400405
End:
401406
Match(match_enum(v6) {
402-
bool::False(v9) => blk2,
403-
bool::True(v7) => blk1,
407+
bool::False(v9) => blk4,
408+
bool::True(v7) => blk3,
404409
})
405410

406-
blk1:
411+
blk2:
412+
Statements:
413+
End:
414+
Goto(blk2, {})
415+
416+
blk3:
407417
Statements:
408418
(v8: core::felt252) <- test::bar(v1)
409419
End:
410-
Goto(blk3, {v8 -> v10})
420+
Goto(blk5, {v8 -> v10})
411421

412-
blk2:
422+
blk4:
413423
Statements:
414424
End:
415-
Goto(blk3, {v1 -> v10})
425+
Goto(blk6, {})
416426

417-
blk3:
427+
blk5:
418428
Statements:
419429
End:
420-
Return(v10)
430+
Goto(blk7, {v1 -> v12, v10 -> v11})
431+
432+
blk6:
433+
Statements:
434+
End:
435+
Goto(blk7, {v0 -> v12, v0 -> v11})
436+
437+
blk7:
438+
Statements:
439+
End:
440+
Return(v11)
421441

422442
//! > after
423443
Parameters: v0: core::felt252
424444
blk0 (root):
425445
Statements:
426-
(v1: core::felt252, v2: @core::felt252) <- snapshot(v0)
427-
(v3: core::felt252) <- 2
428-
(v4: core::felt252, v5: @core::felt252) <- snapshot(v3)
429446
End:
430-
Goto(blk4, {})
447+
Goto(blk1, {})
431448

432449
blk1:
433450
Statements:
451+
(v1: core::felt252, v2: @core::felt252) <- snapshot(v0)
452+
(v3: core::felt252) <- 2
453+
(v4: core::felt252, v5: @core::felt252) <- snapshot(v3)
434454
End:
435455
Goto(blk8, {})
436456

437457
blk2:
438458
Statements:
439459
End:
440-
Goto(blk3, {v1 -> v10})
460+
Goto(blk2, {})
441461

442462
blk3:
443463
Statements:
444464
End:
445-
Return(v10)
465+
Goto(blk12, {})
446466

447467
blk4:
448468
Statements:
449-
(v11: core::felt252) <- desnap(v2)
450-
(v12: core::felt252) <- desnap(v5)
451-
(v13: core::felt252) <- core::felt252_sub(v11, v12)
452469
End:
453-
Match(match core::felt252_is_zero(v13) {
454-
IsZeroResult::Zero => blk5,
455-
IsZeroResult::NonZero(v14) => blk6,
456-
})
470+
Goto(blk6, {})
457471

458472
blk5:
459473
Statements:
460-
(v15: ()) <- struct_construct()
461-
(v16: core::bool) <- bool::True(v15)
462474
End:
463-
Goto(blk7, {v16 -> v6})
475+
Goto(blk7, {v1 -> v12, v10 -> v11})
464476

465477
blk6:
466478
Statements:
467-
(v17: ()) <- struct_construct()
468-
(v18: core::bool) <- bool::False(v17)
469479
End:
470-
Goto(blk7, {v18 -> v6})
480+
Goto(blk7, {v0 -> v12, v0 -> v11})
471481

472482
blk7:
473483
Statements:
474484
End:
475-
Match(match_enum(v6) {
476-
bool::False(v9) => blk2,
477-
bool::True(v7) => blk1,
478-
})
485+
Return(v11)
479486

480487
blk8:
481488
Statements:
489+
(v13: core::felt252) <- desnap(v2)
490+
(v14: core::felt252) <- desnap(v5)
491+
(v15: core::felt252) <- core::felt252_sub(v13, v14)
482492
End:
483-
Match(match core::felt252_is_zero(v1) {
493+
Match(match core::felt252_is_zero(v15) {
484494
IsZeroResult::Zero => blk9,
485-
IsZeroResult::NonZero(v19) => blk10,
495+
IsZeroResult::NonZero(v16) => blk10,
486496
})
487497

488498
blk9:
489499
Statements:
490-
(v20: core::felt252) <- 1
500+
(v17: ()) <- struct_construct()
501+
(v18: core::bool) <- bool::True(v17)
491502
End:
492-
Goto(blk11, {v20 -> v8})
503+
Goto(blk11, {v18 -> v6})
493504

494505
blk10:
495506
Statements:
496-
(v21: core::felt252) <- 0
507+
(v19: ()) <- struct_construct()
508+
(v20: core::bool) <- bool::False(v19)
497509
End:
498-
Goto(blk11, {v21 -> v8})
510+
Goto(blk11, {v20 -> v6})
499511

500512
blk11:
501513
Statements:
502514
End:
503-
Goto(blk3, {v8 -> v10})
515+
Match(match_enum(v6) {
516+
bool::False(v9) => blk4,
517+
bool::True(v7) => blk3,
518+
})
519+
520+
blk12:
521+
Statements:
522+
End:
523+
Match(match core::felt252_is_zero(v1) {
524+
IsZeroResult::Zero => blk13,
525+
IsZeroResult::NonZero(v21) => blk14,
526+
})
527+
528+
blk13:
529+
Statements:
530+
(v22: core::felt252) <- 1
531+
End:
532+
Goto(blk15, {v22 -> v8})
533+
534+
blk14:
535+
Statements:
536+
(v23: core::felt252) <- 0
537+
End:
538+
Goto(blk15, {v23 -> v8})
539+
540+
blk15:
541+
Statements:
542+
End:
543+
Goto(blk5, {v8 -> v10})
504544

505545
//! > lowering_diagnostics
506546

@@ -943,35 +983,7 @@ End:
943983
Parameters: v0: core::felt252
944984
blk0 (root):
945985
Statements:
946-
End:
947-
Goto(blk1, {})
948-
949-
blk1:
950-
Statements:
951-
End:
952-
Match(match core::felt252_is_zero(v0) {
953-
IsZeroResult::Zero => blk2,
954-
IsZeroResult::NonZero(v2) => blk3,
955-
})
956-
957-
blk2:
958-
Statements:
959-
End:
960-
Goto(blk4, {})
961-
962-
blk3:
963-
Statements:
964-
End:
965-
Goto(blk4, {})
966-
967-
blk4:
968-
Statements:
969-
(v3: core::felt252) <- 1
970-
End:
971-
Goto(blk5, {v3 -> v1})
972-
973-
blk5:
974-
Statements:
986+
(v1: core::felt252) <- test::bar(v0)
975987
End:
976988
Return(v1)
977989

0 commit comments

Comments
 (0)