This commit is contained in:
J.Teeuwissen 2023-06-07 17:06:19 +02:00 committed by Folkert
parent d735742fdb
commit 46bff75517
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
13 changed files with 365 additions and 320 deletions

View file

@ -16,22 +16,22 @@ procedure Test.5 (Test.67, Test.68, Test.69):
if Test.53 then
let Test.32 : [<rnu><null>, C *self *self] = UnionAtIndex (Id 0) (Index 0) Test.29;
let Test.33 : [<rnu><null>, C *self *self] = UnionAtIndex (Id 0) (Index 1) Test.29;
joinpoint #Derived_gen.3 #Derived_gen.8:
let #Derived_gen.9 : [<rnu>C [<rnu><null>, C *self *self] *self, <null>] = lowlevel PtrCast #Derived_gen.8;
let Test.43 : [<rnu>C [<rnu><null>, C *self *self] *self, <null>] = Reuse #Derived_gen.9 UpdateModeId { id: 2 } TagId(1) Test.33 Test.30;
joinpoint #Derived_gen.0 #Derived_gen.5:
let #Derived_gen.6 : [<rnu>C [<rnu><null>, C *self *self] *self, <null>] = lowlevel PtrCast #Derived_gen.5;
let Test.43 : [<rnu>C [<rnu><null>, C *self *self] *self, <null>] = Reuse #Derived_gen.6 UpdateModeId { id: 2 } TagId(1) Test.33 Test.30;
let Test.45 : I64 = 1i64;
let Test.44 : I64 = CallByName Num.19 Test.31 Test.45;
jump Test.41 Test.32 Test.43 Test.44;
in
let #Derived_gen.4 : Int1 = lowlevel RefCountIsUnique Test.29;
if #Derived_gen.4 then
let #Derived_gen.10 : [<rnu><null>, C *self *self] = ResetRef { symbol: Test.29, id: UpdateModeId { id: 3 } };
jump #Derived_gen.3 #Derived_gen.10;
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique Test.29;
if #Derived_gen.1 then
let #Derived_gen.7 : [<rnu><null>, C *self *self] = ResetRef { symbol: Test.29, id: UpdateModeId { id: 3 } };
jump #Derived_gen.0 #Derived_gen.7;
else
inc Test.32;
inc Test.33;
let #Derived_gen.11 : [<rnu><null>, C *self *self] = ResetRef { symbol: Test.29, id: UpdateModeId { id: 4 } };
jump #Derived_gen.3 #Derived_gen.11;
let #Derived_gen.8 : [<rnu><null>, C *self *self] = ResetRef { symbol: Test.29, id: UpdateModeId { id: 4 } };
jump #Derived_gen.0 #Derived_gen.8;
else
let Test.48 : U8 = 1i64;
let Test.49 : U8 = GetTagId Test.30;
@ -39,8 +39,8 @@ procedure Test.5 (Test.67, Test.68, Test.69):
if Test.50 then
let Test.35 : [<rnu><null>, C *self *self] = UnionAtIndex (Id 1) (Index 0) Test.30;
let Test.36 : [<rnu>C [<rnu><null>, C *self *self] *self, <null>] = UnionAtIndex (Id 1) (Index 1) Test.30;
let #Derived_gen.5 : Int1 = lowlevel RefCountIsUnique Test.30;
if #Derived_gen.5 then
let #Derived_gen.2 : Int1 = lowlevel RefCountIsUnique Test.30;
if #Derived_gen.2 then
decref Test.30;
jump Test.41 Test.35 Test.36 Test.31;
else

View file

