gingerBill
2d4cb79baa
Fix SysV ABI bug
2025-04-15 11:26:41 +01:00
gingerBill
d209af5094
Update to LLVM 20.1.0
2025-03-18 15:39:18 +00:00
gingerBill
c305c9dd04
[ABI FIX] Fix 128-bit ABI issues
2024-10-04 11:16:33 +01:00
gingerBill
4b6410e225
ABI BREAKING for SysV: Change how multiple return values are handled to be separate like all other ABIs
2024-09-30 12:32:55 +01:00
gingerBill
b173fa1b9a
Fix LLVM 18 ABI for 128-bit integers (because LLVM broke things)
2024-09-30 11:45:24 +01:00
gingerBill
b116e8ff55
Fix 128-bit integer support for wasm targets
2024-09-20 01:29:39 +01:00
Laytan Laats
5b22bfa2b7
unify LB_ABI_INFO and LB_ABI_INFO_CTX
2024-08-20 14:07:47 +02:00
Laytan
ca6ef95b03
add support for linux_riscv64 and freestanding_riscv64
2024-08-20 14:06:40 +02:00
gingerBill
8650180ccc
Change Odin calling convention to not do a copy on byval for SysV
2024-07-14 12:59:55 +01:00
gingerBill
3dff83f3dc
Mock out #no_capture for future use
2024-07-14 12:39:30 +01:00
Laytan Laats
ef6a73c7ef
fix not setting cc before using it in abi computations
2024-07-01 01:30:44 +02:00
Laytan Laats
e3dde8caf8
make structs with multiple fields always return indirect in wasm c abi
2024-07-01 00:50:10 +02:00
Laytan Laats
9ad9236c3b
fix large ints amd64 sysv abi
...
Fixes #3707
2024-06-09 02:47:05 +02:00
Laytan Laats
e8c5bb4629
compiler: support returning 0 sized types in arm64 abi
2024-04-24 19:50:39 +02:00
Laytan Laats
133b45d843
fix amd64 sysv abi to pass asan everywhere
...
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
2024-04-04 23:45:23 +02:00
gingerBill
fbff2b4fd6
Merge pull request #3372 from laytan/fix-lbarg-ignore-logic
...
fix lbArg_Ignore logic
2024-04-04 18:09:12 +01:00
Laytan Laats
31407d9b1b
fix 128 bit int alignment on arm64
...
Fixes #2403
2024-04-04 18:39:41 +02:00
Laytan Laats
a7056f2b4f
fix lbArg_Ignore logic
...
Fixes #2698
2024-04-04 16:58:22 +02:00
gingerBill
308e9112f2
Disable packing on ARM64 and AMD64
2024-03-28 10:58:40 +00:00
gingerBill
6588fe35b3
Fix wasm abi
2024-03-26 16:47:29 +00:00
Laytan Laats
07a9969a41
darwin: arm64 abi fixes
...
Since commit b4fe9677a1 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.
2024-03-23 23:17:01 +01:00
gingerBill
c17adc98f5
Try doing <{i64, i32}> instead of [i64, i64] for ARM64 12-byte parameters
2024-03-20 17:39:00 +00:00
gingerBill
e804fbd891
Force packed structs in ABI parameters
2024-03-20 17:27:05 +00:00
gingerBill
b4fe9677a1
Change ARM64 ABI for integer-like parameters
2024-03-20 16:06:50 +00:00
gingerBill
1514d64964
Update ARM64 ABI return type
2024-03-20 11:12:43 +00:00
gingerBill
082324d7b9
Begin work on making the type info table be constantly initialized
2023-09-22 14:39:51 +01:00
gingerBill
295cfc905c
Fix typo in wasm64p32 abi
2023-06-07 00:53:31 +01:00
gingerBill
204924927a
Ignore non-variable parameters
2023-06-07 00:35:11 +01:00
gingerBill
f622a8393c
Change ABI for wasm64p32 on slices and structs
2023-06-07 00:30:14 +01:00
gingerBill
4a75a1e839
Merge branch 'master' into separate-int-word-sizes
2023-06-06 22:42:04 +01:00
gingerBill
6cbce9fdff
Merge pull request #2563 from charles-l/master
...
WASM: Use BasicC ABI convention for arguments that have `proc "c"`
2023-05-29 23:33:58 +01:00
charles
052051244f
WASM: Use BasicC ABI convention for arguments that have a proc "c" annotation
2023-05-29 18:20:25 -04:00
gingerBill
f3a463000d
Fix #2561 - ARM64 ABI bug for homogenous structs with more than 4 elements
2023-05-29 22:50:28 +01:00
gingerBill
685f7d0fea
Rename word_size to ptr_size internally to make it clearer
2023-04-20 12:18:13 +01:00
gingerBill
f5d9ca64f9
Begin work on new pseudo-architecture: wasm64p32
2023-04-20 12:02:32 +01:00
gingerBill
fe533fb809
Improve llreg integer type generation for SysV ABI
2023-03-19 01:29:53 +00:00
gingerBill
1f5bb99548
Improve SysV ABI for multiple return values that fit into a single register; Fixes #2384
2023-03-19 00:51:57 +00:00
gingerBill
b9a2426e57
Merge branch 'master' into compiler-improvements-2022-12
2022-12-21 23:59:31 +00:00
gingerBill
81037b3091
Change the order of the args and ret for Arm64 ABI
2022-12-21 23:56:34 +00:00
gingerBill
6cdec65ca1
gb_internal LLVM backend
2022-12-18 22:32:05 +00:00
gingerBill
d88b052d2d
Naïve optimization of named _split_ multiple return valued when defer is 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).
2022-11-25 23:57:55 +00:00
gingerBill
d3c65b6ba5
Make split multiple return logic only work for the native Odin calling conventions
2022-11-24 13:16:02 +00:00
gingerBill
90415e4a6e
Add split multiple return to different ABIs
2022-11-24 12:14:19 +00:00
gingerBill
7ab591667a
Basic support for new ABI experiment on Win64
2022-11-23 16:25:09 +00:00
gingerBill
83f3ae14d5
Improve SysV ABI LLVM IR generation for development purposes
2022-10-30 22:50:24 +00:00
gingerBill
419eab5059
Force call site attributes for procedures (relating to #2121 causing ABI issues for intrinsics.objc_send)
2022-10-10 21:48:56 +01:00
gingerBill
aeacf3a9d8
Correct max alignment handling throughout the llvm backend
2022-08-24 13:07:41 +01:00
gingerBill
812823cad8
Wrap all LLVMGetElementType uses
2022-08-09 21:17:32 +01:00
gingerBill
cb0a59bb2c
Eliminate use of LLVMGetElementType for pointers
2022-08-09 15:36:18 +01:00
gingerBill
9614ca92f0
Fix #1834
2022-07-24 22:46:00 +01:00