diff --git a/src/build_settings.cpp b/src/build_settings.cpp index ecca85e4f..51d8c9b73 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -210,6 +210,8 @@ struct BuildContext { bool use_separate_modules; bool threaded_checker; + bool show_debug_messages; + u32 cmd_doc_flags; Array extra_packages; diff --git a/src/checker.cpp b/src/checker.cpp index 5f6e03a4f..a2df43cab 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -2004,7 +2004,7 @@ void add_entity_dependency_from_procedure_parameters(Map *M, } Array generate_entity_dependency_graph(CheckerInfo *info, gbAllocator allocator) { -#define TIME_SECTION(str) do { if (build_context.show_more_timings) timings_start_section(&global_timings, str_lit(str)); } while (0) +#define TIME_SECTION(str) do { debugf("[Section] %s\n", str); if (build_context.show_more_timings) timings_start_section(&global_timings, str_lit(str)); } while (0) Map M = {}; // Key: Entity * map_init(&M, allocator, info->entities.count); @@ -4204,7 +4204,7 @@ Array find_entity_path(Entity *start, Entity *end, Map *visi void calculate_global_init_order(Checker *c) { -#define TIME_SECTION(str) do { if (build_context.show_more_timings) timings_start_section(&global_timings, str_lit(str)); } while (0) +#define TIME_SECTION(str) do { debugf("[Section] %s\n", str); if (build_context.show_more_timings) timings_start_section(&global_timings, str_lit(str)); } while (0) CheckerInfo *info = &c->info; @@ -4477,6 +4477,8 @@ void check_procedure_bodies(Checker *c) { check_proc_info(c, pi, nullptr, nullptr); total_bodies_checked.fetch_add(1, std::memory_order_relaxed); } + + debugf("Total Procedure Bodies Checked: %td\n", total_bodies_checked.load(std::memory_order_relaxed)); return; } @@ -4544,7 +4546,7 @@ void check_procedure_bodies(Checker *c) { GB_ASSERT(remaining == 0); } - // gb_printf_err("Total Procedure Bodies Checked: %td\n", total_bodies_checked.load(std::memory_order_relaxed)); + debugf("Total Procedure Bodies Checked: %td\n", total_bodies_checked.load(std::memory_order_relaxed)); global_procedure_body_in_worker_queue = false; } @@ -4744,7 +4746,7 @@ void check_unique_package_names(Checker *c) { void check_parsed_files(Checker *c) { -#define TIME_SECTION(str) do { if (build_context.show_more_timings) timings_start_section(&global_timings, str_lit(str)); } while (0) +#define TIME_SECTION(str) do { debugf("[Section] %s\n", str); if (build_context.show_more_timings) timings_start_section(&global_timings, str_lit(str)); } while (0) TIME_SECTION("map full filepaths to scope"); add_type_info_type(&c->builtin_ctx, t_invalid); diff --git a/src/common.cpp b/src/common.cpp index 9d528d723..70a049dc0 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -39,7 +39,7 @@ gb_inline void zero_size(void *ptr, isize len) { i32 next_pow2(i32 n); i64 next_pow2(i64 n); isize next_pow2_isize(isize n); - +void debugf(char const *fmt, ...); template gb_inline U bit_cast(V &v) { return reinterpret_cast(v); } diff --git a/src/main.cpp b/src/main.cpp index 8c4eb7d7c..d4cf01a38 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,6 +7,15 @@ #include "exact_value.cpp" #include "build_settings.cpp" +void debugf(char const *fmt, ...) { + if (build_context.show_debug_messages) { + gb_printf_err("[DEBUG] "); + va_list va; + va_start(va, fmt); + (void)gb_printf_err_va(fmt, va); + va_end(va); + } +} gb_global Timings global_timings = {0}; @@ -601,6 +610,7 @@ enum BuildFlagKind { BuildFlag_UseLLD, BuildFlag_UseSeparateModules, BuildFlag_ThreadedChecker, + BuildFlag_ShowDebugMessages, BuildFlag_Vet, BuildFlag_VetExtra, BuildFlag_UseLLVMApi, @@ -724,6 +734,7 @@ bool parse_build_flags(Array args) { add_flag(&build_flags, BuildFlag_UseLLD, str_lit("lld"), BuildFlagParam_None, Command__does_build); add_flag(&build_flags, BuildFlag_UseSeparateModules,str_lit("use-separate-modules"),BuildFlagParam_None, Command__does_build); add_flag(&build_flags, BuildFlag_ThreadedChecker, str_lit("threaded-checker"), BuildFlagParam_None, Command__does_check); + add_flag(&build_flags, BuildFlag_ShowDebugMessages, str_lit("show-debug-messages"), BuildFlagParam_None, Command_all); add_flag(&build_flags, BuildFlag_Vet, str_lit("vet"), BuildFlagParam_None, Command__does_check); add_flag(&build_flags, BuildFlag_VetExtra, str_lit("vet-extra"), BuildFlagParam_None, Command__does_check); add_flag(&build_flags, BuildFlag_UseLLVMApi, str_lit("llvm-api"), BuildFlagParam_None, Command__does_build); @@ -1212,6 +1223,10 @@ bool parse_build_flags(Array args) { build_context.threaded_checker = true; break; + case BuildFlag_ShowDebugMessages: + build_context.show_debug_messages = true; + break; + case BuildFlag_Vet: build_context.vet = true; break; @@ -1951,15 +1966,15 @@ bool check_env(void) { int main(int arg_count, char const **arg_ptr) { +#define TIME_SECTION(str) do { debugf("[Section] %s\n", str); timings_start_section(&global_timings, str_lit(str)); } while (0) + if (arg_count < 2) { usage(make_string_c(arg_ptr[0])); return 1; } - Timings *timings = &global_timings; - - timings_init(timings, str_lit("Total Time"), 2048); - defer (timings_destroy(timings)); + timings_init(&global_timings, str_lit("Total Time"), 2048); + defer (timings_destroy(&global_timings)); arena_init(&permanent_arena, heap_allocator()); temp_allocator_init(&temporary_allocator_data, 16*1024*1024); @@ -2123,7 +2138,7 @@ int main(int arg_count, char const **arg_ptr) { init_universal(); // TODO(bill): prevent compiling without a linker - timings_start_section(timings, str_lit("parse files")); + TIME_SECTION("parse files"); Parser parser = {0}; if (!init_parser(&parser)) { @@ -2141,7 +2156,7 @@ int main(int arg_count, char const **arg_ptr) { temp_allocator_free_all(&temporary_allocator_data); - timings_start_section(timings, str_lit("type check")); + TIME_SECTION("type check"); Checker checker = {0}; @@ -2173,10 +2188,10 @@ int main(int arg_count, char const **arg_ptr) { } if (build_context.query_data_set_settings.ok) { - generate_and_print_query_data(&checker, timings); + generate_and_print_query_data(&checker, &global_timings); } else { if (build_context.show_timings) { - show_timings(&checker, timings); + show_timings(&checker, &global_timings); } } @@ -2191,7 +2206,7 @@ int main(int arg_count, char const **arg_ptr) { return 1; } - timings_start_section(timings, str_lit("LLVM API Code Gen")); + TIME_SECTION("LLVM API Code Gen"); lbGenerator gen = {}; if (!lb_init_generator(&gen, &checker)) { return 1; @@ -2206,7 +2221,7 @@ int main(int arg_count, char const **arg_ptr) { i32 result = linker_stage(&gen); if (result != 0) { if (build_context.show_timings) { - show_timings(&checker, timings); + show_timings(&checker, &global_timings); } return 1; } @@ -2214,7 +2229,7 @@ int main(int arg_count, char const **arg_ptr) { } if (build_context.show_timings) { - show_timings(&checker, timings); + show_timings(&checker, &global_timings); } remove_temp_files(&gen); diff --git a/src/timings.cpp b/src/timings.cpp index b1fbdb952..bc32d1917 100644 --- a/src/timings.cpp +++ b/src/timings.cpp @@ -128,7 +128,6 @@ void timings__stop_current_section(Timings *t) { } void timings_start_section(Timings *t, String const &label) { - // gb_printf_err("[%.*s]\n", LIT(label)); timings__stop_current_section(t); array_add(&t->sections, make_time_stamp(label)); }