mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
commit
3ca4925709
@ -16794,7 +16794,9 @@ static IrInstruction *ir_analyze_instruction_slice_type(IrAnalyze *ira,
|
||||
case ZigTypeIdPromise:
|
||||
case ZigTypeIdVector:
|
||||
{
|
||||
if ((err = type_resolve(ira->codegen, child_type, ResolveStatusAlignmentKnown)))
|
||||
ResolveStatus needed_status = (align_bytes == 0) ?
|
||||
ResolveStatusZeroBitsKnown : ResolveStatusAlignmentKnown;
|
||||
if ((err = type_resolve(ira->codegen, child_type, needed_status)))
|
||||
return ira->codegen->invalid_instruction;
|
||||
ZigType *slice_ptr_type = get_pointer_to_type_extra(ira->codegen, child_type,
|
||||
is_const, is_volatile, PtrLenUnknown, align_bytes, 0, 0, is_allow_zero);
|
||||
|
||||
@ -27,7 +27,6 @@ comptime {
|
||||
_ = @import("behavior/bugs/2114.zig");
|
||||
_ = @import("behavior/bugs/2346.zig");
|
||||
_ = @import("behavior/bugs/2578.zig");
|
||||
_ = @import("behavior/bugs/2689.zig");
|
||||
_ = @import("behavior/bugs/394.zig");
|
||||
_ = @import("behavior/bugs/421.zig");
|
||||
_ = @import("behavior/bugs/529.zig");
|
||||
|
||||
@ -1,7 +0,0 @@
|
||||
test "slice with alignment" {
|
||||
const S = packed struct {
|
||||
a: u8,
|
||||
};
|
||||
|
||||
var a: []align(8) S = undefined;
|
||||
}
|
||||
@ -54,3 +54,14 @@ test "comptime slices are disambiguated" {
|
||||
expect(sliceSum([_]u8{ 1, 2 }) == 3);
|
||||
expect(sliceSum([_]u8{ 3, 4 }) == 7);
|
||||
}
|
||||
|
||||
test "slice type with custom alignment" {
|
||||
const LazilyResolvedType = struct {
|
||||
anything: i32,
|
||||
};
|
||||
var slice: []align(32) LazilyResolvedType = undefined;
|
||||
var array: [10]LazilyResolvedType align(32) = undefined;
|
||||
slice = &array;
|
||||
slice[1].anything = 42;
|
||||
expect(array[1].anything == 42);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user