packed structs support comptime bitcasting
* `type_size_store` is no longer a thing. loading and storing a pointer to a value may dereference up to `@sizeOf(T)` bytes, even for integers such as `u24`. * fix `types_have_same_zig_comptime_repr` to not think that the same `ZigTypeId` means the `ConstExprValue` neccesarily has the same representation. * implement `buf_write_value_bytes` and `buf_read_value_bytes` for `ContainerLayoutPacked` closes #1120
This commit is contained in:
@@ -3070,7 +3070,10 @@ static LLVMValueRef ir_render_bit_cast(CodeGen *g, IrExecutable *executable,
|
||||
{
|
||||
ZigType *wanted_type = instruction->base.value.type;
|
||||
LLVMValueRef value = ir_llvm_value(g, instruction->value);
|
||||
return LLVMBuildBitCast(g->builder, value, wanted_type->type_ref, "");
|
||||
// We either bitcast the value directly or bitcast the pointer which does a pointer cast
|
||||
LLVMTypeRef wanted_type_ref = handle_is_ptr(wanted_type) ?
|
||||
LLVMPointerType(wanted_type->type_ref, 0) : wanted_type->type_ref;
|
||||
return LLVMBuildBitCast(g->builder, value, wanted_type_ref, "");
|
||||
}
|
||||
|
||||
static LLVMValueRef ir_render_widen_or_shorten(CodeGen *g, IrExecutable *executable,
|
||||
|
||||
Reference in New Issue
Block a user