aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-06-15 23:47:05 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-06-15 23:47:05 -0400
commit865b53f2860405a718262abf9a794d2bf9529dbc (patch)
treea0a79987caabbad09e2868d5e0cbfa3f78bf0121 /src/ir.cpp
parentae61e26680b967414194b4fa65568a8023108678 (diff)
downloadzig-865b53f2860405a718262abf9a794d2bf9529dbc.tar.gz
zig-865b53f2860405a718262abf9a794d2bf9529dbc.zip
fix alignOf builtin
* fix assertion error when type is not yet complete * fix alignment value closes #391
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index 2f5ee84e2c..c327722612 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -12993,6 +12993,7 @@ static TypeTableEntry *ir_analyze_instruction_alignof(IrAnalyze *ira, IrInstruct
return ira->codegen->builtin_types.entry_invalid;
TypeTableEntry *type_entry = ir_resolve_type(ira, type_value);
+ ensure_complete_type(ira->codegen, type_entry);
if (type_is_invalid(type_entry)) {
return ira->codegen->builtin_types.entry_invalid;
} else if (type_entry->id == TypeTableEntryIdUnreachable) {
@@ -13000,7 +13001,7 @@ static TypeTableEntry *ir_analyze_instruction_alignof(IrAnalyze *ira, IrInstruct
buf_sprintf("no align available for type '%s'", buf_ptr(&type_entry->name)));
return ira->codegen->builtin_types.entry_invalid;
} else {
- uint64_t align_in_bytes = LLVMABISizeOfType(ira->codegen->target_data_ref, type_entry->type_ref);
+ uint64_t align_in_bytes = LLVMABIAlignmentOfType(ira->codegen->target_data_ref, type_entry->type_ref);
ConstExprValue *out_val = ir_build_const_from(ira, &instruction->base);
bignum_init_unsigned(&out_val->data.x_bignum, align_in_bytes);
return ira->codegen->builtin_types.entry_num_lit_int;