aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2016-08-24 15:06:36 +0100
committerGinger Bill <bill@gingerbill.org>2016-08-24 15:06:36 +0100
commit6bd898e552392b1bd11ad16c7476833261c1d4b7 (patch)
treeadd523b133a1c4e0d2189d437ad7a1616c024050 /src/main.cpp
parent975705f1fc68af73b25ff135733c57d8cfd62912 (diff)
Untagged (unsafe) unions and unambiguous in|postfix notation.
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp82
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;
}