@ -58,7 +58,7 @@ procedure Test.11 (Test.53, Test.54):
joinpoint Test.27 Test.12 #Attr.12:
let Test.8 : Int1 = UnionAtIndex (Id 2) (Index 1) #Attr.12;
let Test.7 : [<rnw><null>, C *self Int1, C *self Int1] = UnionAtIndex (Id 2) (Index 0) #Attr.12;
joinpoint #Derived_gen.2:
joinpoint #Derived_gen.0:
joinpoint Test.31 Test.29:
let Test.30 : U8 = GetTagId Test.7;
switch Test.30:
@ -85,14 +85,14 @@ procedure Test.11 (Test.53, Test.54):
jump Test.31 Test.32;
in
let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.3 then
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.1 then
decref #Attr.12;
jump #Derived_gen.2;
jump #Derived_gen.0;
else
inc Test.7;
decref #Attr.12;
jump #Derived_gen.2;
jump #Derived_gen.0;
in
jump Test.27 Test.53 Test.54;
@ -125,7 +125,7 @@ procedure Test.6 (Test.7, Test.8, Test.5):
procedure Test.9 (Test.10, #Attr.12):
let Test.8 : Int1 = UnionAtIndex (Id 1) (Index 1) #Attr.12;
let Test.7 : [<rnw><null>, C *self Int1, C *self Int1] = UnionAtIndex (Id 1) (Index 0) #Attr.12;
joinpoint #Derived_gen.4:
joinpoint #Derived_gen.2:
let Test.37 : U8 = GetTagId Test.7;
joinpoint Test.38 Test.36:
switch Test.8:
@ -153,14 +153,14 @@ procedure Test.9 (Test.10, #Attr.12):
jump Test.38 Test.39;
in
let #Derived_gen.5 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.5 then
let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.3 then
decref #Attr.12;
jump #Derived_gen.4;
jump #Derived_gen.2;
else
inc Test.7;
decref #Attr.12;
jump #Derived_gen.4;
jump #Derived_gen.2;
procedure Test.0 ():
let Test.41 : Int1 = false;

View file

@ -0,0 +1,26 @@
procedure Bool.2 ():
let Bool.23 : Int1 = true;
ret Bool.23;
procedure Test.2 (Test.5):
let Test.6 : Int1 = CallByName Bool.2;
let Test.7 : Str = StructAtIndex 0 Test.5;
inc 2 Test.7;
joinpoint Test.13 Test.8:
let Test.11 : {Str, {Str, Str}} = Struct {Test.7, Test.5};
let Test.10 : {Str, {Str, {Str, Str}}} = Struct {Test.7, Test.11};
ret Test.10;
in
if Test.6 then
let Test.12 : I64 = 1i64;
jump Test.13 Test.12;
else
let Test.12 : I64 = 0i64;
jump Test.13 Test.12;
procedure Test.0 ():
let Test.3 : Str = "value";
inc Test.3;
let Test.4 : {Str, Str} = Struct {Test.3, Test.3};
let Test.9 : {Str, {Str, {Str, Str}}} = CallByName Test.2 Test.4;
ret Test.9;

View file

@ -1,27 +0,0 @@
procedure Bool.2 ():
let Bool.23 : Int1 = true;
ret Bool.23;
procedure Test.2 (Test.5):
let Test.6 : Int1 = CallByName Bool.2;
let Test.7 : {Str, Str} = StructAtIndex 0 Test.5;
inc 2 Test.7;
joinpoint Test.13 Test.8:
let Test.9 : {{Str, Str}, {{Str, Str}, Str}} = Struct {Test.7, Test.5};
let Test.11 : {{Str, Str}, {{Str, Str}, {{Str, Str}, Str}}} = Struct {Test.7, Test.9};
ret Test.11;
in
if Test.6 then
let Test.12 : I64 = 1i64;
jump Test.13 Test.12;
else
let Test.12 : I64 = 0i64;
jump Test.13 Test.12;
procedure Test.0 ():
let Test.3 : Str = "value";
inc 2 Test.3;
let Test.14 : {Str, Str} = Struct {Test.3, Test.3};
let Test.4 : {{Str, Str}, Str} = Struct {Test.14, Test.3};
let Test.10 : {{Str, Str}, {{Str, Str}, {{Str, Str}, Str}}} = CallByName Test.2 Test.4;
ret Test.10;

View file

@ -13,8 +13,8 @@ procedure Test.2 (Test.19):
ret Test.14;
else
let Test.5 : [<rnu><null>, C *self] = UnionAtIndex (Id 0) (Index 0) Test.7;
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique Test.7;
if #Derived_gen.1 then
let #Derived_gen.0 : Int1 = lowlevel RefCountIsUnique Test.7;
if #Derived_gen.0 then
decref Test.7;
jump Test.13 Test.5;
else

View file

@ -110,17 +110,17 @@ procedure Test.1 (Test.77):
let Test.49 : [<r>C I64, C List *self] = StructAtIndex 1 Test.6;
dec Test.50;
let Test.10 : I64 = UnionAtIndex (Id 0) (Index 0) Test.49;
joinpoint #Derived_gen.4:
joinpoint #Derived_gen.0:
let Test.27 : Int1 = CallByName Num.22 Test.8 Test.10;
ret Test.27;
in
let #Derived_gen.5 : Int1 = lowlevel RefCountIsUnique Test.49;
if #Derived_gen.5 then
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique Test.49;
if #Derived_gen.1 then
decref Test.49;
jump #Derived_gen.4;
jump #Derived_gen.0;
else
decref Test.49;
jump #Derived_gen.4;
jump #Derived_gen.0;
else
let Test.39 : [<r>C I64, C List *self] = StructAtIndex 0 Test.6;
let Test.42 : [<r>C I64, C List *self] = StructAtIndex 1 Test.6;
@ -141,7 +141,7 @@ procedure Test.1 (Test.77):
dec Test.52;
let Test.14 : List [<r>C I64, C List *self] = UnionAtIndex (Id 1) (Index 0) Test.51;
inc Test.14;
joinpoint #Derived_gen.6:
joinpoint #Derived_gen.2:
let Test.35 : {} = Struct {};
let Test.33 : List {[<r>C I64, C List *self], [<r>C I64, C List *self]} = CallByName List.23 Test.12 Test.14 Test.35;
let Test.34 : {} = Struct {};
@ -159,14 +159,14 @@ procedure Test.1 (Test.77):
let Test.28 : Int1 = CallByName Bool.1;
ret Test.28;
in
let #Derived_gen.7 : Int1 = lowlevel RefCountIsUnique Test.51;
if #Derived_gen.7 then
let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique Test.51;
if #Derived_gen.3 then
decref Test.51;
jump #Derived_gen.6;
jump #Derived_gen.2;
else
inc Test.14;
decref Test.51;
jump #Derived_gen.6;
jump #Derived_gen.2;
else
let Test.48 : [<r>C I64, C List *self] = StructAtIndex 0 Test.6;
let Test.47 : List [<r>C I64, C List *self] = Array [Test.48];

View file

@ -25,13 +25,13 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.18 : I64 = UnionAtIndex (Id 1) (Index 1) Test.9;
let Test.19 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.9;
let Test.17 : I32 = UnionAtIndex (Id 1) (Index 3) Test.9;
joinpoint #Derived_gen.160 #Derived_gen.166:
joinpoint #Derived_gen.80 #Derived_gen.86:
let Test.179 : Int1 = CallByName Num.22 Test.10 Test.17;
if Test.179 then
joinpoint Test.238 #Derived_gen.240:
joinpoint Test.238 #Derived_gen.160:
let Test.233 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.16 Test.10 Test.11;
let Test.232 : Int1 = false;
let Test.231 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.240 UpdateModeId { id: 71 } TagId(1) Test.233 Test.18 Test.19 Test.17 Test.232;
let Test.231 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.160 UpdateModeId { id: 71 } TagId(1) Test.233 Test.18 Test.19 Test.17 Test.232;
ret Test.231;
in
let Test.236 : U8 = 1i64;
@ -43,7 +43,7 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.239 : Int1 = lowlevel Eq Test.235 Test.234;
if Test.239 then
let Test.180 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.16 Test.10 Test.11;
joinpoint Test.199 #Derived_gen.272:
joinpoint Test.199 #Derived_gen.192:
let Test.198 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.20 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.198;
inc Test.20;
@ -54,52 +54,52 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.25 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180;
let Test.26 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.24 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180;
joinpoint #Derived_gen.54 #Derived_gen.276 #Derived_gen.277 #Derived_gen.278:
joinpoint #Derived_gen.34 #Derived_gen.196 #Derived_gen.197 #Derived_gen.198:
let Test.186 : Int1 = false;
let Test.183 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.278 UpdateModeId { id: 107 } TagId(1) Test.20 Test.22 Test.23 Test.21 Test.186;
let Test.183 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.198 UpdateModeId { id: 107 } TagId(1) Test.20 Test.22 Test.23 Test.21 Test.186;
let Test.185 : Int1 = false;
let Test.184 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.277 UpdateModeId { id: 106 } TagId(1) Test.26 Test.18 Test.19 Test.17 Test.185;
let Test.184 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.197 UpdateModeId { id: 106 } TagId(1) Test.26 Test.18 Test.19 Test.17 Test.185;
let Test.182 : Int1 = true;
let Test.181 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.276 UpdateModeId { id: 105 } TagId(1) Test.183 Test.25 Test.184 Test.24 Test.182;
let Test.181 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.196 UpdateModeId { id: 105 } TagId(1) Test.183 Test.25 Test.184 Test.24 Test.182;
ret Test.181;
in
let #Derived_gen.55 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.55 then
let #Derived_gen.279 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.198, id: UpdateModeId { id: 108 } };
let #Derived_gen.280 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 109 } };
jump #Derived_gen.54 #Derived_gen.280 #Derived_gen.279 #Derived_gen.272;
let #Derived_gen.35 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.35 then
let #Derived_gen.199 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.198, id: UpdateModeId { id: 108 } };
let #Derived_gen.200 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 109 } };
jump #Derived_gen.34 #Derived_gen.200 #Derived_gen.199 #Derived_gen.192;
else
inc Test.26;
let #Derived_gen.281 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 110 } };
let #Derived_gen.282 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.54 #Derived_gen.281 #Derived_gen.272 #Derived_gen.282;
let #Derived_gen.201 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 110 } };
let #Derived_gen.202 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.34 #Derived_gen.201 #Derived_gen.192 #Derived_gen.202;
in
let Test.228 : U8 = 1i64;
let Test.229 : U8 = GetTagId Test.180;
let Test.230 : Int1 = lowlevel Eq Test.228 Test.229;
if Test.230 then
joinpoint Test.225 #Derived_gen.294:
joinpoint Test.216 #Derived_gen.295:
joinpoint Test.225 #Derived_gen.214:
joinpoint Test.216 #Derived_gen.215:
let Test.46 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.48 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180;
let Test.49 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.47 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180;
joinpoint #Derived_gen.66 #Derived_gen.298 #Derived_gen.299:
joinpoint #Derived_gen.28 #Derived_gen.218 #Derived_gen.219:
let Test.196 : Int1 = true;
let Test.195 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.299 UpdateModeId { id: 126 } TagId(1) Test.46 Test.48 Test.49 Test.47 Test.196;
let Test.195 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.219 UpdateModeId { id: 126 } TagId(1) Test.46 Test.48 Test.49 Test.47 Test.196;
let Test.194 : Int1 = false;
let Test.193 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.298 UpdateModeId { id: 125 } TagId(1) Test.195 Test.18 Test.19 Test.17 Test.194;
let Test.193 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.218 UpdateModeId { id: 125 } TagId(1) Test.195 Test.18 Test.19 Test.17 Test.194;
ret Test.193;
in
let #Derived_gen.67 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.67 then
let #Derived_gen.300 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 127 } };
jump #Derived_gen.66 #Derived_gen.300 #Derived_gen.295;
let #Derived_gen.29 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.29 then
let #Derived_gen.220 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 127 } };
jump #Derived_gen.28 #Derived_gen.220 #Derived_gen.215;
else
inc Test.46;
inc Test.49;
let #Derived_gen.301 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 128 } };
jump #Derived_gen.66 #Derived_gen.301 #Derived_gen.295;
let #Derived_gen.221 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 128 } };
jump #Derived_gen.28 #Derived_gen.221 #Derived_gen.215;
in
let Test.213 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.214 : U8 = 1i64;
@ -111,11 +111,11 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.212 : Int1 = true;
let Test.217 : Int1 = lowlevel Eq Test.212 Test.211;
if Test.217 then
jump Test.199 #Derived_gen.294;
jump Test.199 #Derived_gen.214;
else
jump Test.216 #Derived_gen.294;
jump Test.216 #Derived_gen.214;
else
jump Test.216 #Derived_gen.294;
jump Test.216 #Derived_gen.214;
in
let Test.222 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.223 : U8 = 1i64;
@ -127,7 +127,7 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.221 : Int1 = true;
let Test.226 : Int1 = lowlevel Eq Test.221 Test.220;
if Test.226 then
joinpoint Test.207 #Derived_gen.302:
joinpoint Test.207 #Derived_gen.222:
let Test.33 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.35 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180;
let Test.200 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
@ -138,25 +138,25 @@ procedure Test.3 (Test.9, Test.10, Test.11):
inc Test.39;
let Test.37 : I32 = UnionAtIndex (Id 1) (Index 3) Test.200;
let Test.34 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180;
joinpoint #Derived_gen.70 #Derived_gen.306 #Derived_gen.307 #Derived_gen.308:
joinpoint #Derived_gen.32 #Derived_gen.226 #Derived_gen.227 #Derived_gen.228:
let Test.192 : Int1 = false;
let Test.189 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.308 UpdateModeId { id: 135 } TagId(1) Test.33 Test.35 Test.36 Test.34 Test.192;
let Test.189 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.228 UpdateModeId { id: 135 } TagId(1) Test.33 Test.35 Test.36 Test.34 Test.192;
let Test.191 : Int1 = false;
let Test.190 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.307 UpdateModeId { id: 134 } TagId(1) Test.39 Test.18 Test.19 Test.17 Test.191;
let Test.190 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.227 UpdateModeId { id: 134 } TagId(1) Test.39 Test.18 Test.19 Test.17 Test.191;
let Test.188 : Int1 = true;
let Test.187 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.306 UpdateModeId { id: 133 } TagId(1) Test.189 Test.38 Test.190 Test.37 Test.188;
let Test.187 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.226 UpdateModeId { id: 133 } TagId(1) Test.189 Test.38 Test.190 Test.37 Test.188;
ret Test.187;
in
let #Derived_gen.71 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.71 then
let #Derived_gen.309 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.200, id: UpdateModeId { id: 136 } };
let #Derived_gen.310 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 137 } };
jump #Derived_gen.70 #Derived_gen.310 #Derived_gen.309 #Derived_gen.302;
let #Derived_gen.33 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.33 then
let #Derived_gen.229 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.200, id: UpdateModeId { id: 136 } };
let #Derived_gen.230 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 137 } };
jump #Derived_gen.32 #Derived_gen.230 #Derived_gen.229 #Derived_gen.222;
else
inc Test.33;
let #Derived_gen.311 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 138 } };
let #Derived_gen.312 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.70 #Derived_gen.311 #Derived_gen.302 #Derived_gen.312;
let #Derived_gen.231 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 138 } };
let #Derived_gen.232 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.32 #Derived_gen.231 #Derived_gen.222 #Derived_gen.232;
in
let Test.204 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.205 : U8 = 1i64;
@ -168,31 +168,31 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.203 : Int1 = true;
let Test.208 : Int1 = lowlevel Eq Test.203 Test.202;
if Test.208 then
jump Test.199 #Derived_gen.166;
jump Test.199 #Derived_gen.86;
else
jump Test.207 #Derived_gen.166;
jump Test.207 #Derived_gen.86;
else
jump Test.207 #Derived_gen.166;
jump Test.207 #Derived_gen.86;
else
jump Test.225 #Derived_gen.166;
jump Test.225 #Derived_gen.86;
else
jump Test.225 #Derived_gen.166;
jump Test.225 #Derived_gen.86;
else
decref #Derived_gen.166;
decref #Derived_gen.86;
dec Test.19;
let Test.197 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;
ret Test.197;
else
jump Test.238 #Derived_gen.166;
jump Test.238 #Derived_gen.86;
else
jump Test.238 #Derived_gen.166;
jump Test.238 #Derived_gen.86;
else
let Test.117 : Int1 = CallByName Num.24 Test.10 Test.17;
if Test.117 then
joinpoint Test.176 #Derived_gen.415:
joinpoint Test.176 #Derived_gen.335:
let Test.171 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.19 Test.10 Test.11;
let Test.170 : Int1 = false;
let Test.169 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.415 UpdateModeId { id: 241 } TagId(1) Test.16 Test.18 Test.171 Test.17 Test.170;
let Test.169 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.335 UpdateModeId { id: 241 } TagId(1) Test.16 Test.18 Test.171 Test.17 Test.170;
ret Test.169;
in
let Test.174 : U8 = 1i64;
@ -204,9 +204,9 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.177 : Int1 = lowlevel Eq Test.173 Test.172;
if Test.177 then
inc Test.19;
let #Derived_gen.416 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.16, id: UpdateModeId { id: 242 } };
let #Derived_gen.336 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.16, id: UpdateModeId { id: 242 } };
let Test.118 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.19 Test.10 Test.11;
joinpoint Test.137 #Derived_gen.461 #Derived_gen.462:
joinpoint Test.137 #Derived_gen.381 #Derived_gen.382:
let Test.136 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.57 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.136;
inc Test.57;
@ -217,52 +217,52 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.62 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118;
let Test.63 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.61 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118;
joinpoint #Derived_gen.138 #Derived_gen.467 #Derived_gen.468 #Derived_gen.469:
joinpoint #Derived_gen.78 #Derived_gen.387 #Derived_gen.388 #Derived_gen.389:
let Test.124 : Int1 = false;
let Test.121 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.469 UpdateModeId { id: 295 } TagId(1) Test.57 Test.59 Test.60 Test.58 Test.124;
let Test.121 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.389 UpdateModeId { id: 295 } TagId(1) Test.57 Test.59 Test.60 Test.58 Test.124;
let Test.123 : Int1 = false;
let Test.122 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.468 UpdateModeId { id: 294 } TagId(1) Test.63 Test.18 Test.19 Test.17 Test.123;
let Test.122 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.388 UpdateModeId { id: 294 } TagId(1) Test.63 Test.18 Test.19 Test.17 Test.123;
let Test.120 : Int1 = true;
let Test.119 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.467 UpdateModeId { id: 293 } TagId(1) Test.121 Test.62 Test.122 Test.61 Test.120;
let Test.119 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.387 UpdateModeId { id: 293 } TagId(1) Test.121 Test.62 Test.122 Test.61 Test.120;
ret Test.119;
in
let #Derived_gen.139 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.139 then
decref #Derived_gen.461;
let #Derived_gen.470 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.136, id: UpdateModeId { id: 296 } };
let #Derived_gen.471 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 297 } };
jump #Derived_gen.138 #Derived_gen.471 #Derived_gen.470 #Derived_gen.462;
let #Derived_gen.79 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.79 then
decref #Derived_gen.381;
let #Derived_gen.390 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.136, id: UpdateModeId { id: 296 } };
let #Derived_gen.391 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 297 } };
jump #Derived_gen.78 #Derived_gen.391 #Derived_gen.390 #Derived_gen.382;
else
inc Test.63;
let #Derived_gen.472 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 298 } };
jump #Derived_gen.138 #Derived_gen.472 #Derived_gen.462 #Derived_gen.461;
let #Derived_gen.392 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 298 } };
jump #Derived_gen.78 #Derived_gen.392 #Derived_gen.382 #Derived_gen.381;
in
let Test.166 : U8 = 1i64;
let Test.167 : U8 = GetTagId Test.118;
let Test.168 : Int1 = lowlevel Eq Test.166 Test.167;
if Test.168 then
joinpoint Test.163 #Derived_gen.485 #Derived_gen.486:
joinpoint Test.154 #Derived_gen.488:
joinpoint Test.163 #Derived_gen.405 #Derived_gen.406:
joinpoint Test.154 #Derived_gen.408:
let Test.83 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.85 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118;
let Test.86 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.84 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118;
joinpoint #Derived_gen.150 #Derived_gen.492 #Derived_gen.493:
joinpoint #Derived_gen.68 #Derived_gen.412 #Derived_gen.413:
let Test.134 : Int1 = true;
let Test.133 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.493 UpdateModeId { id: 319 } TagId(1) Test.83 Test.85 Test.86 Test.84 Test.134;
let Test.133 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.413 UpdateModeId { id: 319 } TagId(1) Test.83 Test.85 Test.86 Test.84 Test.134;
let Test.132 : Int1 = false;
let Test.131 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.492 UpdateModeId { id: 318 } TagId(1) Test.133 Test.18 Test.19 Test.17 Test.132;
let Test.131 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.412 UpdateModeId { id: 318 } TagId(1) Test.133 Test.18 Test.19 Test.17 Test.132;
ret Test.131;
in
let #Derived_gen.151 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.151 then
let #Derived_gen.494 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 320 } };
jump #Derived_gen.150 #Derived_gen.494 #Derived_gen.488;
let #Derived_gen.69 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.69 then
let #Derived_gen.414 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 320 } };
jump #Derived_gen.68 #Derived_gen.414 #Derived_gen.408;
else
inc Test.83;
inc Test.86;
let #Derived_gen.495 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 321 } };
jump #Derived_gen.150 #Derived_gen.495 #Derived_gen.488;
let #Derived_gen.415 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 321 } };
jump #Derived_gen.68 #Derived_gen.415 #Derived_gen.408;
in
let Test.151 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.152 : U8 = 1i64;
@ -274,13 +274,13 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.150 : Int1 = true;
let Test.155 : Int1 = lowlevel Eq Test.150 Test.149;
if Test.155 then
jump Test.137 #Derived_gen.486 #Derived_gen.485;
jump Test.137 #Derived_gen.406 #Derived_gen.405;
else
decref #Derived_gen.485;
jump Test.154 #Derived_gen.486;
decref #Derived_gen.405;
jump Test.154 #Derived_gen.406;
else
decref #Derived_gen.485;
jump Test.154 #Derived_gen.486;
decref #Derived_gen.405;
jump Test.154 #Derived_gen.406;
in
let Test.160 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.161 : U8 = 1i64;
@ -292,7 +292,7 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.159 : Int1 = true;
let Test.164 : Int1 = lowlevel Eq Test.159 Test.158;
if Test.164 then
joinpoint Test.145 #Derived_gen.496 #Derived_gen.497:
joinpoint Test.145 #Derived_gen.416 #Derived_gen.417:
let Test.70 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.72 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118;
let Test.138 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
@ -303,25 +303,25 @@ procedure Test.3 (Test.9, Test.10, Test.11):
inc Test.76;
let Test.74 : I32 = UnionAtIndex (Id 1) (Index 3) Test.138;
let Test.71 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118;
joinpoint #Derived_gen.154 #Derived_gen.502 #Derived_gen.503 #Derived_gen.504:
joinpoint #Derived_gen.72 #Derived_gen.422 #Derived_gen.423 #Derived_gen.424:
let Test.130 : Int1 = false;
let Test.127 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.504 UpdateModeId { id: 330 } TagId(1) Test.70 Test.72 Test.73 Test.71 Test.130;
let Test.127 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.424 UpdateModeId { id: 330 } TagId(1) Test.70 Test.72 Test.73 Test.71 Test.130;
let Test.129 : Int1 = false;
let Test.128 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.503 UpdateModeId { id: 329 } TagId(1) Test.76 Test.18 Test.19 Test.17 Test.129;
let Test.128 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.423 UpdateModeId { id: 329 } TagId(1) Test.76 Test.18 Test.19 Test.17 Test.129;
let Test.126 : Int1 = true;
let Test.125 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.502 UpdateModeId { id: 328 } TagId(1) Test.127 Test.75 Test.128 Test.74 Test.126;
let Test.125 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.422 UpdateModeId { id: 328 } TagId(1) Test.127 Test.75 Test.128 Test.74 Test.126;
ret Test.125;
in
let #Derived_gen.155 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.155 then
decref #Derived_gen.496;
let #Derived_gen.505 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.138, id: UpdateModeId { id: 331 } };
let #Derived_gen.506 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 332 } };
jump #Derived_gen.154 #Derived_gen.506 #Derived_gen.505 #Derived_gen.497;
let #Derived_gen.73 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.73 then
decref #Derived_gen.416;
let #Derived_gen.425 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.138, id: UpdateModeId { id: 331 } };
let #Derived_gen.426 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 332 } };
jump #Derived_gen.72 #Derived_gen.426 #Derived_gen.425 #Derived_gen.417;
else
inc Test.70;
let #Derived_gen.507 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 333 } };
jump #Derived_gen.154 #Derived_gen.507 #Derived_gen.497 #Derived_gen.496;
let #Derived_gen.427 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 333 } };
jump #Derived_gen.72 #Derived_gen.427 #Derived_gen.417 #Derived_gen.416;
in
let Test.142 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.143 : U8 = 1i64;
@ -333,84 +333,84 @@ procedure Test.3 (Test.9, Test.10, Test.11):
let Test.141 : Int1 = true;
let Test.146 : Int1 = lowlevel Eq Test.141 Test.140;
if Test.146 then
jump Test.137 #Derived_gen.416 #Derived_gen.166;
jump Test.137 #Derived_gen.336 #Derived_gen.86;
else
jump Test.145 #Derived_gen.416 #Derived_gen.166;
jump Test.145 #Derived_gen.336 #Derived_gen.86;
else
jump Test.145 #Derived_gen.416 #Derived_gen.166;
jump Test.145 #Derived_gen.336 #Derived_gen.86;
else
jump Test.163 #Derived_gen.416 #Derived_gen.166;
jump Test.163 #Derived_gen.336 #Derived_gen.86;
else
jump Test.163 #Derived_gen.416 #Derived_gen.166;
jump Test.163 #Derived_gen.336 #Derived_gen.86;
else
decref #Derived_gen.416;
decref #Derived_gen.166;
joinpoint #Derived_gen.156:
decref #Derived_gen.336;
decref #Derived_gen.86;
joinpoint #Derived_gen.74:
let Test.135 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;
ret Test.135;
in
let #Derived_gen.159 : Int1 = lowlevel RefCountIsUnique Test.19;
if #Derived_gen.159 then
let #Derived_gen.158 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.19;
dec #Derived_gen.158;
let #Derived_gen.157 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.19;
dec #Derived_gen.157;
let #Derived_gen.77 : Int1 = lowlevel RefCountIsUnique Test.19;
if #Derived_gen.77 then
let #Derived_gen.76 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.19;
dec #Derived_gen.76;
let #Derived_gen.75 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.19;
dec #Derived_gen.75;
decref Test.19;
jump #Derived_gen.156;
jump #Derived_gen.74;
else
decref Test.19;
jump #Derived_gen.156;
jump #Derived_gen.74;
else
jump Test.176 #Derived_gen.166;
jump Test.176 #Derived_gen.86;
else
jump Test.176 #Derived_gen.166;
jump Test.176 #Derived_gen.86;
else
let Test.116 : Int1 = false;
let Test.115 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.166 UpdateModeId { id: 2 } TagId(1) Test.16 Test.11 Test.19 Test.10 Test.116;
let Test.115 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.86 UpdateModeId { id: 2 } TagId(1) Test.16 Test.11 Test.19 Test.10 Test.116;
ret Test.115;
in
let #Derived_gen.161 : Int1 = lowlevel RefCountIsUnique Test.9;
if #Derived_gen.161 then
let #Derived_gen.517 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 343 } };
jump #Derived_gen.160 #Derived_gen.517;
let #Derived_gen.81 : Int1 = lowlevel RefCountIsUnique Test.9;
if #Derived_gen.81 then
let #Derived_gen.437 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 343 } };
jump #Derived_gen.80 #Derived_gen.437;
else
inc Test.16;
inc Test.19;
let #Derived_gen.518 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 344 } };
jump #Derived_gen.160 #Derived_gen.518;
let #Derived_gen.438 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 344 } };
jump #Derived_gen.80 #Derived_gen.438;
else
let Test.96 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.9;
let Test.98 : I64 = UnionAtIndex (Id 1) (Index 1) Test.9;
let Test.99 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.9;
let Test.97 : I32 = UnionAtIndex (Id 1) (Index 3) Test.9;
joinpoint #Derived_gen.162 #Derived_gen.521:
joinpoint #Derived_gen.82 #Derived_gen.441:
let Test.247 : Int1 = CallByName Num.22 Test.10 Test.97;
if Test.247 then
let Test.250 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.96 Test.10 Test.11;
let Test.249 : Int1 = true;
let Test.248 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.521 UpdateModeId { id: 347 } TagId(1) Test.250 Test.98 Test.99 Test.97 Test.249;
let Test.248 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.441 UpdateModeId { id: 347 } TagId(1) Test.250 Test.98 Test.99 Test.97 Test.249;
ret Test.248;
else
let Test.243 : Int1 = CallByName Num.24 Test.10 Test.97;
if Test.243 then
let Test.246 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.99 Test.10 Test.11;
let Test.245 : Int1 = true;
let Test.244 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.521 UpdateModeId { id: 347 } TagId(1) Test.96 Test.98 Test.246 Test.97 Test.245;
let Test.244 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.441 UpdateModeId { id: 347 } TagId(1) Test.96 Test.98 Test.246 Test.97 Test.245;
ret Test.244;
else
let Test.242 : Int1 = true;
let Test.241 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.521 UpdateModeId { id: 347 } TagId(1) Test.96 Test.11 Test.99 Test.10 Test.242;
let Test.241 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.441 UpdateModeId { id: 347 } TagId(1) Test.96 Test.11 Test.99 Test.10 Test.242;
ret Test.241;
in
let #Derived_gen.163 : Int1 = lowlevel RefCountIsUnique Test.9;
if #Derived_gen.163 then
let #Derived_gen.522 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 348 } };
jump #Derived_gen.162 #Derived_gen.522;
let #Derived_gen.83 : Int1 = lowlevel RefCountIsUnique Test.9;
if #Derived_gen.83 then
let #Derived_gen.442 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 348 } };
jump #Derived_gen.82 #Derived_gen.442;
else
inc Test.96;
inc Test.99;
let #Derived_gen.523 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 349 } };
jump #Derived_gen.162 #Derived_gen.523;
let #Derived_gen.443 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 349 } };
jump #Derived_gen.82 #Derived_gen.443;
procedure Test.0 ():
let Test.281 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;

View file

@ -39,7 +39,7 @@ procedure Test.4 (Test.28, Test.29):
joinpoint Test.15 Test.5 #Attr.12:
let Test.2 : U8 = UnionAtIndex (Id 0) (Index 1) #Attr.12;
let Test.3 : [<rnu><null>, C *self U8] = UnionAtIndex (Id 0) (Index 0) #Attr.12;
joinpoint #Derived_gen.2:
joinpoint #Derived_gen.0:
let Test.17 : U8 = CallByName Num.21 Test.2 Test.5;
let Test.18 : U8 = GetTagId Test.3;
switch Test.18:
@ -52,14 +52,14 @@ procedure Test.4 (Test.28, Test.29):
ret Test.16;
in
let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.3 then
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.1 then
decref #Attr.12;
jump #Derived_gen.2;
jump #Derived_gen.0;
else
inc Test.3;
decref #Attr.12;
jump #Derived_gen.2;
jump #Derived_gen.0;
in
jump Test.15 Test.28 Test.29;

View file

@ -8,8 +8,8 @@ procedure Str.3 (#Attr.2, #Attr.3):
procedure Test.11 (Test.29, #Attr.12):
let Test.10 : {} = UnionAtIndex (Id 0) (Index 0) #Attr.12;
let #Derived_gen.4 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.4 then
let #Derived_gen.2 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.2 then
decref #Attr.12;
ret Test.10;
else
@ -23,7 +23,7 @@ procedure Test.14 (Test.62, Test.63):
joinpoint Test.37 Test.36 #Attr.12:
let Test.12 : {} = UnionAtIndex (Id 1) (Index 1) #Attr.12;
let Test.13 : I64 = UnionAtIndex (Id 1) (Index 0) #Attr.12;
joinpoint #Derived_gen.2:
joinpoint #Derived_gen.0:
let Test.43 : {} = Struct {};
let Test.42 : {} = CallByName Test.11 Test.43 Test.12;
let Test.38 : [<r>C {}, C I64 {}] = CallByName Test.9 Test.42 Test.13;
@ -38,13 +38,13 @@ procedure Test.14 (Test.62, Test.63):
jump Test.37 Test.40 Test.38;
in
let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.3 then
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.1 then
decref #Attr.12;
jump #Derived_gen.2;
jump #Derived_gen.0;
else
decref #Attr.12;
jump #Derived_gen.2;
jump #Derived_gen.0;
in
jump Test.37 Test.62 Test.63;

View file

@ -262,30 +262,18 @@ procedure Test.5 (Test.6, Test.7, Test.4):
if Test.25 then
let Test.26 : Str = "A";
let Test.29 : Str = StructAtIndex 0 Test.4;
<<<<<<< HEAD
let #Derived_gen.0 : Str = StructAtIndex 1 Test.4;
dec #Derived_gen.0;
let Test.28 : Str = CallByName TotallyNotJson.25 Test.29;
=======
let #Derived_gen.2 : Str = StructAtIndex 1 Test.4;
dec #Derived_gen.2;
let Test.28 : Str = CallByName Json.24 Test.29;
>>>>>>> 78becc12d (Start drop specialisation for joinpoints)
let Test.27 : List Str = Array [Test.28];
let Test.19 : {Str, List Str} = CallByName TotallyNotJson.32 Test.26 Test.27;
jump Test.20 Test.19;
else
let Test.21 : Str = "B";
let Test.24 : Str = StructAtIndex 1 Test.4;
<<<<<<< HEAD
let #Derived_gen.1 : Str = StructAtIndex 0 Test.4;
dec #Derived_gen.1;
let Test.23 : Str = CallByName TotallyNotJson.25 Test.24;
=======
let #Derived_gen.3 : Str = StructAtIndex 0 Test.4;
dec #Derived_gen.3;
let Test.23 : Str = CallByName Json.24 Test.24;
>>>>>>> 78becc12d (Start drop specialisation for joinpoints)
let Test.22 : List Str = Array [Test.23];
let Test.19 : {Str, List Str} = CallByName TotallyNotJson.32 Test.21 Test.22;
jump Test.20 Test.19;

View file

@ -59,8 +59,8 @@ procedure Test.43 (Test.44, Test.42):
jump Test.62 Test.61;
else
let Test.69 : U8 = StructAtIndex 1 Test.42;
let #Derived_gen.1 : Str = StructAtIndex 0 Test.42;
dec #Derived_gen.1;
let #Derived_gen.0 : Str = StructAtIndex 0 Test.42;
dec #Derived_gen.0;
let Test.63 : Int1 = CallByName Test.15 Test.69;
let Test.61 : Int1 = CallByName Test.14 Test.63;
jump Test.62 Test.61;