diff --git a/src/analyze.cpp b/src/analyze.cpp index 435020014d35eac44f8d393a4231338b7e287708..fe0b396d283d75ea54de56c7998fabfc8c5c7f80 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -9303,7 +9303,9 @@ bool type_has_optional_repr(ZigType *ty) { } void copy_const_val(ZigValue *dest, ZigValue *src) { + uint32_t prev_align = dest->llvm_align; memcpy(dest, src, sizeof(ZigValue)); + dest->llvm_align = prev_align; if (src->special != ConstValSpecialStatic) return; dest->parent.id = ConstParentIdNone; diff --git a/src/ir.cpp b/src/ir.cpp index 67bd46364498bb7267e9cbe3c7d8d146cdb43a03..a1e8f9c43b0e543c21f356e27a836f42e9a4554d 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -17052,6 +17052,7 @@ static IrInstruction *ir_analyze_alloca(IrAnalyze *ira, IrInstruction *source_in ZigValue *pointee = create_const_vals(1); pointee->special = ConstValSpecialUndef; + pointee->llvm_align = align; IrInstructionAllocaGen *result = ir_build_alloca_gen(ira, source_inst, align, name_hint); result->base.value->special = ConstValSpecialStatic; diff --git a/test/stage1/behavior.zig b/test/stage1/behavior.zig index d70947be5f32fa3b82821b95b8d1ef7c3f3a34d5..870ccf1aaa8177134b217a67bbfab1adb81beb92 100644 --- a/test/stage1/behavior.zig +++ b/test/stage1/behavior.zig @@ -24,7 +24,7 @@ comptime { _ = @import("behavior/bugs/1500.zig"); _ = @import("behavior/bugs/1607.zig"); _ = @import("behavior/bugs/1735.zig"); - //_ = @import("behavior/bugs/1741.zig"); + _ = @import("behavior/bugs/1741.zig"); _ = @import("behavior/bugs/1851.zig"); _ = @import("behavior/bugs/1914.zig"); _ = @import("behavior/bugs/2006.zig");