Commit 9d16839420
Changed files (3)
src
test
stage1
behavior
bugs
src/codegen.cpp
@@ -2002,7 +2002,7 @@ static LLVMValueRef ir_llvm_value(CodeGen *g, IrInstruction *instruction) {
render_const_val_global(g, &instruction->value, "");
ZigType *ptr_type = get_pointer_to_type(g, instruction->value.type, true);
instruction->llvm_value = LLVMBuildBitCast(g->builder, instruction->value.global_refs->llvm_global, get_llvm_type(g, ptr_type), "");
- } else if (instruction->value.type->id == ZigTypeIdPointer) {
+ } else if (get_codegen_ptr_type(instruction->value.type) != nullptr) {
instruction->llvm_value = LLVMBuildBitCast(g->builder, instruction->value.global_refs->llvm_value,
get_llvm_type(g, instruction->value.type), "");
} else {
test/stage1/behavior/bugs/2578.zig
@@ -0,0 +1,12 @@
+const Foo = struct {
+ y: u8,
+};
+
+var foo: Foo = undefined;
+const t = &foo;
+
+fn bar(pointer: ?*c_void) void {}
+
+test "fixed" {
+ bar(t);
+}
test/stage1/behavior.zig
@@ -26,6 +26,7 @@ comptime {
_ = @import("behavior/bugs/2006.zig");
_ = @import("behavior/bugs/2114.zig");
_ = @import("behavior/bugs/2346.zig");
+ _ = @import("behavior/bugs/2578.zig");
_ = @import("behavior/bugs/394.zig");
_ = @import("behavior/bugs/421.zig");
_ = @import("behavior/bugs/529.zig");