aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_proc.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #2464 from ap29600/simd_unaligned_loadgingerBill2023-04-201-5/+19
|\ | | | | Improve code generation for `intrinsics.unaligned_load/store` on `#simd` types
| * improve code generation for `intrinsics.unaligned_load/store` on `#simd` typesAndrea Piseri2023-04-161-5/+19
| | | | | | | | | | | | | | | | | | the default implementation calls memcpy on an `alloca` constant, which seems to heavily confuse the optimizer and produces overall suboptimal code. Introducing this specialization simplifies the intermediate representation produced, resulting in more efficient code.
* | Merge pull request #2450 from destroycomputers/mastergingerBill2023-04-201-1/+1
|\ \ | | | | | | Fix intrinsics.alloca code generation
| * | Fix intrinsics.alloca code generationdestroycomputers2023-04-111-1/+1
| |/ | | | | | | | | | | | | | | | | | | | | There was a disconnect between the declared return type for alloca intrinsic in check_builtin.cpp (multi_pointer(t_u8)) and the generated result type in llvm_backend_proc.cpp (t_u8_ptr). This allowed slicing the return type, but in the code generation process the type of the expression wasn't sliceable, which triggered the assert. Fixes #2139
* / Add `@(deferred_*_by_ptr=<proc>)`gingerBill2023-04-151-0/+16
|/
* Increase use of `temporary_allocator()` where possiblegingerBill2023-03-161-7/+7
|
* Minimize severe memory usage by enforcing the `heap_allocator()` in placesgingerBill2023-03-161-5/+8
|
* Fix #2329gingerBill2023-02-191-3/+24
|
* Improve handling of passing constants to implicit immutable const ref parametersgingerBill2023-02-171-2/+18
|
* Rename built-in procedure to `expand_values`gingerBill2023-02-071-3/+3
|
* Enforce dynamic map calls for the time beinggingerBill2023-02-031-2/+2
|
* Minor change to `byval` for readonly parametersgingerBill2023-02-031-3/+12
|
* Use `~{}` syntaxgingerBill2023-01-231-1/+1
|
* Escape `$` in asmgingerBill2023-01-231-1/+1
|
* Fix #2286 by printing an error correctlygingerBill2023-01-161-1/+3
|
* Fix #2305gingerBill2023-01-161-1/+8
|
* Begin to generalize modules away from `AstPackage *` in `-use-separate-modules`gingerBill2023-01-121-1/+1
|
* Correct missing procedures in other build modules which cause a linkage problemgingerBill2023-01-121-6/+8
|
* Make all maps use heap allocator implicitlygingerBill2023-01-031-5/+5
|
* Remove unneeded `local_entity_map`gingerBill2023-01-021-1/+0
|
* Correct a race condition when checking the procedure bodygingerBill2023-01-021-1/+2
|
* Revert "Change `tav` to be a pointer internally"gingerBill2022-12-221-10/+10
| | | | This reverts commit e98f1a28e68e82753728f58b3465793192b74f9d.
* Change `tav` to be a pointer internallygingerBill2022-12-221-10/+10
|
* Remove dead code in the compilergingerBill2022-12-181-48/+40
|
* `gb_internal` LLVM backendgingerBill2022-12-181-28/+27
|
* Initialize the multiple return value map in `lb_create_dummy_procedure`gingerBill2022-12-071-0/+1
|
* Naïve optimization of named _split_ multiple return valued when `defer` is ↵gingerBill2022-11-251-12/+64
| | | | | | | | | | never used This is a naïve optimization but it helps a lot in the general case where callee temporary stack variables are not allocated to represent the named return values by using that specific memory. In the future, try to check if a specific named return value is ever used a `defer` within a procedure or not, or is ever passed to a nested procedure call (e.g. possibly escapes).
* Correct return ptr semantics for split returnsgingerBill2022-11-241-1/+8
|
* Basic copy elision support for multiple return valuesgingerBill2022-11-241-17/+43
|
* Listen to past Bill's wisdomgingerBill2022-11-231-24/+10
|
* Basic support for new ABI experiment on Win64gingerBill2022-11-231-18/+75
|
* Remove copy elision codegingerBill2022-11-221-8/+3
|
* Fix #2179gingerBill2022-11-211-1/+1
|
* Fix #2199gingerBill2022-11-211-1/+1
|
* Revert "Minor improvement to multi return value reducing stack usage"gingerBill2022-11-131-35/+9
|
* Enforce pointer castgingerBill2022-11-131-0/+1
|
* Minor improvement to multi return value reducing stack usagegingerBill2022-11-131-8/+34
|
* Merge branch 'master' into map-devgingerBill2022-11-111-9/+9
|\
| * Make `intrinsics.ptr_sub` use explicit integer arithmetic internallygingerBill2022-11-111-9/+9
| |
* | Correct static map get; make get take a pointer to simplify compiler internalsgingerBill2022-11-101-2/+2
| |
* | Add `intrinsics.map_cell_info` and `intrinsics.map_info`gingerBill2022-11-081-0/+4
| |
* | Make `Map_Info` store pointers to cell info rather than inlinegingerBill2022-11-081-0/+3
|/
* Ad-hoc pass source code location directly by pointer without stack copygingerBill2022-10-311-2/+9
|
* Optimize `#caller_location` and `#location` to use read only data section ↵gingerBill2022-10-311-2/+2
| | | | where possible
* Use direct parameter value in `lb_find_ident` when possiblegingerBill2022-10-301-0/+4
|
* Make `raw_data` an intrinsic rather a `@(builtin)` runtime proceduregingerBill2022-10-301-0/+31
|
* Force call site attributes for procedures (relating to #2121 causing ABI ↵gingerBill2022-10-101-0/+14
| | | | issues for `intrinsics.objc_send`)
* Remove header cache codegingerBill2022-09-211-4/+0
|
* Reduce unnecessary map getsgingerBill2022-09-211-1/+1
|
* Correct `lb_gen_map_header` initializationgingerBill2022-09-171-0/+2
|