aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Big movesThomas Voss 2024-06-184-117/+146
|
* Some more typechecking for functionsThomas Voss 2024-06-182-57/+77
|
* Add 128-bit integersThomas Voss 2024-06-182-15/+20
|
* Add the nonnull attribute to codegenstmt()Thomas Voss 2024-06-181-1/+2
|
* Do more work on the typechecker and compilerThomas Voss 2024-06-186-105/+193
|
* Codegen global variablesThomas Voss 2024-06-171-40/+57
|
* Don’t create a new builder every iterationThomas Voss 2024-06-171-3/+3
|
* Implement super simple function type-checkingThomas Voss 2024-06-172-12/+52
|
* Begin work on the static analyzerThomas Voss 2024-06-179-4/+344
|
* Prefer #error to static_assert()Thomas Voss 2024-06-141-2/+2
|
* Add missing common.h includes and formatting fixesThomas Voss 2024-06-146-8/+20
|
* Minor efficiency improvementThomas Voss 2024-06-141-2/+5
|
* Don’t hardcode _AST_LAST_ENTThomas Voss 2024-06-141-1/+1
|
* Allow identifiers in expressionsThomas Voss 2024-06-142-0/+7
|
* Add a basic arena allocatorThomas Voss 2024-06-142-1/+116
|
* Fix alignof() usage and a very sneaky bugThomas Voss 2024-06-122-26/+28
| | | | | | | | | | | | | | | | | | It might seem innocuous, but the following expression is actually quite prone to breakage: ast->kids[i].lhs = parseexpr(ast, toks); The reason is that parseexpr() and the other parsing functions return indicies into the AST, however in doing so they may find that the AST needs to grow and call astresz(). Should astresz() be called there is a chance that we will realloc() a new buffer somewhere else in memory, causing the left-hand side of the above expression to now be pointing to an invalid location in memory. To combat this we’re forced to break it up into two statements: idx_t_ lhs = parseexpr(ast, toks); ast->kids[i].lhs = lhs;
* Use smaller default capacities in debug modeThomas Voss 2024-06-122-13/+15
|
* Strip U+0027 APOSTROPHE from integer literalsThomas Voss 2024-06-121-1/+11
|
* Mark bufalloc with __attribute__((alloc_size))Thomas Voss 2024-06-121-1/+1
|
* Assert that we aren’t freeing anythingThomas Voss 2024-06-121-0/+2
|
* Assert that we don’t have too many tokensThomas Voss 2024-06-112-0/+10
|
* Dispose the LLVM module after useThomas Voss 2024-06-111-0/+1
|
* Add some unreachables in placesThomas Voss 2024-06-111-1/+5
|
* Code reshufflingThomas Voss 2024-06-117-9/+33
|
* Remove ‘soa’ from lots of identifiersThomas Voss 2024-06-117-59/+57
|
* Be consistent with the *_t_ suffix for typedefsThomas Voss 2024-06-112-6/+6
|
* Switch size_t indicies to be idx_t_Thomas Voss 2024-06-114-36/+23
|
* Add basic LLVM codegenThomas Voss 2024-06-118-152/+306
|
* Get building & linking with LLVM workingThomas Voss 2024-06-113-0/+49
|
* Parse very basic declarationsThomas Voss 2024-06-112-24/+174
|
* Begin work on a basic parserThomas Voss 2024-06-113-71/+151
|
* Lex number literalsThomas Voss 2024-06-112-0/+27
|
* Use alignof() instead of hardcoding 8Thomas Voss 2024-06-111-1/+1
|
* FormattingThomas Voss 2024-06-112-34/+22
|
* Color functions with __attribute__()Thomas Voss 2024-06-112-4/+4
|
* Define GCC-specific macros in make.cThomas Voss 2024-06-111-8/+0
|
* Slightly simplify codeThomas Voss 2024-06-091-10/+8
|
* Use CHAR_BITThomas Voss 2024-06-091-1/+3
|
* Add likely() and unlikely() macrosThomas Voss 2024-06-081-5/+13
|
* Switch to an SOA for lexemesThomas Voss 2024-06-085-67/+190
|
* Sort lexeme kindsThomas Voss 2024-06-081-7/+6
|
* Do some lexer workThomas Voss 2024-06-089-30/+2335
|
* Fix some undefined behaviorThomas Voss 2024-06-081-6/+4
|
* Genesis commitThomas Voss 2024-06-0810-0/+689