aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-01-04 03:52:37 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-01-04 03:52:37 -0700
commit2c8958f4549d6076385d80c73f2830306728b081 (patch)
tree0719a28a2e4aa1e9f7f85d504f50aecc8d8b841d /src/codegen.cpp
parent44d5d008d025c7f081d87da393363f40616bfe47 (diff)
downloadzig-2c8958f4549d6076385d80c73f2830306728b081.tar.gz
zig-2c8958f4549d6076385d80c73f2830306728b081.zip
import segregation for types
See #3
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp35
1 files changed, 18 insertions, 17 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp
index b929671eaf..4fe1373f92 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -20,7 +20,6 @@
CodeGen *codegen_create(Buf *root_source_dir) {
CodeGen *g = allocate<CodeGen>(1);
g->str_table.init(32);
- g->type_table.init(32);
g->link_table.init(32);
g->import_table.init(32);
g->build_type = CodeGenBuildTypeDebug;
@@ -1695,7 +1694,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_unsigned());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_bool = entry;
}
{
@@ -1707,7 +1705,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_unsigned());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_u8 = entry;
}
{
@@ -1720,7 +1717,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_unsigned());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_u16 = entry;
}
{
@@ -1733,7 +1729,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_unsigned());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_u32 = entry;
}
{
@@ -1746,7 +1741,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_unsigned());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_u64 = entry;
}
g->builtin_types.entry_c_string_literal = get_pointer_to_type(g, g->builtin_types.entry_u8, true);
@@ -1760,7 +1754,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_signed());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_i8 = entry;
}
{
@@ -1773,7 +1766,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_signed());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_i16 = entry;
}
{
@@ -1786,7 +1778,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_signed());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_i32 = entry;
}
{
@@ -1799,7 +1790,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_signed());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_i64 = entry;
}
{
@@ -1812,7 +1802,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_signed());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_isize = entry;
}
{
@@ -1825,7 +1814,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_unsigned());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_usize = entry;
}
{
@@ -1837,7 +1825,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_float());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_f32 = entry;
}
{
@@ -1849,7 +1836,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_float());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_f64 = entry;
}
{
@@ -1859,7 +1845,6 @@ static void define_builtin_types(CodeGen *g) {
entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
entry->size_in_bits, entry->align_in_bits,
LLVMZigEncoding_DW_ATE_unsigned());
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_void = entry;
}
{
@@ -1867,7 +1852,6 @@ static void define_builtin_types(CodeGen *g) {
entry->type_ref = LLVMVoidType();
buf_init_from_str(&entry->name, "unreachable");
entry->di_type = g->builtin_types.entry_void->di_type;
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_unreachable = entry;
}
{
@@ -1903,7 +1887,6 @@ static void define_builtin_types(CodeGen *g) {
"string", g->dummy_di_file, 0, entry->size_in_bits, entry->align_in_bits, 0,
nullptr, di_element_types, element_count, 0, nullptr, "");
- g->type_table.put(&entry->name, entry);
g->builtin_types.entry_string = entry;
}
}
@@ -2033,6 +2016,24 @@ static ImportTableEntry *codegen_add_code(CodeGen *g, Buf *abs_full_path,
import_entry->line_offsets = tokenization.line_offsets;
import_entry->path = full_path;
import_entry->fn_table.init(32);
+ import_entry->type_table.init(32);
+ import_entry->type_table.put(&g->builtin_types.entry_bool->name, g->builtin_types.entry_bool);
+ import_entry->type_table.put(&g->builtin_types.entry_u8->name, g->builtin_types.entry_u8);
+ import_entry->type_table.put(&g->builtin_types.entry_u16->name, g->builtin_types.entry_u16);
+ import_entry->type_table.put(&g->builtin_types.entry_u32->name, g->builtin_types.entry_u32);
+ import_entry->type_table.put(&g->builtin_types.entry_u64->name, g->builtin_types.entry_u64);
+ import_entry->type_table.put(&g->builtin_types.entry_i8->name, g->builtin_types.entry_i8);
+ import_entry->type_table.put(&g->builtin_types.entry_i16->name, g->builtin_types.entry_i16);
+ import_entry->type_table.put(&g->builtin_types.entry_i32->name, g->builtin_types.entry_i32);
+ import_entry->type_table.put(&g->builtin_types.entry_i64->name, g->builtin_types.entry_i64);
+ import_entry->type_table.put(&g->builtin_types.entry_isize->name, g->builtin_types.entry_isize);
+ import_entry->type_table.put(&g->builtin_types.entry_usize->name, g->builtin_types.entry_usize);
+ import_entry->type_table.put(&g->builtin_types.entry_f32->name, g->builtin_types.entry_f32);
+ import_entry->type_table.put(&g->builtin_types.entry_f64->name, g->builtin_types.entry_f64);
+ import_entry->type_table.put(&g->builtin_types.entry_void->name, g->builtin_types.entry_void);
+ import_entry->type_table.put(&g->builtin_types.entry_unreachable->name, g->builtin_types.entry_unreachable);
+ import_entry->type_table.put(&g->builtin_types.entry_string->name, g->builtin_types.entry_string);
+
import_entry->root = ast_parse(source_code, tokenization.tokens, import_entry, g->err_color);
assert(import_entry->root);
if (g->verbose) {