aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_general.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Change MAX_STORE_SIZEdev-2022-07gingerBill2022-06-301-2/+2
|
* Use `memmove` if possible when emitting store over a certain sizegingerBill2022-06-301-0/+20
|
* Minor style changegingerBill2022-06-121-1/+1
|
* Merge pull request #1395 from hdooley/mastergingerBill2022-06-121-8/+14
|\ | | | | factor out alloca generation into a helper
| * review feedbackHenry Dooley2021-12-281-1/+3
| |
| * cast isize to unsigned int for llvm api, add defaulted name parameter to helper.Henry Dooley2021-12-251-4/+4
| |
| * factor out alloca generation into a helperHenry Dooley2021-12-251-7/+11
| |
* | Make the link order of foreign imports deterministicgingerBill2022-05-041-2/+5
| |
* | Compiler: Add early error for output path being a directory.Jeroen van Rijn2022-04-241-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | - Introduce new `Path` type and an array of build paths on the build context. - Resolve input and output paths/files early (before parsing). - Error early if inputs are missing or outputs are directories. - Plumb new file path generation into linker stage instead of its adhoc method. TODO: - Remove more adhoc file path generation in parser and linker stage. - Make intermediate object file generation use new path system. - Round out and robustify Path helper functions.
* | Make constant string backing structures use PrivateLinkage compared to ↵gingerBill2022-03-241-3/+3
| | | | | | | | InternalLinkage
* | `union #shared_nil`gingerBill2022-03-241-3/+28
| | | | | | | | This adds a feature to `union` which requires all the variants to have a `nil` value and on assign to the union, checks whether that value is `nil` or not. If the value is `nil`, the union will be `nil` (thus sharing the `nil` value)
* | Fix issue #1592 "LLVM code gen error when using a constant in an if"gitlost2022-03-181-3/+12
| | | | | | | | | | | | | | Changes lb_build_if_stmt() to return null lbValue if condition is cmpAnd, cmpOr or non-const neg and check in lb_build_if_stmt() to avoid short circuiting if that's the case Adds test to "tests/issues" and adds step in CI to check this dir
* | Begin work on support objc intrinsicsgingerBill2022-02-081-1/+7
| |
* | avoid segfault on map resizeCiD-2022-01-261-1/+2
| |
* | Fix double map dereference indexinggingerBill2022-01-261-0/+4
|/
* Fix #1319gingerBill2021-11-191-3/+8
|
* Remove many LLVM optimization passes which were causes UB due to them ↵gingerBill2021-11-061-1/+1
| | | | assuming C-like behaviour incompatible with Odin
* Make llvm backend code use `PtrMap`; remove dead codegingerBill2021-11-051-31/+25
|
* `@(linkage=<string>)` for procedures and variables; `@(require)` for ↵gingerBill2021-11-041-0/+13
| | | | procedures; `package runtime` linkage improvements; Subsequence improvements to `lb_run_remove_unused_function_pass`
* Add `ODIN_LLVM_MINIMUM_VERSION_12`gingerBill2021-10-251-1/+1
|
* Update alignment rules for `matrix` types as a compromise to keep zero paddinggingerBill2021-10-251-2/+6
|
* Support indexing matricesgingerBill2021-10-191-0/+30
|
* Basic support for matrix*vector, vector*matrix operationsgingerBill2021-10-191-3/+5
|
* Begin work on matrix typegingerBill2021-10-181-0/+18
|
* Correct ABI for windows with LLVMgingerBill2021-10-021-0/+2
|
* Add sizes to assert messagegingerBill2021-10-021-1/+4
|
* Add message to assert; add sanity check for possible future behaviourgingerBill2021-10-021-11/+14
|
* Minor code cleanup for backend; add ↵gingerBill2021-10-021-8/+10
| | | | `struct_fields_index_by_increasing_offset` for future use
* Remove need for alignment `lb_struct_has_padding_prefix`gingerBill2021-10-021-12/+15
|
* Heavily improve the LLVM struct type generation to improve ABIgingerBill2021-10-021-65/+50
|
* Fix #1174gingerBill2021-09-181-1/+5
|
* LLVM Code Generator: Add explicitly padding between fields in LLVM struct typesgingerBill2021-09-131-15/+55
|
* Replace many uses of `heap_allocator()` with `permanent_allocator()`gingerBill2021-09-131-2/+2
|
* Begin minimize `Type` size by replacing `Array` with `Slice` etcgingerBill2021-09-131-1/+1
|
* Prepare for LLVM 12.0.1 compatibilitygingerBill2021-09-111-15/+23
|
* Treat `Type_Tuple` closer to a `Type_Struct` in `lb_type`gingerBill2021-08-261-0/+3
|
* Unify thread pool logic across the rest of the compiler, using a global ↵gingerBill2021-08-261-2/+0
| | | | thread pool
* Add multi-pointer types `[^]T`gingerBill2021-08-211-0/+35
|
* Migrate and remove more from gb.hgingerBill2021-08-191-5/+3
|
* Remove unused codegingerBill2021-08-191-6/+5
|
* Fix #1026gingerBill2021-08-131-2/+25
|
* Unify semantics of the built-in `swizzle` procedure with the selector ↵gingerBill2021-08-091-0/+44
| | | | expression semantics e.g. `.xyz`
* Reorganize llvm_backend.cpp into separate files for easier maintenancegingerBill2021-08-071-0/+2490