| ... | ... | @@ -20,7 +20,6 @@ |
| 20 | 20 | CodeGen *codegen_create(Buf *root_source_dir) { |
| 21 | 21 | CodeGen *g = allocate<CodeGen>(1); |
| 22 | 22 | g->str_table.init(32); |
| 23 | | g->type_table.init(32); |
| 24 | 23 | g->link_table.init(32); |
| 25 | 24 | g->import_table.init(32); |
| 26 | 25 | g->build_type = CodeGenBuildTypeDebug; |
| ... | ... | @@ -1695,7 +1694,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1695 | 1694 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1696 | 1695 | entry->size_in_bits, entry->align_in_bits, |
| 1697 | 1696 | LLVMZigEncoding_DW_ATE_unsigned()); |
| 1698 | | g->type_table.put(&entry->name, entry); |
| 1699 | 1697 | g->builtin_types.entry_bool = entry; |
| 1700 | 1698 | } |
| 1701 | 1699 | { |
| ... | ... | @@ -1707,7 +1705,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1707 | 1705 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1708 | 1706 | entry->size_in_bits, entry->align_in_bits, |
| 1709 | 1707 | LLVMZigEncoding_DW_ATE_unsigned()); |
| 1710 | | g->type_table.put(&entry->name, entry); |
| 1711 | 1708 | g->builtin_types.entry_u8 = entry; |
| 1712 | 1709 | } |
| 1713 | 1710 | { |
| ... | ... | @@ -1720,7 +1717,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1720 | 1717 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1721 | 1718 | entry->size_in_bits, entry->align_in_bits, |
| 1722 | 1719 | LLVMZigEncoding_DW_ATE_unsigned()); |
| 1723 | | g->type_table.put(&entry->name, entry); |
| 1724 | 1720 | g->builtin_types.entry_u16 = entry; |
| 1725 | 1721 | } |
| 1726 | 1722 | { |
| ... | ... | @@ -1733,7 +1729,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1733 | 1729 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1734 | 1730 | entry->size_in_bits, entry->align_in_bits, |
| 1735 | 1731 | LLVMZigEncoding_DW_ATE_unsigned()); |
| 1736 | | g->type_table.put(&entry->name, entry); |
| 1737 | 1732 | g->builtin_types.entry_u32 = entry; |
| 1738 | 1733 | } |
| 1739 | 1734 | { |
| ... | ... | @@ -1746,7 +1741,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1746 | 1741 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1747 | 1742 | entry->size_in_bits, entry->align_in_bits, |
| 1748 | 1743 | LLVMZigEncoding_DW_ATE_unsigned()); |
| 1749 | | g->type_table.put(&entry->name, entry); |
| 1750 | 1744 | g->builtin_types.entry_u64 = entry; |
| 1751 | 1745 | } |
| 1752 | 1746 | 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) { |
| 1760 | 1754 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1761 | 1755 | entry->size_in_bits, entry->align_in_bits, |
| 1762 | 1756 | LLVMZigEncoding_DW_ATE_signed()); |
| 1763 | | g->type_table.put(&entry->name, entry); |
| 1764 | 1757 | g->builtin_types.entry_i8 = entry; |
| 1765 | 1758 | } |
| 1766 | 1759 | { |
| ... | ... | @@ -1773,7 +1766,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1773 | 1766 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1774 | 1767 | entry->size_in_bits, entry->align_in_bits, |
| 1775 | 1768 | LLVMZigEncoding_DW_ATE_signed()); |
| 1776 | | g->type_table.put(&entry->name, entry); |
| 1777 | 1769 | g->builtin_types.entry_i16 = entry; |
| 1778 | 1770 | } |
| 1779 | 1771 | { |
| ... | ... | @@ -1786,7 +1778,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1786 | 1778 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1787 | 1779 | entry->size_in_bits, entry->align_in_bits, |
| 1788 | 1780 | LLVMZigEncoding_DW_ATE_signed()); |
| 1789 | | g->type_table.put(&entry->name, entry); |
| 1790 | 1781 | g->builtin_types.entry_i32 = entry; |
| 1791 | 1782 | } |
| 1792 | 1783 | { |
| ... | ... | @@ -1799,7 +1790,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1799 | 1790 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1800 | 1791 | entry->size_in_bits, entry->align_in_bits, |
| 1801 | 1792 | LLVMZigEncoding_DW_ATE_signed()); |
| 1802 | | g->type_table.put(&entry->name, entry); |
| 1803 | 1793 | g->builtin_types.entry_i64 = entry; |
| 1804 | 1794 | } |
| 1805 | 1795 | { |
| ... | ... | @@ -1812,7 +1802,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1812 | 1802 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1813 | 1803 | entry->size_in_bits, entry->align_in_bits, |
| 1814 | 1804 | LLVMZigEncoding_DW_ATE_signed()); |
| 1815 | | g->type_table.put(&entry->name, entry); |
| 1816 | 1805 | g->builtin_types.entry_isize = entry; |
| 1817 | 1806 | } |
| 1818 | 1807 | { |
| ... | ... | @@ -1825,7 +1814,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1825 | 1814 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1826 | 1815 | entry->size_in_bits, entry->align_in_bits, |
| 1827 | 1816 | LLVMZigEncoding_DW_ATE_unsigned()); |
| 1828 | | g->type_table.put(&entry->name, entry); |
| 1829 | 1817 | g->builtin_types.entry_usize = entry; |
| 1830 | 1818 | } |
| 1831 | 1819 | { |
| ... | ... | @@ -1837,7 +1825,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1837 | 1825 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1838 | 1826 | entry->size_in_bits, entry->align_in_bits, |
| 1839 | 1827 | LLVMZigEncoding_DW_ATE_float()); |
| 1840 | | g->type_table.put(&entry->name, entry); |
| 1841 | 1828 | g->builtin_types.entry_f32 = entry; |
| 1842 | 1829 | } |
| 1843 | 1830 | { |
| ... | ... | @@ -1849,7 +1836,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1849 | 1836 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1850 | 1837 | entry->size_in_bits, entry->align_in_bits, |
| 1851 | 1838 | LLVMZigEncoding_DW_ATE_float()); |
| 1852 | | g->type_table.put(&entry->name, entry); |
| 1853 | 1839 | g->builtin_types.entry_f64 = entry; |
| 1854 | 1840 | } |
| 1855 | 1841 | { |
| ... | ... | @@ -1859,7 +1845,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1859 | 1845 | entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name), |
| 1860 | 1846 | entry->size_in_bits, entry->align_in_bits, |
| 1861 | 1847 | LLVMZigEncoding_DW_ATE_unsigned()); |
| 1862 | | g->type_table.put(&entry->name, entry); |
| 1863 | 1848 | g->builtin_types.entry_void = entry; |
| 1864 | 1849 | } |
| 1865 | 1850 | { |
| ... | ... | @@ -1867,7 +1852,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1867 | 1852 | entry->type_ref = LLVMVoidType(); |
| 1868 | 1853 | buf_init_from_str(&entry->name, "unreachable"); |
| 1869 | 1854 | entry->di_type = g->builtin_types.entry_void->di_type; |
| 1870 | | g->type_table.put(&entry->name, entry); |
| 1871 | 1855 | g->builtin_types.entry_unreachable = entry; |
| 1872 | 1856 | } |
| 1873 | 1857 | { |
| ... | ... | @@ -1903,7 +1887,6 @@ static void define_builtin_types(CodeGen *g) { |
| 1903 | 1887 | "string", g->dummy_di_file, 0, entry->size_in_bits, entry->align_in_bits, 0, |
| 1904 | 1888 | nullptr, di_element_types, element_count, 0, nullptr, ""); |
| 1905 | 1889 | |
| 1906 | | g->type_table.put(&entry->name, entry); |
| 1907 | 1890 | g->builtin_types.entry_string = entry; |
| 1908 | 1891 | } |
| 1909 | 1892 | } |
| ... | ... | @@ -2033,6 +2016,24 @@ static ImportTableEntry *codegen_add_code(CodeGen *g, Buf *abs_full_path, |
| 2033 | 2016 | import_entry->line_offsets = tokenization.line_offsets; |
| 2034 | 2017 | import_entry->path = full_path; |
| 2035 | 2018 | import_entry->fn_table.init(32); |
| 2019 | import_entry->type_table.init(32); |
| 2020 | import_entry->type_table.put(&g->builtin_types.entry_bool->name, g->builtin_types.entry_bool); |
| 2021 | import_entry->type_table.put(&g->builtin_types.entry_u8->name, g->builtin_types.entry_u8); |
| 2022 | import_entry->type_table.put(&g->builtin_types.entry_u16->name, g->builtin_types.entry_u16); |
| 2023 | import_entry->type_table.put(&g->builtin_types.entry_u32->name, g->builtin_types.entry_u32); |
| 2024 | import_entry->type_table.put(&g->builtin_types.entry_u64->name, g->builtin_types.entry_u64); |
| 2025 | import_entry->type_table.put(&g->builtin_types.entry_i8->name, g->builtin_types.entry_i8); |
| 2026 | import_entry->type_table.put(&g->builtin_types.entry_i16->name, g->builtin_types.entry_i16); |
| 2027 | import_entry->type_table.put(&g->builtin_types.entry_i32->name, g->builtin_types.entry_i32); |
| 2028 | import_entry->type_table.put(&g->builtin_types.entry_i64->name, g->builtin_types.entry_i64); |
| 2029 | import_entry->type_table.put(&g->builtin_types.entry_isize->name, g->builtin_types.entry_isize); |
| 2030 | import_entry->type_table.put(&g->builtin_types.entry_usize->name, g->builtin_types.entry_usize); |
| 2031 | import_entry->type_table.put(&g->builtin_types.entry_f32->name, g->builtin_types.entry_f32); |
| 2032 | import_entry->type_table.put(&g->builtin_types.entry_f64->name, g->builtin_types.entry_f64); |
| 2033 | import_entry->type_table.put(&g->builtin_types.entry_void->name, g->builtin_types.entry_void); |
| 2034 | import_entry->type_table.put(&g->builtin_types.entry_unreachable->name, g->builtin_types.entry_unreachable); |
| 2035 | import_entry->type_table.put(&g->builtin_types.entry_string->name, g->builtin_types.entry_string); |
| 2036 | |
| 2036 | 2037 | import_entry->root = ast_parse(source_code, tokenization.tokens, import_entry, g->err_color); |
| 2037 | 2038 | assert(import_entry->root); |
| 2038 | 2039 | if (g->verbose) { |