| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | create distinct interned string type | 2025-12-15 | 1 | -1/+1 | |
| | | | | | | | | | | | | | | | Interned strings are used pervasively, so it's a good idea to add a layer of type safety to differentiate them from general cstrs and avoid potential bugs from comparing non-interned and interned strings. Not that that's happened so far that I can remember, but it could. I'm 90% sure it's legal to alias `struct {char c;}` pointers with `char` pointers. This specific typedef gives type safety but with a simple one-way `internstr -> const char *` typecast (with `&istr->c`). Converting the other way around is more intentional: a straight up cast `(internstr)cstr` which sticks out as unchecked and probably wrong, or calling the intern(cstr) function, which is the right way. | ||||
| * | fix position independent loads of function symbols. | 2025-12-13 | 1 | -1/+1 | |
| | | | | | | | | | For `extern int x[1];`, can use PCREL32 for &x. But for `extern int x(int)`, must use GOTREL, when not being called directly (that's PLT). Therefore the type of an external symbol (actually just whether it denotes a function) matters when deciding what kind of relocation to emit, so keep that information. | ||||
| * | rename arraylength macro -> countof | 2025-12-11 | 1 | -3/+3 | |
| | | |||||
| * | change op names to match 285063eba44 | 2025-11-21 | 1 | -2/+2 | |
| | | |||||
| * | rename IR classes to reflect bitsize | 2025-11-21 | 1 | -1/+1 | |
| | | |||||
| * | Organize source files into directories | 2025-10-19 | 1 | -0/+77 | |