Commit Graph

195 Commits

Author SHA1 Message Date
flysand7
a3a3156ddd Fix-up inline asm for i386 syscalls emit 2023-10-30 02:03:35 +11:00
Morten Hauke Solvang
fb5bb1cd83 llvm: specify calling convention on call
Looks like the compiler only was specifying the calling convention on
function declarations, but not on function calls.
But LLVM seems to produce "bad" code when optimizing with level -O2
unless you specify the same calling convention on the call too.
2023-10-13 21:21:54 +02:00
gingerBill
23054138c2 Remove debug message 2023-09-29 12:12:14 +01:00
gingerBill
63f755554b Rename simd bitwise operations from intrinsics.simd_and to intrinsics.simd_bit_and etc 2023-09-28 16:42:08 +01:00
gingerBill
94d68c1f22 Fix ptr != ptr type cast problem in LLVM 17 2023-09-26 11:58:12 +01:00
gingerBill
963559676e Fix build times for -o:<string> in LLVM-17 2023-09-21 16:48:00 +01:00
gingerBill
4aa9d34b3d Add attributes for sanitize_memory and sanitize_thread 2023-09-21 11:20:13 +01:00
gingerBill
38d2a0ddb9 Add sanitize_address attribute to all normal packages 2023-09-21 11:13:26 +01:00
William Roe
5d8b78cb88 Fix read_cycle_counter intrinsic on arm64
Running this code with the hard-coded x9 register results in not 
returning the cycle count, but some other value.

This code (using $0 as the register), works on arm64 Linux and Darwin.
2023-08-07 21:18:56 +01:00
gingerBill
c91898a888 Remove #relative slices; Replace with #relative multi-pointers 2023-08-05 16:05:39 +01:00
gingerBill
afa8eb2d6f Fix #2699 2023-08-05 15:04:14 +01:00
gingerBill
65206fe33e Go through loads of TODOs 2023-08-01 11:39:04 +01:00
gingerBill
3072479c3c Generalize name mangling rule to have a singular definition for a name separator 2023-07-07 23:52:56 +01:00
gingerBill
3c0f1caa41 Fix #2606 2023-06-26 17:03:40 +01:00
gingerBill
ea76e09ea7 Fix empty varargs 2023-06-21 14:30:39 +01:00
gingerBill
c9fb078c0f Handle #c_vararg 2023-06-21 14:07:14 +01:00
gingerBill
1800030356 Correct deferred procedures 2023-06-21 14:01:46 +01:00
gingerBill
43ba2c6226 Fix constant parameter passing 2023-06-21 12:10:07 +01:00
gingerBill
09f366bec7 Correct purely named argument handling 2023-06-21 00:03:56 +01:00
gingerBill
7c57dde255 Start work on parapoly args for new and improved 2023-06-20 13:47:10 +01:00
gingerBill
9ec927b9e9 Try to get make everything work with parapoly 2023-06-20 00:30:29 +01:00
gingerBill
6568625dea Fix line error printing for error messages 2023-06-19 22:12:47 +01:00
gingerBill
2992ca5df1 Basic support for new procedure code (non-polymorphic, non-proc-group) 2023-06-15 01:37:55 +01:00
gingerBill
151396507e Merge pull request #1309 from Yawning/fix/freebsd-syscall
src: "Fix" the system call intrinsic for FreeBSD
2023-06-07 12:04:57 +01:00
gingerBill
ca6cef9a7d Fix wasm intrinsics; fix len for strings and slices 2023-06-06 23:11:42 +01:00
gingerBill
4a75a1e839 Merge branch 'master' into separate-int-word-sizes 2023-06-06 22:42:04 +01:00
gingerBill
8bf32ac697 Minor change to handling of propagation of errors with --- as a value 2023-05-22 12:53:29 +01:00
gingerBill
8693a045bb Revert "Change intrinsics.read_cycle_counter on ARM64"
This reverts commit b567679eb6.
2023-05-12 11:50:49 +01:00
gingerBill
b567679eb6 Change intrinsics.read_cycle_counter on ARM64 2023-05-12 11:34:01 +01:00
gingerBill
685f7d0fea Rename word_size to ptr_size internally to make it clearer 2023-04-20 12:18:13 +01:00
gingerBill
02a58c1247 Merge pull request #2464 from ap29600/simd_unaligned_load
Improve code generation for `intrinsics.unaligned_load/store` on `#simd` types
2023-04-20 10:33:32 +01:00
gingerBill
72a7b35513 Merge pull request #2450 from destroycomputers/master
Fix intrinsics.alloca code generation
2023-04-20 10:25:43 +01:00
Andrea Piseri
af63eff8d7 improve code generation for intrinsics.unaligned_load/store on #simd types
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.
2023-04-16 15:01:30 +02:00
gingerBill
dc55e88588 Add @(deferred_*_by_ptr=<proc>) 2023-04-15 16:04:04 +01:00
destroycomputers
b6f356c211 Fix intrinsics.alloca code generation
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
2023-04-11 01:11:01 +02:00
gingerBill
8dc70f797c Increase use of temporary_allocator() where possible 2023-03-16 15:16:17 +00:00
gingerBill
c1c7128634 Minimize severe memory usage by enforcing the heap_allocator() in places 2023-03-16 15:04:57 +00:00
gingerBill
233f47cc99 Fix #2329 2023-02-19 12:47:14 +00:00
gingerBill
c08809e29d Improve handling of passing constants to implicit immutable const ref parameters 2023-02-17 14:49:37 +00:00
gingerBill
8a16fd7699 Rename built-in procedure to expand_values 2023-02-07 15:39:39 +00:00
gingerBill
0324281634 Enforce dynamic map calls for the time being 2023-02-03 15:17:30 +00:00
gingerBill
de0a3e0ab9 Minor change to byval for readonly parameters 2023-02-03 15:07:44 +00:00
gingerBill
881ef69063 Use ~{} syntax 2023-01-23 10:14:21 +00:00
gingerBill
761a19689d Escape $ in asm 2023-01-23 10:09:22 +00:00
gingerBill
5d397804f7 Fix #2286 by printing an error correctly 2023-01-16 13:22:37 +00:00
gingerBill
68b2d4b9e2 Fix #2305 2023-01-16 11:41:58 +00:00
gingerBill
3b22c6620c Begin to generalize modules away from AstPackage * in -use-separate-modules 2023-01-12 17:13:25 +00:00
gingerBill
402a165b60 Correct missing procedures in other build modules which cause a linkage problem 2023-01-12 16:59:16 +00:00
gingerBill
252be0fb41 Make all maps use heap allocator implicitly 2023-01-03 11:59:52 +00:00
gingerBill
fa562ec5d6 Remove unneeded local_entity_map 2023-01-02 15:40:25 +00:00