run alwaysinline pass in debug mode

before this commit, the optimized IR code that is displayed in
--verbose mode is not actually what gets emitted to an object
file.

that is now corrected, and we make sure to run the alwaysinliner
pass even in debug mode, so you can rely on "inline" keyword
inlining a function, guaranteed.

See #306
This commit is contained in:
Andrew Kelley
2017-04-11 03:37:44 -04:00
parent 11a6550324
commit 7f47b0c271
4 changed files with 84 additions and 48 deletions

View File

@@ -3826,8 +3826,8 @@ static void do_code_gen(CodeGen *g) {
Buf *out_file_o = buf_create_from_buf(g->root_out_name);
const char *o_ext = target_o_file_ext(&g->zig_target);
buf_append_str(out_file_o, o_ext);
if (LLVMTargetMachineEmitToFile(g->target_machine, g->module, buf_ptr(out_file_o),
LLVMObjectFile, &err_msg))
if (ZigLLVMTargetMachineEmitToFile(g->target_machine, g->module, buf_ptr(out_file_o),
LLVMObjectFile, &err_msg, !g->is_release_build))
{
zig_panic("unable to write object file: %s", err_msg);
}