aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_abi.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Change Odin calling convention to not do a copy on `byval` for SysVgingerBill2024-07-141-4/+4
|
* Mock out `#no_capture` for future usegingerBill2024-07-141-0/+6
|
* fix not setting cc before using it in abi computationsLaytan Laats2024-07-011-1/+1
|
* make structs with multiple fields always return indirect in wasm c abiLaytan Laats2024-07-011-8/+8
|
* fix large ints amd64 sysv abiLaytan Laats2024-06-091-1/+9
| | | | Fixes #3707
* compiler: support returning 0 sized types in arm64 abiLaytan Laats2024-04-241-2/+3
|
* fix amd64 sysv abi to pass asan everywhereLaytan Laats2024-04-041-32/+15
| | | | | | | | | | | | | | | I verified the PR by running the entire test suite of Odin itself with `-sanitize:address` and also the ols test suite (which caused unique problems before). A test has also been added with some problematic code, Windows seems to have problems with asan in CI or in general so it is not ran there. The LB_ABI_COMPUTE_RETURN_TYPES block has been removed entirely because it was unused, I got pretty confused why it didn't effect anything at first. Fixes #3211
* Merge pull request #3372 from laytan/fix-lbarg-ignore-logicgingerBill2024-04-041-1/+1
|\ | | | | fix lbArg_Ignore logic
| * fix lbArg_Ignore logicLaytan Laats2024-04-041-1/+1
| | | | | | | | Fixes #2698
* | fix 128 bit int alignment on arm64Laytan Laats2024-04-041-1/+1
|/ | | | Fixes #2403
* Disable packing on ARM64 and AMD64gingerBill2024-03-281-2/+4
|
* Fix wasm abigingerBill2024-03-261-1/+1
|
* darwin: arm64 abi fixesLaytan Laats2024-03-231-2/+19
| | | | | | | | | | | | | | | Since commit b4fe9677a1f69acde12e7cf296269f0c4d98362f some core tests segfault during build, upon investigation it is because some arg types were of size 0 and you can't have a 0 sized int. It also applies the earlier fix for parameters to the return types, this fixes #3223 Thought I would put this PR up, but I am in no way an expert in abi so feel free to close for a better fix if there is one. I am able to run the entire core test suite with `-sanitize:address` with these changes.
* Try doing `<{i64, i32}>` instead of `[i64, i64]` for ARM64 12-byte parametersgingerBill2024-03-201-1/+15
|
* Force packed structs in ABI parametersgingerBill2024-03-201-2/+2
|
* Change ARM64 ABI for integer-like parametersgingerBill2024-03-201-8/+2
|
* Update ARM64 ABI return typegingerBill2024-03-201-8/+3
|
* Begin work on making the type info table be constantly initializedgingerBill2023-09-221-7/+7
|
* Fix typo in wasm64p32 abigingerBill2023-06-071-1/+1
|
* Ignore non-variable parametersgingerBill2023-06-071-3/+6
|
* Change ABI for wasm64p32 on slices and structsgingerBill2023-06-071-16/+42
|
* Merge branch 'master' into separate-int-word-sizesgingerBill2023-06-061-10/+27
|\
| * Merge pull request #2563 from charles-l/mastergingerBill2023-05-291-9/+22
| |\ | | | | | | WASM: Use BasicC ABI convention for arguments that have `proc "c"`
| | * WASM: Use BasicC ABI convention for arguments that have a `proc "c"` annotationcharles2023-05-291-9/+22
| | |
| * | Fix #2561 - ARM64 ABI bug for homogenous structs with more than 4 elementsgingerBill2023-05-291-1/+5
| |/
* | Rename `word_size` to `ptr_size` internally to make it clearergingerBill2023-04-201-4/+4
| |
* | Begin work on new pseudo-architecture: wasm64p32gingerBill2023-04-201-1/+1
|/
* Improve `llreg` integer type generation for SysV ABIgingerBill2023-03-191-58/+79
|
* Improve SysV ABI for multiple return values that fit into a single register; ↵gingerBill2023-03-191-4/+8
| | | | Fixes #2384
* Merge branch 'master' into compiler-improvements-2022-12gingerBill2022-12-211-1/+1
|\
| * Change the order of the args and ret for Arm64 ABIgingerBill2022-12-211-1/+1
| |
* | `gb_internal` LLVM backendgingerBill2022-12-181-77/+77
|/
* Naïve optimization of named _split_ multiple return valued when `defer` is ↵gingerBill2022-11-251-1/+3
| | | | | | | | | | 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).
* Make split multiple return logic only work for the native Odin calling ↵gingerBill2022-11-241-1/+11
| | | | conventions
* Add split multiple return to different ABIsgingerBill2022-11-241-43/+75
|
* Basic support for new ABI experiment on Win64gingerBill2022-11-231-21/+90
|
* Improve SysV ABI LLVM IR generation for development purposesgingerBill2022-10-301-1/+26
|
* Force call site attributes for procedures (relating to #2121 causing ABI ↵gingerBill2022-10-101-18/+18
| | | | issues for `intrinsics.objc_send`)
* Correct max alignment handling throughout the llvm backendgingerBill2022-08-241-1/+1
|
* Wrap all `LLVMGetElementType` usesgingerBill2022-08-091-8/+8
|
* Eliminate use of LLVMGetElementType for pointersgingerBill2022-08-091-2/+8
|
* Fix #1834gingerBill2022-07-241-7/+14
|
* Unify abi for wasm32 and the future wasm64gingerBill2022-05-211-7/+2
|
* Improve ABI design for wasm32 targetsgingerBill2022-05-211-18/+36
|
* Add basic arm32 ABI support (linux_arm32)gingerBill2022-05-011-0/+88
|
* Change target name to `freestanding_amd64_sysv`gingerBill2022-02-231-2/+2
|
* Add `freestanding_amd64_gnu`gingerBill2022-02-201-1/+3
|
* Allow sysv and win64 calling conventions to be used on any platform on amd64gingerBill2022-02-161-0/+6
|
* Rename architecture `386` to `i386`gingerBill2022-01-151-1/+1
|
* This adds code which checks how big the return is and if it is to big ↵Platin212021-12-271-1/+14
| | | | returns the value via sret