From f2fe231ddf6ad6f7e46190e6a47996d7996b7b76 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 3 Feb 2016 02:21:28 -0700 Subject: [PATCH] add @compile_var("is_release") --- src/analyze.cpp | 2 ++ src/codegen.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/analyze.cpp b/src/analyze.cpp index 2913a07bb4..e423b6fd0e 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -4020,6 +4020,8 @@ static TypeTableEntry *analyze_builtin_fn_call_expr(CodeGen *g, ImportTableEntry if (buf_eql_str(&var_name, "is_big_endian")) { return resolve_expr_const_val_as_bool(g, node, g->is_big_endian); + } else if (buf_eql_str(&var_name, "is_release")) { + return resolve_expr_const_val_as_bool(g, node, g->build_type == CodeGenBuildTypeRelease); } else { add_node_error(g, *str_node, buf_sprintf("unrecognized compile variable: '%s'", buf_ptr(&var_name))); diff --git a/src/codegen.cpp b/src/codegen.cpp index 49e9c8b91a..2d080f9d1c 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -1353,6 +1353,8 @@ static LLVMValueRef gen_struct_memcpy(CodeGen *g, AstNode *source_node, LLVMValu TypeTableEntry *isize = g->builtin_types.entry_isize; uint64_t size_bytes = LLVMStoreSizeOfType(g->target_data_ref, type_entry->type_ref); uint64_t align_bytes = get_memcpy_align(g, type_entry); + assert(size_bytes > 0); + assert(align_bytes > 0); LLVMValueRef params[] = { dest_ptr, // dest pointer