aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2016-11-06 21:22:05 +0000
committerGinger Bill <bill@gingerbill.org>2016-11-06 21:22:05 +0000
commit7ba0f259433a03ca930dfb55e1927ce1a0c06cf2 (patch)
treea2a3c78ec47c25b6f880fddccca266f2b791638c /src/main.cpp
parent6c2772d09338f044096240eeb01aa09d11ddda59 (diff)
Separate SSA opt; Basic Timings for sections only
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp42
1 files changed, 24 insertions, 18 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 7ff6b7eb7..856f9e253 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -2,14 +2,16 @@
#include "common.cpp"
#include "profiler.cpp"
+#include "timings.cpp"
#include "unicode.cpp"
#include "tokenizer.cpp"
#include "parser.cpp"
// #include "printer.cpp"
#include "checker/checker.cpp"
#include "ssa.cpp"
-#include "ssa_to_llvm.cpp"
-#include "vm.cpp"
+#include "ssa_opt.cpp"
+#include "ssa_print.cpp"
+// #include "vm.cpp"
// NOTE(bill): `name` is used in debugging and profiling modes
i32 win32_exec_command_line_app(char *name, char *fmt, ...) {
@@ -110,6 +112,10 @@ int main(int argc, char **argv) {
}
prof_init();
+ Timings timings = {};
+ timings_init(&timings, make_string("Total Time"), 128);
+ defer (timings_destroy(&timings));
+
#if 1
init_string_buffer_memory();
init_global_error_collector();
@@ -136,6 +142,8 @@ int main(int argc, char **argv) {
Parser parser = {0};
+ timings_start_section(&timings, make_string("Parser"));
+
if (!init_parser(&parser)) {
return 1;
}
@@ -147,6 +155,8 @@ int main(int argc, char **argv) {
#if 1
+ timings_start_section(&timings, make_string("Checker"));
+
Checker checker = {};
ArchData arch_data = make_arch_data(ArchKind_x64);
@@ -158,34 +168,26 @@ int main(int argc, char **argv) {
#endif
#if 1
+
ssaGen ssa = {};
if (!ssa_gen_init(&ssa, &checker)) {
return 1;
}
// defer (ssa_gen_destroy(&ssa));
+ timings_start_section(&timings, make_string("SSA gen"));
ssa_gen_tree(&ssa);
-#if 0
- VirtualMachine vm = {};
- vm_init(&vm, &ssa.module);
- // defer (vm_destroy(&vm));
-
- Array<vmValue> main_args = {}; // Empty
- vm_call_proc_by_name(&vm, make_string("main"), main_args);
-#endif
-
- {
- ssaFileBuffer buf = {};
- ssa_file_buffer_init(&buf, &ssa.output_file);
- defer (ssa_file_buffer_destroy(&buf));
+ timings_start_section(&timings, make_string("SSA opt"));
+ ssa_opt_tree(&ssa);
- ssa_print_llvm_ir(&buf, &ssa.module);
- }
+ timings_start_section(&timings, make_string("SSA print"));
+ ssa_print_llvm_ir(&ssa);
- prof_print_all();
+ // prof_print_all();
#if 1
+ timings_start_section(&timings, make_string("llvm-opt"));
char const *output_name = ssa.output_file.filename;
isize base_name_len = gb_path_extension(output_name)-1 - output_name;
@@ -212,6 +214,7 @@ int main(int argc, char **argv) {
}
#if 1
+ timings_start_section(&timings, make_string("llvm-llc"));
// For more arguments: http://llvm.org/docs/CommandGuide/llc.html
exit_code = win32_exec_command_line_app("llvm-llc",
"%.*sbin/llc %.*s.bc -filetype=obj -O%d "
@@ -226,6 +229,7 @@ int main(int argc, char **argv) {
return exit_code;
}
+ timings_start_section(&timings, make_string("msvc-link"));
gbString lib_str = gb_string_make(heap_allocator(), "Kernel32.lib");
// defer (gb_string_free(lib_str));
@@ -250,6 +254,8 @@ int main(int argc, char **argv) {
}
// prof_print_all();
+ timings_print_all(&timings);
+
if (run_output) {
win32_exec_command_line_app("odin run", "%.*s.exe", cast(int)base_name_len, output_name);
}