This PR correctly populates the `xType` field of the `IR.FnBody.case` constructor. It turns out that there is no obvious consequence for this being incorrect, because it is conservatively recomputed by the `Boxing` pass.
37 lines
1.8 KiB
Text
37 lines
1.8 KiB
Text
[Compiler.IR] [reset_reuse]
|
|
def Array.mapMUnsafe.map._at_.applyProjectionRules.spec_0._redArg (x_1 : obj) (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 : obj := Array.uget ◾ x_4 x_3 ◾;
|
|
case x_6 : obj of
|
|
Prod.mk →
|
|
let x_7 : obj := proj[0] x_6;
|
|
let x_19 : obj := reset[2] x_6;
|
|
case x_7 : obj of
|
|
Prod.mk →
|
|
let x_8 : obj := proj[0] x_7;
|
|
let x_9 : obj := proj[1] x_7;
|
|
let x_18 : obj := reset[2] x_7;
|
|
let x_10 : obj := 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 := Array.mapMUnsafe.map._at_.applyProjectionRules.spec_0._redArg x_1 x_2 x_15 x_16;
|
|
ret x_17
|
|
def Array.mapMUnsafe.map._at_.applyProjectionRules.spec_0 (x_1 : ◾) (x_2 : ◾) (x_3 : ◾) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
|
|
let x_8 : obj := Array.mapMUnsafe.map._at_.applyProjectionRules.spec_0._redArg x_4 x_5 x_6 x_7;
|
|
ret x_8
|
|
def applyProjectionRules._redArg (x_1 : obj) (x_2 : obj) : obj :=
|
|
let x_3 : usize := Array.usize ◾ x_1;
|
|
let x_4 : usize := 0;
|
|
let x_5 : obj := Array.mapMUnsafe.map._at_.applyProjectionRules.spec_0._redArg x_2 x_3 x_4 x_1;
|
|
ret x_5
|
|
def applyProjectionRules (x_1 : ◾) (x_2 : ◾) (x_3 : ◾) (x_4 : obj) (x_5 : obj) : obj :=
|
|
let x_6 : obj := applyProjectionRules._redArg x_4 x_5;
|
|
ret x_6
|