diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-06-19 19:01:28 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-06-19 19:01:28 -0400 |
| commit | 04c25efe112e374facaf1bc8b58bbdb6999a39e3 (patch) | |
| tree | 66a70b185ad8e44a69c8be27dd7dbc23425b040c /src/ir.cpp | |
| parent | 4ffab5b85f03f63a7e724698482f8497cacc7212 (diff) | |
| parent | 381c6a38b145665a22440f7aa816f0ddd9b70ee5 (diff) | |
| download | zig-04c25efe112e374facaf1bc8b58bbdb6999a39e3.tar.gz zig-04c25efe112e374facaf1bc8b58bbdb6999a39e3.zip | |
Merge remote-tracking branch 'origin/master' into copy-elision-3
Diffstat (limited to 'src/ir.cpp')
| -rw-r--r-- | src/ir.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/ir.cpp b/src/ir.cpp index 0a920c0974..b2ff8f5896 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -18046,7 +18046,9 @@ static IrInstruction *ir_analyze_instruction_slice_type(IrAnalyze *ira, case ZigTypeIdPromise: case ZigTypeIdVector: { - if ((err = type_resolve(ira->codegen, child_type, ResolveStatusZeroBitsKnown))) + 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); @@ -19901,10 +19903,11 @@ static Error ir_make_type_info_decls(IrAnalyze *ira, IrInstruction *source_instr true, false, PtrLenUnknown, 0, 0, 0, false); fn_decl_fields[6].type = get_optional_type(ira->codegen, get_slice_type(ira->codegen, u8_ptr)); - if (fn_node->is_extern && buf_len(fn_node->lib_name) > 0) { + if (fn_node->is_extern && fn_node->lib_name != nullptr && buf_len(fn_node->lib_name) > 0) { fn_decl_fields[6].data.x_optional = create_const_vals(1); ConstExprValue *lib_name = create_const_str_lit(ira->codegen, fn_node->lib_name); - init_const_slice(ira->codegen, fn_decl_fields[6].data.x_optional, lib_name, 0, buf_len(fn_node->lib_name), true); + init_const_slice(ira->codegen, fn_decl_fields[6].data.x_optional, lib_name, 0, + buf_len(fn_node->lib_name), true); } else { fn_decl_fields[6].data.x_optional = nullptr; } |
