Fork of daniellemaywood.uk/gleam — Wasm codegen work
1

Configure Feed

Select the types of activity you want to include in your feed.

Translate record updates to mir and remove redundant set = var

author
Danielle Maywood
committer
nandi
date (Jul 26, 2026, 12:11 PM -0700) commit 0f1323ab parent 7ebc2fc0 change-id uvzupsqk
+163 -567
+78 -4
compiler-core/src/cranelift/mir.rs
··· 67 67 } 68 68 } 69 69 70 + #[derive(Default)] 71 + struct RemoveUselessSetPass { 72 + replacements: HashMap<EcoString, EcoString>, 73 + } 74 + 75 + impl<'mir> Visit<'mir> for RemoveUselessSetPass { 76 + fn visit_expression(&mut self, expression: &'mir mut Expression) { 77 + visit::visit_expression(self, expression); 78 + 79 + if let Expression::Set { name, value } = expression { 80 + if let Expression::Var(var) = value.as_ref() { 81 + _ = self 82 + .replacements 83 + .insert(name.name.clone(), var.name.clone()); 84 + 85 + _ = var; 86 + _ = name; 87 + } 88 + } 89 + } 90 + 91 + fn visit_expression_block(&mut self, expressions: &'mir mut Vec<Expression>) { 92 + visit::visit_expression_block(self, expressions); 93 + 94 + *expressions = std::mem::take(expressions) 95 + .into_iter() 96 + .filter_map(|expr| match expr { 97 + Expression::Set { name, value: _ } 98 + if self.replacements.contains_key(&name.name) => 99 + { 100 + None 101 + } 102 + _ => Some(expr), 103 + }) 104 + .collect(); 105 + } 106 + 107 + fn visit_expression_var(&mut self, var: &'mir mut Var) { 108 + if let Some(replacement) = self.replacements.get(&var.name) { 109 + var.name = replacement.clone(); 110 + } 111 + } 112 + } 113 + 70 114 #[derive(Debug, Default, PartialEq, Eq)] 71 115 pub struct Translator { 72 116 module: Module, ··· 90 134 91 135 FlattenBlockPass.visit_module(&mut self.module); 92 136 RemoveUnusedPass.visit_module(&mut self.module); 137 + RemoveUselessSetPass::default().visit_module(&mut self.module); 93 138 94 139 self.module 95 140 } ··· 521 566 crate::ast::TypedExpr::RecordUpdate { 522 567 location: _, 523 568 type_: _, 524 - record_assignment: _, 525 - constructor: _, 526 - arguments: _, 527 - } => todo!(), 569 + record_assignment, 570 + constructor, 571 + arguments, 572 + } => { 573 + let mut block = vec![]; 574 + 575 + if let Some(assignment) = record_assignment { 576 + block.push(self.translate_assignment(assignment)); 577 + } 578 + 579 + let constructor = self.translate_expression(constructor); 580 + let arguments = arguments 581 + .iter() 582 + .map(|argument| self.translate_expression(&argument.value)) 583 + .collect(); 584 + 585 + block.push(Expression::Call { 586 + target: Box::new(constructor), 587 + args: arguments, 588 + }); 589 + 590 + Expression::Block(block) 591 + } 528 592 crate::ast::TypedExpr::NegateBool { location: _, value } => Expression::Equals { 529 593 lhs: Box::new(self.translate_expression(value)), 530 594 rhs: Box::new(Expression::Bool { value: false }), ··· 1240 1304 Wibble -> 0 1241 1305 Wobble -> 1 1242 1306 } 1307 + }"# 1308 + )); 1309 + 1310 + insta::assert_debug_snapshot!(translate( 1311 + r#"pub type Wibble { 1312 + Wibble(x: Int, y: Int, z: Int) 1313 + } 1314 + 1315 + pub fn record_update(wibble: Wibble) { 1316 + Wibble(..wibble, y: 20) 1243 1317 }"# 1244 1318 )); 1245 1319 }
+1 -11
compiler-core/src/cranelift/snapshots/gleam_core__cranelift__mir__tests__translates_samples-10.snap
··· 39 39 ], 40 40 }, 41 41 }, 42 - Set { 43 - name: Var { 44 - name: "x$3", 45 - }, 46 - value: Var( 47 - Var { 48 - name: "_tmp$2", 49 - }, 50 - ), 51 - }, 52 42 IntAdd { 53 43 lhs: StructAccess { 54 44 value: Var( ··· 61 51 rhs: StructAccess { 62 52 value: Var( 63 53 Var { 64 - name: "x$3", 54 + name: "_tmp$2", 65 55 }, 66 56 ), 67 57 index: 1,
+1 -11
compiler-core/src/cranelift/snapshots/gleam_core__cranelift__mir__tests__translates_samples-13.snap
··· 19 19 ], 20 20 body: Block( 21 21 [ 22 - Set { 23 - name: Var { 24 - name: "_tmp$2", 25 - }, 26 - value: Var( 27 - Var { 28 - name: "wibble$1", 29 - }, 30 - ), 31 - }, 32 22 If { 33 23 cond: Equals { 34 24 lhs: Int { ··· 37 27 rhs: StructTag { 38 28 value: Var( 39 29 Var { 40 - name: "_tmp$2", 30 + name: "wibble$1", 41 31 }, 42 32 ), 43 33 },
+52
compiler-core/src/cranelift/snapshots/gleam_core__cranelift__mir__tests__translates_samples-14.snap
··· 1 + --- 2 + source: compiler-core/src/cranelift/mir.rs 3 + expression: "translate(r#\"pub type Wibble {\n Wibble(x: Int, y: Int, z: Int)\n }\n\n pub fn record_update(wibble: Wibble) {\n Wibble(..wibble, y: 20)\n }\"#)" 4 + --- 5 + Module { 6 + functions: [ 7 + Function { 8 + name: "record_update", 9 + return_type: Struct { 10 + elements: [], 11 + }, 12 + parameters: [ 13 + FunctionParameter { 14 + type_: Struct { 15 + elements: [], 16 + }, 17 + name: Some( 18 + "wibble$1", 19 + ), 20 + }, 21 + ], 22 + body: Call { 23 + target: FunctionRef { 24 + module: "", 25 + name: "Wibble", 26 + arity: 3, 27 + }, 28 + args: [ 29 + StructAccess { 30 + value: Var( 31 + Var { 32 + name: "wibble$1", 33 + }, 34 + ), 35 + index: 0, 36 + }, 37 + Int { 38 + value: 20, 39 + }, 40 + StructAccess { 41 + value: Var( 42 + Var { 43 + name: "wibble$1", 44 + }, 45 + ), 46 + index: 2, 47 + }, 48 + ], 49 + }, 50 + }, 51 + ], 52 + }
+2 -12
compiler-core/src/cranelift/snapshots/gleam_core__cranelift__mir__tests__translates_samples-2.snap
··· 17 17 ], 18 18 body: Block( 19 19 [ 20 - Set { 21 - name: Var { 22 - name: "_tmp$2", 23 - }, 24 - value: Var( 25 - Var { 26 - name: "n$1", 27 - }, 28 - ), 29 - }, 30 20 If { 31 21 cond: Equals { 32 22 lhs: Var( 33 23 Var { 34 - name: "_tmp$2", 24 + name: "n$1", 35 25 }, 36 26 ), 37 27 rhs: Int { ··· 45 35 cond: Equals { 46 36 lhs: Var( 47 37 Var { 48 - name: "_tmp$2", 38 + name: "n$1", 49 39 }, 50 40 ), 51 41 rhs: Int {
+2 -22
compiler-core/src/cranelift/snapshots/gleam_core__cranelift__mir__tests__translates_samples-3.snap
··· 17 17 ], 18 18 body: Block( 19 19 [ 20 - Set { 21 - name: Var { 22 - name: "_tmp$2", 23 - }, 24 - value: Var( 25 - Var { 26 - name: "n$1", 27 - }, 28 - ), 29 - }, 30 - Set { 31 - name: Var { 32 - name: "y$3", 33 - }, 34 - value: Var( 35 - Var { 36 - name: "_tmp$2", 37 - }, 38 - ), 39 - }, 40 20 If { 41 21 cond: Equals { 42 22 lhs: Var( 43 23 Var { 44 - name: "y$3", 24 + name: "n$1", 45 25 }, 46 26 ), 47 27 rhs: Int { ··· 55 35 cond: Equals { 56 36 lhs: Var( 57 37 Var { 58 - name: "_tmp$2", 38 + name: "n$1", 59 39 }, 60 40 ), 61 41 rhs: Int {
+2 -12
compiler-core/src/cranelift/snapshots/gleam_core__cranelift__mir__tests__translates_samples-4.snap
··· 17 17 ], 18 18 body: Block( 19 19 [ 20 - Set { 21 - name: Var { 22 - name: "_tmp$2", 23 - }, 24 - value: Var( 25 - Var { 26 - name: "n$1", 27 - }, 28 - ), 29 - }, 30 20 If { 31 21 cond: Equals { 32 22 lhs: Var( 33 23 Var { 34 - name: "_tmp$2", 24 + name: "n$1", 35 25 }, 36 26 ), 37 27 rhs: Int { ··· 45 35 cond: Equals { 46 36 lhs: Var( 47 37 Var { 48 - name: "_tmp$2", 38 + name: "n$1", 49 39 }, 50 40 ), 51 41 rhs: Int {
+24 -484
compiler-core/src/cranelift/snapshots/gleam_core__cranelift__mir__tests__translates_samples-7.snap
··· 23 23 ], 24 24 body: Block( 25 25 [ 26 - Set { 27 - name: Var { 28 - name: "_tmp$3", 29 - }, 30 - value: Var( 31 - Var { 32 - name: "n$1", 33 - }, 34 - ), 35 - }, 36 - Set { 37 - name: Var { 38 - name: "_tmp$4", 39 - }, 40 - value: Var( 41 - Var { 42 - name: "f$2", 43 - }, 44 - ), 45 - }, 46 - Set { 47 - name: Var { 48 - name: "x$5", 49 - }, 50 - value: Var( 51 - Var { 52 - name: "_tmp$3", 53 - }, 54 - ), 55 - }, 56 26 If { 57 27 cond: Equals { 58 28 lhs: Var( 59 29 Var { 60 - name: "x$5", 30 + name: "n$1", 61 31 }, 62 32 ), 63 33 rhs: Int { ··· 66 36 }, 67 37 then: Block( 68 38 [ 69 - Set { 70 - name: Var { 71 - name: "y$6", 72 - }, 73 - value: Var( 74 - Var { 75 - name: "_tmp$4", 76 - }, 77 - ), 78 - }, 79 39 Int { 80 40 value: 1, 81 41 }, ··· 83 43 ), 84 44 else_: Block( 85 45 [ 86 - Set { 87 - name: Var { 88 - name: "x$7", 89 - }, 90 - value: Var( 91 - Var { 92 - name: "_tmp$3", 93 - }, 94 - ), 95 - }, 96 46 If { 97 47 cond: NotEquals { 98 48 lhs: Var( 99 49 Var { 100 - name: "x$7", 50 + name: "n$1", 101 51 }, 102 52 ), 103 53 rhs: Int { ··· 106 56 }, 107 57 then: Block( 108 58 [ 109 - Set { 110 - name: Var { 111 - name: "y$8", 112 - }, 113 - value: Var( 114 - Var { 115 - name: "_tmp$4", 116 - }, 117 - ), 118 - }, 119 59 Int { 120 60 value: 2, 121 61 }, ··· 123 63 ), 124 64 else_: Block( 125 65 [ 126 - Set { 127 - name: Var { 128 - name: "x$9", 129 - }, 130 - value: Var( 131 - Var { 132 - name: "_tmp$3", 133 - }, 134 - ), 135 - }, 136 66 If { 137 67 cond: IntGt { 138 68 lhs: Var( 139 69 Var { 140 - name: "x$9", 70 + name: "n$1", 141 71 }, 142 72 ), 143 73 rhs: Int { ··· 146 76 }, 147 77 then: Block( 148 78 [ 149 - Set { 150 - name: Var { 151 - name: "y$10", 152 - }, 153 - value: Var( 154 - Var { 155 - name: "_tmp$4", 156 - }, 157 - ), 158 - }, 159 79 Int { 160 80 value: 3, 161 81 }, ··· 163 83 ), 164 84 else_: Block( 165 85 [ 166 - Set { 167 - name: Var { 168 - name: "x$11", 169 - }, 170 - value: Var( 171 - Var { 172 - name: "_tmp$3", 173 - }, 174 - ), 175 - }, 176 86 If { 177 87 cond: IntGtEq { 178 88 lhs: Var( 179 89 Var { 180 - name: "x$11", 90 + name: "n$1", 181 91 }, 182 92 ), 183 93 rhs: Int { ··· 186 96 }, 187 97 then: Block( 188 98 [ 189 - Set { 190 - name: Var { 191 - name: "y$12", 192 - }, 193 - value: Var( 194 - Var { 195 - name: "_tmp$4", 196 - }, 197 - ), 198 - }, 199 99 Int { 200 100 value: 4, 201 101 }, ··· 203 103 ), 204 104 else_: Block( 205 105 [ 206 - Set { 207 - name: Var { 208 - name: "x$13", 209 - }, 210 - value: Var( 211 - Var { 212 - name: "_tmp$3", 213 - }, 214 - ), 215 - }, 216 106 If { 217 107 cond: IntLt { 218 108 lhs: Var( 219 109 Var { 220 - name: "x$13", 110 + name: "n$1", 221 111 }, 222 112 ), 223 113 rhs: Int { ··· 226 116 }, 227 117 then: Block( 228 118 [ 229 - Set { 230 - name: Var { 231 - name: "y$14", 232 - }, 233 - value: Var( 234 - Var { 235 - name: "_tmp$4", 236 - }, 237 - ), 238 - }, 239 119 Int { 240 120 value: 5, 241 121 }, ··· 243 123 ), 244 124 else_: Block( 245 125 [ 246 - Set { 247 - name: Var { 248 - name: "x$15", 249 - }, 250 - value: Var( 251 - Var { 252 - name: "_tmp$3", 253 - }, 254 - ), 255 - }, 256 126 If { 257 127 cond: IntLtEq { 258 128 lhs: Var( 259 129 Var { 260 - name: "x$15", 130 + name: "n$1", 261 131 }, 262 132 ), 263 133 rhs: Int { ··· 266 136 }, 267 137 then: Block( 268 138 [ 269 - Set { 270 - name: Var { 271 - name: "y$16", 272 - }, 273 - value: Var( 274 - Var { 275 - name: "_tmp$4", 276 - }, 277 - ), 278 - }, 279 139 Int { 280 140 value: 6, 281 141 }, ··· 283 143 ), 284 144 else_: Block( 285 145 [ 286 - Set { 287 - name: Var { 288 - name: "y$17", 289 - }, 290 - value: Var( 291 - Var { 292 - name: "_tmp$4", 293 - }, 294 - ), 295 - }, 296 146 If { 297 147 cond: FloatGt { 298 148 lhs: Var( 299 149 Var { 300 - name: "y$17", 150 + name: "f$2", 301 151 }, 302 152 ), 303 153 rhs: Float { ··· 306 156 }, 307 157 then: Block( 308 158 [ 309 - Set { 310 - name: Var { 311 - name: "x$18", 312 - }, 313 - value: Var( 314 - Var { 315 - name: "_tmp$3", 316 - }, 317 - ), 318 - }, 319 159 Int { 320 160 value: 7, 321 161 }, ··· 323 163 ), 324 164 else_: Block( 325 165 [ 326 - Set { 327 - name: Var { 328 - name: "y$19", 329 - }, 330 - value: Var( 331 - Var { 332 - name: "_tmp$4", 333 - }, 334 - ), 335 - }, 336 166 If { 337 167 cond: FloatGtEq { 338 168 lhs: Var( 339 169 Var { 340 - name: "y$19", 170 + name: "f$2", 341 171 }, 342 172 ), 343 173 rhs: Float { ··· 346 176 }, 347 177 then: Block( 348 178 [ 349 - Set { 350 - name: Var { 351 - name: "x$20", 352 - }, 353 - value: Var( 354 - Var { 355 - name: "_tmp$3", 356 - }, 357 - ), 358 - }, 359 179 Int { 360 180 value: 8, 361 181 }, ··· 363 183 ), 364 184 else_: Block( 365 185 [ 366 - Set { 367 - name: Var { 368 - name: "y$21", 369 - }, 370 - value: Var( 371 - Var { 372 - name: "_tmp$4", 373 - }, 374 - ), 375 - }, 376 186 If { 377 187 cond: FloatLt { 378 188 lhs: Var( 379 189 Var { 380 - name: "y$21", 190 + name: "f$2", 381 191 }, 382 192 ), 383 193 rhs: Float { ··· 386 196 }, 387 197 then: Block( 388 198 [ 389 - Set { 390 - name: Var { 391 - name: "x$22", 392 - }, 393 - value: Var( 394 - Var { 395 - name: "_tmp$3", 396 - }, 397 - ), 398 - }, 399 199 Int { 400 200 value: 9, 401 201 }, ··· 403 203 ), 404 204 else_: Block( 405 205 [ 406 - Set { 407 - name: Var { 408 - name: "y$23", 409 - }, 410 - value: Var( 411 - Var { 412 - name: "_tmp$4", 413 - }, 414 - ), 415 - }, 416 206 If { 417 207 cond: FloatLtEq { 418 208 lhs: Var( 419 209 Var { 420 - name: "y$23", 210 + name: "f$2", 421 211 }, 422 212 ), 423 213 rhs: Float { ··· 426 216 }, 427 217 then: Block( 428 218 [ 429 - Set { 430 - name: Var { 431 - name: "x$24", 432 - }, 433 - value: Var( 434 - Var { 435 - name: "_tmp$3", 436 - }, 437 - ), 438 - }, 439 219 Int { 440 220 value: 10, 441 221 }, ··· 443 223 ), 444 224 else_: Block( 445 225 [ 446 - Set { 447 - name: Var { 448 - name: "x$25", 449 - }, 450 - value: Var( 451 - Var { 452 - name: "_tmp$3", 453 - }, 454 - ), 455 - }, 456 226 If { 457 227 cond: If { 458 228 cond: IntGt { 459 229 lhs: Var( 460 230 Var { 461 - name: "x$25", 231 + name: "n$1", 462 232 }, 463 233 ), 464 234 rhs: Int { ··· 468 238 then: IntLt { 469 239 lhs: Var( 470 240 Var { 471 - name: "x$25", 241 + name: "n$1", 472 242 }, 473 243 ), 474 244 rhs: Int { ··· 481 251 }, 482 252 then: Block( 483 253 [ 484 - Set { 485 - name: Var { 486 - name: "y$26", 487 - }, 488 - value: Var( 489 - Var { 490 - name: "_tmp$4", 491 - }, 492 - ), 493 - }, 494 254 Int { 495 255 value: 11, 496 256 }, ··· 498 258 ), 499 259 else_: Block( 500 260 [ 501 - Set { 502 - name: Var { 503 - name: "x$27", 504 - }, 505 - value: Var( 506 - Var { 507 - name: "_tmp$3", 508 - }, 509 - ), 510 - }, 511 261 If { 512 262 cond: If { 513 263 cond: IntLt { 514 264 lhs: Var( 515 265 Var { 516 - name: "x$27", 266 + name: "n$1", 517 267 }, 518 268 ), 519 269 rhs: Int { ··· 526 276 else_: IntGt { 527 277 lhs: Var( 528 278 Var { 529 - name: "x$27", 279 + name: "n$1", 530 280 }, 531 281 ), 532 282 rhs: Int { ··· 536 286 }, 537 287 then: Block( 538 288 [ 539 - Set { 540 - name: Var { 541 - name: "y$28", 542 - }, 543 - value: Var( 544 - Var { 545 - name: "_tmp$4", 546 - }, 547 - ), 548 - }, 549 289 Int { 550 290 value: 12, 551 291 }, ··· 553 293 ), 554 294 else_: Block( 555 295 [ 556 - Set { 557 - name: Var { 558 - name: "x$29", 559 - }, 560 - value: Var( 561 - Var { 562 - name: "_tmp$3", 563 - }, 564 - ), 565 - }, 566 296 If { 567 297 cond: Equals { 568 298 lhs: Equals { 569 299 lhs: Var( 570 300 Var { 571 - name: "x$29", 301 + name: "n$1", 572 302 }, 573 303 ), 574 304 rhs: Int { ··· 581 311 }, 582 312 then: Block( 583 313 [ 584 - Set { 585 - name: Var { 586 - name: "y$30", 587 - }, 588 - value: Var( 589 - Var { 590 - name: "_tmp$4", 591 - }, 592 - ), 593 - }, 594 314 Int { 595 315 value: 13, 596 316 }, ··· 598 318 ), 599 319 else_: Block( 600 320 [ 601 - Set { 602 - name: Var { 603 - name: "x$31", 604 - }, 605 - value: Var( 606 - Var { 607 - name: "_tmp$3", 608 - }, 609 - ), 610 - }, 611 321 If { 612 322 cond: IntGt { 613 323 lhs: IntAdd { 614 324 lhs: Var( 615 325 Var { 616 - name: "x$31", 326 + name: "n$1", 617 327 }, 618 328 ), 619 329 rhs: Int { ··· 626 336 }, 627 337 then: Block( 628 338 [ 629 - Set { 630 - name: Var { 631 - name: "y$32", 632 - }, 633 - value: Var( 634 - Var { 635 - name: "_tmp$4", 636 - }, 637 - ), 638 - }, 639 339 Int { 640 340 value: 14, 641 341 }, ··· 643 343 ), 644 344 else_: Block( 645 345 [ 646 - Set { 647 - name: Var { 648 - name: "x$33", 649 - }, 650 - value: Var( 651 - Var { 652 - name: "_tmp$3", 653 - }, 654 - ), 655 - }, 656 346 If { 657 347 cond: IntLt { 658 348 lhs: IntSub { 659 349 lhs: Var( 660 350 Var { 661 - name: "x$33", 351 + name: "n$1", 662 352 }, 663 353 ), 664 354 rhs: Int { ··· 671 361 }, 672 362 then: Block( 673 363 [ 674 - Set { 675 - name: Var { 676 - name: "y$34", 677 - }, 678 - value: Var( 679 - Var { 680 - name: "_tmp$4", 681 - }, 682 - ), 683 - }, 684 364 Int { 685 365 value: 15, 686 366 }, ··· 688 368 ), 689 369 else_: Block( 690 370 [ 691 - Set { 692 - name: Var { 693 - name: "x$35", 694 - }, 695 - value: Var( 696 - Var { 697 - name: "_tmp$3", 698 - }, 699 - ), 700 - }, 701 371 If { 702 372 cond: Equals { 703 373 lhs: IntMul { 704 374 lhs: Var( 705 375 Var { 706 - name: "x$35", 376 + name: "n$1", 707 377 }, 708 378 ), 709 379 rhs: Int { ··· 716 386 }, 717 387 then: Block( 718 388 [ 719 - Set { 720 - name: Var { 721 - name: "y$36", 722 - }, 723 - value: Var( 724 - Var { 725 - name: "_tmp$4", 726 - }, 727 - ), 728 - }, 729 389 Int { 730 390 value: 16, 731 391 }, ··· 733 393 ), 734 394 else_: Block( 735 395 [ 736 - Set { 737 - name: Var { 738 - name: "x$37", 739 - }, 740 - value: Var( 741 - Var { 742 - name: "_tmp$3", 743 - }, 744 - ), 745 - }, 746 396 If { 747 397 cond: Equals { 748 398 lhs: IntDiv { 749 399 lhs: Var( 750 400 Var { 751 - name: "x$37", 401 + name: "n$1", 752 402 }, 753 403 ), 754 404 rhs: Int { ··· 761 411 }, 762 412 then: Block( 763 413 [ 764 - Set { 765 - name: Var { 766 - name: "y$38", 767 - }, 768 - value: Var( 769 - Var { 770 - name: "_tmp$4", 771 - }, 772 - ), 773 - }, 774 414 Int { 775 415 value: 17, 776 416 }, ··· 778 418 ), 779 419 else_: Block( 780 420 [ 781 - Set { 782 - name: Var { 783 - name: "y$39", 784 - }, 785 - value: Var( 786 - Var { 787 - name: "_tmp$4", 788 - }, 789 - ), 790 - }, 791 421 If { 792 422 cond: FloatGt { 793 423 lhs: FloatAdd { 794 424 lhs: Var( 795 425 Var { 796 - name: "y$39", 426 + name: "f$2", 797 427 }, 798 428 ), 799 429 rhs: Float { ··· 806 436 }, 807 437 then: Block( 808 438 [ 809 - Set { 810 - name: Var { 811 - name: "x$40", 812 - }, 813 - value: Var( 814 - Var { 815 - name: "_tmp$3", 816 - }, 817 - ), 818 - }, 819 439 Int { 820 440 value: 18, 821 441 }, ··· 823 443 ), 824 444 else_: Block( 825 445 [ 826 - Set { 827 - name: Var { 828 - name: "y$41", 829 - }, 830 - value: Var( 831 - Var { 832 - name: "_tmp$4", 833 - }, 834 - ), 835 - }, 836 446 If { 837 447 cond: FloatLt { 838 448 lhs: FloatSub { 839 449 lhs: Var( 840 450 Var { 841 - name: "y$41", 451 + name: "f$2", 842 452 }, 843 453 ), 844 454 rhs: Float { ··· 851 461 }, 852 462 then: Block( 853 463 [ 854 - Set { 855 - name: Var { 856 - name: "x$42", 857 - }, 858 - value: Var( 859 - Var { 860 - name: "_tmp$3", 861 - }, 862 - ), 863 - }, 864 464 Int { 865 465 value: 19, 866 466 }, ··· 868 468 ), 869 469 else_: Block( 870 470 [ 871 - Set { 872 - name: Var { 873 - name: "y$43", 874 - }, 875 - value: Var( 876 - Var { 877 - name: "_tmp$4", 878 - }, 879 - ), 880 - }, 881 471 If { 882 472 cond: Equals { 883 473 lhs: FloatMul { 884 474 lhs: Var( 885 475 Var { 886 - name: "y$43", 476 + name: "f$2", 887 477 }, 888 478 ), 889 479 rhs: Float { ··· 896 486 }, 897 487 then: Block( 898 488 [ 899 - Set { 900 - name: Var { 901 - name: "x$44", 902 - }, 903 - value: Var( 904 - Var { 905 - name: "_tmp$3", 906 - }, 907 - ), 908 - }, 909 489 Int { 910 490 value: 20, 911 491 }, ··· 913 493 ), 914 494 else_: Block( 915 495 [ 916 - Set { 917 - name: Var { 918 - name: "y$45", 919 - }, 920 - value: Var( 921 - Var { 922 - name: "_tmp$4", 923 - }, 924 - ), 925 - }, 926 496 If { 927 497 cond: FloatGtEq { 928 498 lhs: FloatDiv { 929 499 lhs: Var( 930 500 Var { 931 - name: "y$45", 501 + name: "f$2", 932 502 }, 933 503 ), 934 504 rhs: Float { ··· 941 511 }, 942 512 then: Block( 943 513 [ 944 - Set { 945 - name: Var { 946 - name: "x$46", 947 - }, 948 - value: Var( 949 - Var { 950 - name: "_tmp$3", 951 - }, 952 - ), 953 - }, 954 514 Int { 955 515 value: 21, 956 516 }, ··· 958 518 ), 959 519 else_: Block( 960 520 [ 961 - Set { 962 - name: Var { 963 - name: "x$47", 964 - }, 965 - value: Var( 966 - Var { 967 - name: "_tmp$3", 968 - }, 969 - ), 970 - }, 971 521 If { 972 522 cond: Equals { 973 523 lhs: IntRem { 974 524 lhs: Var( 975 525 Var { 976 - name: "x$47", 526 + name: "n$1", 977 527 }, 978 528 ), 979 529 rhs: Int { ··· 986 536 }, 987 537 then: Block( 988 538 [ 989 - Set { 990 - name: Var { 991 - name: "y$48", 992 - }, 993 - value: Var( 994 - Var { 995 - name: "_tmp$4", 996 - }, 997 - ), 998 - }, 999 539 Int { 1000 540 value: 22, 1001 541 },
+1 -11
compiler-core/src/cranelift/snapshots/gleam_core__cranelift__mir__tests__translates_samples-9.snap
··· 31 31 }, 32 32 Set { 33 33 name: Var { 34 - name: "a$2", 35 - }, 36 - value: Var( 37 - Var { 38 - name: "_tmp$1", 39 - }, 40 - ), 41 - }, 42 - Set { 43 - name: Var { 44 34 name: "_tmp$3", 45 35 }, 46 36 value: StructAccess { 47 37 value: Var( 48 38 Var { 49 - name: "a$2", 39 + name: "_tmp$1", 50 40 }, 51 41 ), 52 42 index: 1,