This PR splits up the SCC that the compiler manages into (potentially) multiple ones after performing lambda lifting. This aids both the closed term extractor and the elimDeadBranches pass as they are both negatively influenced when more declarations than required are within one SCC.
40 lines
2.1 KiB
Text
40 lines
2.1 KiB
Text
[Compiler.IR] [reset_reuse]
|
|
def _private.Init.Data.Array.Basic.0.Array.mapMUnsafe.map._at_.applyProjectionRules.spec_0._redArg (x_1 : tobj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
|
|
let x_5 : u8 := USize.decLt x_3 x_2;
|
|
case x_5 : u8 of
|
|
Bool.false →
|
|
ret x_4
|
|
Bool.true →
|
|
let x_6 : tobj := Array.uget ◾ x_4 x_3 ◾;
|
|
case x_6 : obj of
|
|
Prod.mk →
|
|
let x_7 : tobj := proj[0] x_6;
|
|
let x_19 : tobj := reset[2] x_6;
|
|
case x_7 : obj of
|
|
Prod.mk →
|
|
let x_8 : tobj := proj[0] x_7;
|
|
let x_9 : tobj := proj[1] x_7;
|
|
let x_18 : tobj := reset[2] x_7;
|
|
let x_10 : tagged := 0;
|
|
let x_11 : obj := Array.uset ◾ x_4 x_3 x_10 ◾;
|
|
let x_12 : obj := reuse x_18 in ctor_0[Prod.mk] x_8 x_9;
|
|
let x_13 : obj := reuse x_19 in ctor_0[Prod.mk] x_12 x_1;
|
|
let x_14 : usize := 1;
|
|
let x_15 : usize := USize.add x_3 x_14;
|
|
let x_16 : obj := Array.uset ◾ x_11 x_3 x_13 ◾;
|
|
let x_17 : obj := _private.Init.Data.Array.Basic.0.Array.mapMUnsafe.map._at_.applyProjectionRules.spec_0._redArg x_1 x_2 x_15 x_16;
|
|
ret x_17
|
|
[Compiler.IR] [reset_reuse]
|
|
def applyProjectionRules._redArg (x_1 : obj) (x_2 : tobj) : obj :=
|
|
let x_3 : usize := Array.usize ◾ x_1;
|
|
let x_4 : usize := 0;
|
|
let x_5 : obj := _private.Init.Data.Array.Basic.0.Array.mapMUnsafe.map._at_.applyProjectionRules.spec_0._redArg x_2 x_3 x_4 x_1;
|
|
ret x_5
|
|
[Compiler.IR] [reset_reuse]
|
|
def applyProjectionRules (x_1 : ◾) (x_2 : ◾) (x_3 : ◾) (x_4 : obj) (x_5 : tobj) : obj :=
|
|
let x_6 : obj := applyProjectionRules._redArg x_4 x_5;
|
|
ret x_6
|
|
[Compiler.IR] [reset_reuse]
|
|
def _private.Init.Data.Array.Basic.0.Array.mapMUnsafe.map._at_.applyProjectionRules.spec_0 (x_1 : ◾) (x_2 : ◾) (x_3 : ◾) (x_4 : tobj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
|
|
let x_8 : obj := _private.Init.Data.Array.Basic.0.Array.mapMUnsafe.map._at_.applyProjectionRules.spec_0._redArg x_4 x_5 x_6 x_7;
|
|
ret x_8
|