aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2019-10-13 12:14:30 +0200
committerLemonBoy <thatlemon@gmail.com>2019-10-13 14:19:36 +0200
commit22e60df68024f3fd72c91ec7b17dbf7abc71c86c (patch)
tree4755b4e295d633f97f2b5adbcc4db094ca3b271d /src/analyze.cpp
parentb1f3f59d660bbe163502daa6f0acd560782f49d8 (diff)
downloadzig-22e60df68024f3fd72c91ec7b17dbf7abc71c86c.tar.gz
zig-22e60df68024f3fd72c91ec7b17dbf7abc71c86c.zip
Propagate user-defined function alignment to LLVM IR
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index a38766bc25..399966d041 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -1787,6 +1787,7 @@ static ZigType *analyze_fn_type(CodeGen *g, AstNode *proto_node, Scope *child_sc
if (!analyze_const_align(g, child_scope, fn_proto->align_expr, &fn_type_id.alignment)) {
return g->builtin_types.entry_invalid;
}
+ fn_entry->align_bytes = fn_type_id.alignment;
}
if (fn_proto->return_var_token != nullptr) {
@@ -3327,7 +3328,9 @@ static void resolve_decl_fn(CodeGen *g, TldFn *tld_fn) {
fn_table_entry->type_entry = analyze_fn_type(g, source_node, child_scope, fn_table_entry);
if (fn_proto->section_expr != nullptr) {
- analyze_const_string(g, child_scope, fn_proto->section_expr, &fn_table_entry->section_name);
+ if (!analyze_const_string(g, child_scope, fn_proto->section_expr, &fn_table_entry->section_name)) {
+ fn_table_entry->type_entry = g->builtin_types.entry_invalid;
+ }
}
if (fn_table_entry->type_entry->id == ZigTypeIdInvalid) {