| ... | ... | @@ -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. |