diff options
| author | Ginger Bill <bill@gingerbill.org> | 2016-08-24 15:06:36 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2016-08-24 15:06:36 +0100 |
| commit | 6bd898e552392b1bd11ad16c7476833261c1d4b7 (patch) | |
| tree | add523b133a1c4e0d2189d437ad7a1616c024050 /src/main.cpp | |
| parent | 975705f1fc68af73b25ff135733c57d8cfd62912 (diff) | |
Untagged (unsafe) unions and unambiguous in|postfix notation.
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/src/main.cpp b/src/main.cpp index df9bd5205..c2cbb124b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -35,6 +35,7 @@ i32 win32_exec_command_line_app(char *fmt, ...) { return cast(i32)exit_code; } else { // NOTE(bill): failed to create process + gb_printf_err("Failed to execute command:\n\t%s\n", cmd_line); return -1; } } @@ -56,51 +57,50 @@ int main(int argc, char **argv) { Parser parser = {0}; - if (init_parser(&parser)) { - defer (destroy_parser(&parser)); - - if (parse_files(&parser, init_filename) == ParseFile_None) { - // print_ast(parser.files[0].decls, 0); - - Checker checker = {}; - - init_checker(&checker, &parser); - defer (destroy_checker(&checker)); - - check_parsed_files(&checker); - ssaGen ssa = {}; - if (ssa_gen_init(&ssa, &checker)) { - defer (ssa_gen_destroy(&ssa)); + if (!init_parser(&parser)) + return 1; + defer (destroy_parser(&parser)); - ssa_gen_code(&ssa); + if (parse_files(&parser, init_filename) != ParseFile_None) + return 1; - char const *output_name = ssa.output_file.filename; - isize base_name_len = gb_path_extension(output_name)-1 - output_name; + // print_ast(parser.files[0].decls, 0); - i32 exit_code = win32_exec_command_line_app( - "../misc/llvm-bin/opt -mem2reg %s -o %.*s.bc", - output_name, cast(int)base_name_len, output_name); - if (exit_code != 0) - return exit_code; + Checker checker = {}; - exit_code = win32_exec_command_line_app( - "clang -o %.*s.exe %.*s.bc " - "-Wno-override-module " - // "-nostartfiles " - "-lKernel32.lib -lUser32.lib -lGdi32.lib -lOpengl32.lib " - , - cast(int)base_name_len, output_name, - cast(int)base_name_len, output_name); - if (exit_code != 0) - return exit_code; + init_checker(&checker, &parser); + defer (destroy_checker(&checker)); - if (run_output) { - win32_exec_command_line_app("%.*s.exe", cast(int)base_name_len, output_name); - } - return 0; - } - } + check_parsed_files(&checker); + ssaGen ssa = {}; + if (!ssa_gen_init(&ssa, &checker)) + return 1; + defer (ssa_gen_destroy(&ssa)); + + ssa_gen_code(&ssa); + + char const *output_name = ssa.output_file.filename; + isize base_name_len = gb_path_extension(output_name)-1 - output_name; + + i32 exit_code = win32_exec_command_line_app( + "../misc/llvm-bin/opt -mem2reg %s -o %.*s.bc", + output_name, cast(int)base_name_len, output_name); + if (exit_code != 0) + return exit_code; + + exit_code = win32_exec_command_line_app( + "clang -o %.*s.exe %.*s.bc " + "-Wno-override-module " + // "-nostartfiles " + "-lKernel32.lib -lUser32.lib -lGdi32.lib -lOpengl32.lib " + , + cast(int)base_name_len, output_name, + cast(int)base_name_len, output_name); + if (exit_code != 0) + return exit_code; + + if (run_output) { + win32_exec_command_line_app("%.*s.exe", cast(int)base_name_len, output_name); } - - return 1; + return 0; } |