| ... | @@ -1,23 +0,0 @@ |
| 1 | Scratch pad for stuff to do before merging master |
| 2 | ================================================= |
| 3 | |
| 4 | labeled break from a block |
| 5 | |
| 6 | better behavior for implicit casts. for example these introduce an extra allocation/memcpy: |
| 7 | var x: [1]i32 = [_]i32{1}; |
| 8 | var x = ([1]i32)([_]i32{1}); |
| 9 | whereas this one does not: |
| 10 | var x = [_]i32{1}; |
| 11 | but all 3 should be semantically identical |
| 12 | |
| 13 | |
| 14 | This example has less than ideal LLVM IR: |
| 15 | ```zig |
| 16 | export fn entry() void { |
| 17 | _ = mul(true, 1) catch undefined; |
| 18 | } |
| 19 | pub fn mul(c: bool, answer: i32) error{Overflow}!i32 { |
| 20 | return if (c) error.Overflow else answer; |
| 21 | } |
| 22 | ``` |
| 23 | It creates an unnecessary stack variable. |