aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimmi HC <jimmiholstchristensen@gmail.com>2019-06-16 02:10:06 +0200
committerAndrew Kelley <andrew@ziglang.org>2019-06-16 00:03:43 -0400
commitaa60d2a688c965dcccf8e2c42afe5c180daba8fc (patch)
tree47ac9dd0a965448e4969d3e21bb142f8b6542357
parent7c5ceb0c4cdf5fafadd92b13048bc9878554abc4 (diff)
downloadzig-aa60d2a688c965dcccf8e2c42afe5c180daba8fc.tar.gz
zig-aa60d2a688c965dcccf8e2c42afe5c180daba8fc.zip
fixes resolving aligment of child type in slice
-rw-r--r--src/ir.cpp2
-rw-r--r--test/stage1/behavior.zig1
-rw-r--r--test/stage1/behavior/bugs/2689.zig7
3 files changed, 9 insertions, 1 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index 6c1c84da3b..0936f78df3 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -16794,7 +16794,7 @@ static IrInstruction *ir_analyze_instruction_slice_type(IrAnalyze *ira,
case ZigTypeIdPromise:
case ZigTypeIdVector:
{
- if ((err = type_resolve(ira->codegen, child_type, ResolveStatusZeroBitsKnown)))
+ if ((err = type_resolve(ira->codegen, child_type, ResolveStatusAlignmentKnown)))
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);
diff --git a/test/stage1/behavior.zig b/test/stage1/behavior.zig
index f477bb64ed..707d46fd8c 100644
--- a/test/stage1/behavior.zig
+++ b/test/stage1/behavior.zig
@@ -27,6 +27,7 @@ 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");
diff --git a/test/stage1/behavior/bugs/2689.zig b/test/stage1/behavior/bugs/2689.zig
new file mode 100644
index 0000000000..d1c1062ada
--- /dev/null
+++ b/test/stage1/behavior/bugs/2689.zig
@@ -0,0 +1,7 @@
+test "slice with alignment" {
+ const S = packed struct {
+ a: u8,
+ };
+
+ var a: []align(8) S = undefined;
+}