aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_abi.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix WASM C ABI for raw unionsLaytan Laats2025-06-201-14/+56
|
* fix compat with earlier llvm versionsLaytan Laats2025-05-151-1/+1
|
* some ABI fixups and improvementsLaytan Laats2025-05-091-28/+14
| | | | | | | | | | | Started with trying to enable asan in the CI for MacOS, noticed it wasn't enabled on the `tests/internal` folder, it came up with a couple of issues with the abi/OdinLLVMBuildTransmute that this also solves. - Looking at clang output for arm64, we should be promoting `{ i64, i32 }` to `{ i64, i64 }` - after doing the previous point, I noticed this is not handled well in OdinLLVMBuildTransmute which was emitting loads and stores into the space of a value that was alignment, asan does not want this, looking at clang output again, a memcpy is the appropriate way of handling this. - Having done this we don't need the hacky "return is packed" set anymore in the amd64 sysv ABI anymore either
* Fix SysV ABI buggingerBill2025-04-151-9/+82
|
* Update to LLVM 20.1.0gingerBill2025-03-181-0/+4
|
* [ABI FIX] Fix 128-bit ABI issuesgingerBill2024-10-041-2/+2
|
* ABI BREAKING for SysV: Change how multiple return values are handled to be ↵gingerBill2024-09-301-6/+10
| | | | separate like all other ABIs
* Fix LLVM 18 ABI for 128-bit integers (because LLVM broke things)gingerBill2024-09-301-0/+5
|
* Fix 128-bit integer support for wasm targetsgingerBill2024-09-201-4/+5
|
* unify LB_ABI_INFO and LB_ABI_INFO_CTXLaytan Laats2024-08-201-18/+23
|
* add support for linux_riscv64 and freestanding_riscv64Laytan2024-08-201-9/+260
|
* 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
|