authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-13 20:24:10-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-13 20:24:10-04:00
logeaf74f4f96f5a6c864dec9ada47eba067b699881
tree481c15c37632398a8b552c25ddefa4906012d9c6
parent57347aacd72dba0f5843e582f414f71f434a4d6f
signature Commit is signed but in an unrecognized format.

fix bitcast packed struct to integer and back


2 files changed, 18 insertions(+), 20 deletions(-)

src/ir.cpp+1-3
...@@ -23254,9 +23254,7 @@ static IrInstruction *ir_analyze_bit_cast(IrAnalyze *ira, IrInstruction *source_...@@ -23254,9 +23254,7 @@ static IrInstruction *ir_analyze_bit_cast(IrAnalyze *ira, IrInstruction *source_
23254 return result;23254 return result;
23255 }23255 }
2325623256
23257 IrInstruction *result = ir_build_bit_cast_gen(ira, source_instr, value, dest_type);23257 return ir_build_bit_cast_gen(ira, source_instr, value, dest_type);
23258 ir_assert(!(handle_is_ptr(dest_type) && !handle_is_ptr(src_type)), source_instr);
23259 return result;
23260}23258}
2326123259
23262static IrInstruction *ir_analyze_int_to_ptr(IrAnalyze *ira, IrInstruction *source_instr, IrInstruction *target,23260static IrInstruction *ir_analyze_int_to_ptr(IrAnalyze *ira, IrInstruction *source_instr, IrInstruction *target,
test/stage1/behavior/bitcast.zig+17-17
...@@ -95,20 +95,20 @@ test "@bitCast extern structs at runtime and comptime" {...@@ -95,20 +95,20 @@ test "@bitCast extern structs at runtime and comptime" {
95 comptime S.doTheTest();95 comptime S.doTheTest();
96}96}
9797
98//test "bitcast packed struct to integer and back" {98test "bitcast packed struct to integer and back" {
99// const LevelUpMove = packed struct {99 const LevelUpMove = packed struct {
100// move_id: u9,100 move_id: u9,
101// level: u7,101 level: u7,
102// };102 };
103// const S = struct {103 const S = struct {
104// fn doTheTest() void {104 fn doTheTest() void {
105// var move = LevelUpMove{ .move_id = 1, .level = 2 };105 var move = LevelUpMove{ .move_id = 1, .level = 2 };
106// var v = @bitCast(u16, move);106 var v = @bitCast(u16, move);
107// var back_to_a_move = @bitCast(LevelUpMove, v);107 var back_to_a_move = @bitCast(LevelUpMove, v);
108// expect(back_to_a_move.move_id == 1);108 expect(back_to_a_move.move_id == 1);
109// expect(back_to_a_move.level == 2);109 expect(back_to_a_move.level == 2);
110// }110 }
111// };111 };
112// S.doTheTest();112 S.doTheTest();
113// comptime S.doTheTest();113 comptime S.doTheTest();
114//}114}