2
0
Эх сурвалжийг харах

Cleanup; Move enums/globals di inside CompileUnit. Minor comment cleanup.

lachsinc 7 жил өмнө
parent
commit
48ad147818
2 өөрчлөгдсөн 19 нэмэгдсэн , 23 устгасан
  1. 17 21
      src/ir.cpp
  2. 2 2
      src/ir_print.cpp

+ 17 - 21
src/ir.cpp

@@ -26,8 +26,6 @@ struct irModule {
 	Map<irValue *>        anonymous_proc_lits; // Key: Ast *
 
 	irDebugInfo *         debug_compile_unit;
-	irDebugInfo *         debug_all_enums;   // TODO(lachsinc): Move into irDebugInfo_CompileUnit
-	irDebugInfo *         debug_all_globals; // TODO(lachsinc): Move into irDebugInfo_CompileUnit
 	Array<irDebugInfo *>  debug_location_stack; 
 
 
@@ -1438,9 +1436,8 @@ irValue *ir_add_local(irProcedure *proc, Entity *e, Ast *expr, bool zero_initial
 
 		ir_emit(proc, ir_instr_debug_declare(proc, expr, e, true, instr));
 
-		// TODO(lachsinc): "Arg" is not used yet but should be eventually, if applicable, set to param index
-		// irDebugInfo *di = *map_get(&proc->module->debug_info, hash_entity(proc->entity)); // TODO(lachsinc): Cleanup; lookup di for proc inside ir_add_debug_info_local() ?
-		ir_add_debug_info_local(proc, e, 0); // TODO(lachsinc): Cleanup, lookup file / di scope inside.
+		// TODO(lachsinc): "Arg" is not used yet but should be eventually, if applicable, set to param index.
+		ir_add_debug_info_local(proc, e, 0);
 		ir_pop_debug_location(proc->module);
 	}
 
@@ -1511,7 +1508,7 @@ irValue *ir_add_param(irProcedure *proc, Entity *e, Ast *expr, Type *abi_type) {
 	irValueParam *p = &v->Param;
 
 	ir_push_debug_location(proc->module, e ? e->identifier : nullptr, proc->debug_scope);
-	defer (ir_pop_debug_location(proc->module)); // TODO(lachsinc): This happens after the return calls to ir_emit_xxx right??
+	defer (ir_pop_debug_location(proc->module));
 
 	switch (p->kind) {
 	case irParamPass_Value: {
@@ -1625,7 +1622,7 @@ irDebugEncoding ir_debug_encoding_for_basic(BasicKind kind) {
 	case Basic_u32:
 	case Basic_u64:
 	case Basic_uint:
-	case Basic_uintptr: // TODO(lachsinc) unsigned or address?
+	case Basic_uintptr:
 		return irDebugBasicEncoding_unsigned;
 
 	// case Basic_f16:
@@ -1996,7 +1993,7 @@ irDebugInfo *ir_add_debug_info_type(irModule *module, Type *type, Entity *e, irD
 	// TODO(lachsinc): Reorder if tests, "unique" types, like basic etc. should go last, they are most likely to hit the existing hashed type
 	// and no point checking them for the rest of the types. Or just use a massive switch...
 
-	// NOTE(lachsinc): Types should be inserted into debug_info map as their named, not base_type()'d, counterpart.
+	// NOTE(lachsinc): Types should be inserted into debug_info map as their named, not base_type()'d counterparts.
 	Type *base = base_type(type);
 
 	if (type->kind == Type_Named) {
@@ -2007,7 +2004,6 @@ irDebugInfo *ir_add_debug_info_type(irModule *module, Type *type, Entity *e, irD
 			named_base->kind != Type_Union &&
 			named_base->kind != Type_Enum &&
 			named_base->kind != Type_BitField) {
-			// named_base->kind != Type_BitSet) {
 			// distinct / typedef etc.
 			irDebugInfo *di = ir_alloc_debug_info(irDebugInfo_DerivedType);
 			if (type->kind == Type_Named) {
@@ -2044,9 +2040,10 @@ irDebugInfo *ir_add_debug_info_type(irModule *module, Type *type, Entity *e, irD
 			di->DerivedType.size = ir_debug_size_bits(t_rawptr);
 			di->DerivedType.align = ir_debug_align_bits(t_rawptr); // TODO(lachsinc): Not sure if align is required.
 			map_set(&module->debug_info, hash_type(type), di);
-			// NOTE(lachsinc): llvm expects "null" for rawptr/voidptr
 			if (type->Basic.kind == Basic_cstring) {
 				di->DerivedType.base_type = ir_add_debug_info_type(module, t_i8, e, scope, file);
+			} else {
+				// NOTE(lachsinc): llvm expects "null" for rawptr/voidptr
 			}
 			return di;
 		}
@@ -2065,12 +2062,12 @@ irDebugInfo *ir_add_debug_info_type(irModule *module, Type *type, Entity *e, irD
 	}
 
 	if (is_type_pointer(type)) {
-		// TODO(lachsinc): Ensure this handles pointers to pointers of same type etc. correctly.
+		// TODO(lachsinc): Ensure this handles pointer-to-pointer of same type etc. correctly.
 		Type *deref = type_deref(base);
 		irDebugInfo *di = ir_alloc_debug_info(irDebugInfo_DerivedType);
 		di->DerivedType.tag = irDebugBasicEncoding_pointer_type;
 		di->DerivedType.size = ir_debug_size_bits(type);
-		// NOTE(lachsinc): Set in map before creative base_type to avoid circular dependency issues.
+		// NOTE(lachsinc): Map set before creating base_type to avoid circular dependency issues.
 		map_set(&module->debug_info, hash_type(type), di);
 		if (is_type_struct(deref)) {
 			int i = 123;
@@ -2081,7 +2078,7 @@ irDebugInfo *ir_add_debug_info_type(irModule *module, Type *type, Entity *e, irD
 
 	if (is_type_struct(type) || is_type_union(type) || is_type_enum(type)) {
 		if (type->kind == Type_Named) {
-			// Named named's should be handled prior as typedefs.
+			// NOTE(lachsinc): Named named's should always be handled prior as typedefs.
 			GB_ASSERT(type->Named.base->kind != Type_Named);
 		}
 
@@ -2134,7 +2131,7 @@ irDebugInfo *ir_add_debug_info_type(irModule *module, Type *type, Entity *e, irD
 
 			// TODO(lachsinc): Do we want to ensure this is an enum in the global scope before
 			// adding it into the modules enum array ??
-			array_add(&module->debug_all_enums->DebugInfoArray.elements, di);
+			array_add(&module->debug_compile_unit->CompileUnit.enums->DebugInfoArray.elements, di);
 		}
 
 		return di;
@@ -2146,8 +2143,7 @@ irDebugInfo *ir_add_debug_info_type(irModule *module, Type *type, Entity *e, irD
 
 	if (is_type_array(type)) {
 		irDebugInfo *di = ir_alloc_debug_info(irDebugInfo_CompositeType);
-
-		di->CompositeType.size = ir_debug_size_bits(type); // TODO(lachsinc): Confirm correct array sizing. llvm expects size in bits!
+		di->CompositeType.size = ir_debug_size_bits(type);
 		di->CompositeType.align = ir_debug_align_bits(type);
 		di->CompositeType.tag = irDebugBasicEncoding_array_type;
 		di->CompositeType.array_count = (i32)type->Array.count;
@@ -2160,7 +2156,7 @@ irDebugInfo *ir_add_debug_info_type(irModule *module, Type *type, Entity *e, irD
 	}
 
 	if (is_type_slice(type)) {
-		// NOTE(lachsinc): Every slice type has its own composite type / field debug infos created. This is wasteful!!
+		// NOTE(lachsinc): Every slice type has its own composite type / field debug infos created. This is sorta wasteful.
 
 		irDebugInfo *di = ir_alloc_debug_info(irDebugInfo_CompositeType);
 		di->CompositeType.name = str_lit("slice");
@@ -2285,7 +2281,7 @@ irDebugInfo *ir_add_debug_info_global(irModule *module, irValue *v) {
 
 	di->GlobalVariableExpression.var = var_di;
 
-	array_add(&module->debug_all_globals->DebugInfoArray.elements, di);
+	array_add(&module->debug_compile_unit->CompileUnit.globals->DebugInfoArray.elements, di);
 
 	return di;
 }
@@ -8439,7 +8435,7 @@ void ir_build_proc(irValue *value, irProcedure *parent) {
 		proc->module->stmt_state_flags = prev_stmt_state_flags;
 	}
 
-	// TODO(lachsinc): For now we pop the debug location inside ir_end_procedure_body(). 
+	// NOTE(lachsinc): For now we pop the debug location inside ir_end_procedure_body(). 
 	// This may result in debug info being missing for below.
 
 	if (proc->type->Proc.has_proc_default_values) {
@@ -8620,12 +8616,12 @@ void ir_init_module(irModule *m, Checker *c) {
 		irDebugInfo *enums_di = ir_alloc_debug_info(irDebugInfo_DebugInfoArray);
 		array_init(&enums_di->DebugInfoArray.elements, heap_allocator()); // TODO(lachsinc): ir_allocator() ??
 		map_set(&m->debug_info, hash_pointer(enums_di), enums_di); // TODO(lachsinc): Safe to hash this pointer for key?
-		m->debug_all_enums = enums_di;
+		m->debug_compile_unit->CompileUnit.enums = enums_di;
 
 		irDebugInfo *globals_di = ir_alloc_debug_info(irDebugInfo_DebugInfoArray);
 		array_init(&globals_di->DebugInfoArray.elements, heap_allocator()); // TODO(lachsinc): ir_allocator() ??
 		map_set(&m->debug_info, hash_pointer(globals_di), globals_di); // TODO(lachsinc): Safe to hash this pointer for key?
-		m->debug_all_globals = globals_di;
+		m->debug_compile_unit->CompileUnit.globals = globals_di;
 
 		array_init(&m->debug_location_stack, heap_allocator()); // TODO(lachsinc): ir_allocator() ??
 	}

+ 2 - 2
src/ir_print.cpp

@@ -1952,8 +1952,8 @@ void print_llvm_ir(irGen *ir) {
 				            ")",
 				            file->id,
 				            LIT(build_context.ODIN_VERSION),
-				            m->debug_all_enums->id,
-				            m->debug_all_globals->id);
+				            m->debug_compile_unit->CompileUnit.enums->id,
+				            m->debug_compile_unit->CompileUnit.globals->id);
 				break;
 			}
 			case irDebugInfo_File: