Christoffer Lerno
bf5683b41c
General cleanup, more native platform detection.
2022-02-18 09:54:12 +01:00
Christoffer Lerno
eed5b7db54
Correctly call x64 varargs.
2022-01-13 21:22:50 +01:00
Christoffer Lerno
041c096801
Refactored some of the llvm lowering. Work on TB. Disabled mimalloc due to issues with LLVM.
2022-01-09 21:23:37 +01:00
Christoffer Lerno
869aa7ed76
Do not store direct parameters that are only read.
2022-01-04 23:16:32 +01:00
Christoffer Lerno
1d5ff71b21
Rearchitecture contexts. Fixing macro resulution, hash arguments and defers.
2022-01-04 20:45:58 +01:00
Christoffer Lerno
8f2ae41ea5
Removed allocation of AbiType. Separate string arena.
2022-01-03 12:19:46 +01:00
Christoffer Lerno
06124ddb9f
Support variant type. Add fault alias to anyerr. Fix missing .len on string literals.
2021-12-05 22:34:21 +01:00
Christoffer Lerno
1bb9c2d249
Allow the compiler to be called multiple times (while leaking)
2021-12-02 22:50:38 +01:00
Christoffer Lerno
7595f2e17b
Fix of incorrect visibility. Use of LLVMInstructionRemoveFromParent.
2021-11-22 14:14:07 +01:00
Christoffer Lerno
05c9b7cb33
More explicit conversion and width changes to some field.
2021-11-21 23:37:54 +01:00
Christoffer Lerno
fb56d380cc
Builtins work. Math library exposes some builtins. Volatile store / load.
2021-11-13 12:31:45 +01:00
Christoffer Lerno
df0b1df1df
Better compatibility with LLVM < 13 ( #319 )
...
* Update wrapper to add type attribute on LLVM < 13
2021-11-09 22:53:13 +01:00
Christoffer Lerno
15f902579b
Removed virtual
2021-11-08 22:22:01 +01:00
Christoffer Lerno
4f09b0c351
Bitstruct implementation.
2021-11-05 11:59:30 +01:00
Christoffer Lerno
29e7af843a
Remove old try-catch. Top down promotion for binary etc. Prevent non-simple widening. Introducing wildcard failable. Move LLVM GEP usage. Regcall test and fix. Optimized slice assign.
2021-10-26 18:40:41 +02:00
Christoffer Lerno
9942be54dc
More optimized memclear. Added helper function on array gep.
2021-10-21 23:37:14 +02:00
Christoffer Lerno
8e93642535
LLVM 13 compatibility. Move Ubuntu CI to LLVM 12.
2021-10-19 18:32:31 +02:00
Christoffer Lerno
b4df56db54
Removed original_type, pure, removed bigint, added i128 type, lots of fixes to $Foo, reassigning ct type, catch/macro, "!", removed type inference.
2021-10-19 10:39:02 +02:00
Christoffer Lerno
e4c7dde30b
Fix of shadowing bug. Allow pointer and subarrays to be constant initialized. Compile time values may now pass around anything considered compile time constant. It's possible to index into an initializer list at compile time. (Some work still remains on this)
2021-09-18 01:13:42 +02:00
Christoffer Lerno
17dcb742c6
Fixed codegen for subarray global initializers. Adding fasta example.
2021-09-11 00:44:35 +02:00
Christoffer Lerno
49d13c23bb
Fix issue with grouped expressions in macros. Adding spectral norml code example.
2021-09-10 15:47:31 +02:00
Christoffer Lerno
bcda6d71c9
AST printout removed. Split initializer types. Const list functionality.
2021-09-10 15:47:23 +02:00
Christoffer Lerno
bb9e84d329
Make errors usable from other units. Order subarray elements correctly. Correct subarray -> pointer cast. Prevent unwrapping of catch in switch.
2021-08-31 18:12:30 +02:00
Christoffer Lerno
8731634f4d
Unified constants (enum, error types, typeid). Removed EXPR_MEMBER_ACCESS. Added if-catch-switch. switch-case can handle non constant values. Inlining removed on O0. Added subarray comparison allowing string cases.
2021-08-27 19:13:32 +02:00
Christoffer Lerno
f7803fd192
Add @naked attribute
2021-08-22 23:54:13 +02:00
Christoffer Lerno
f180a0d44a
Change anyerror { i64, i64 } -> i64. Cleaned up platform data and max tls / vector align. Initial work on bitstruct (just parsing). Updated try / catch semantics.
2021-08-18 17:31:09 +02:00
Christoffer Lerno
bc4ed2b213
Use assert functions on various platforms.
2021-08-16 16:43:53 +02:00
Christoffer Lerno
da76777ee4
Fixes to aarch64 float struct return. Missing byval and align on calls. This *breaks* try-catch.
2021-08-11 19:17:45 +02:00
Christoffer Lerno
490dd65664
Add attributes to call site. @inline, @noinline to calls #250
2021-08-03 12:02:36 +02:00
Christoffer Lerno
ec612eea67
Added some explicit casts. Added sret at call site.
2021-07-29 16:42:20 +02:00
Christoffer Lerno
efe4f8c745
Coerce lowering for the C ABI updated. Updated aarch64 fixes.
2021-07-29 03:16:07 +02:00
Christoffer Lerno
d578b249c2
Updated attributes and some cleaning of ABI info.
2021-07-17 18:09:31 +02:00
Christoffer Lerno
a5ce7c47ba
Adding "require" precondition. Corrects inferred arrays and fixes so that it uses [*] everywhere. Distict type will now allow methods to be added to it. Added $alignof and $sizeof.
2021-07-09 23:57:35 +02:00
Christoffer Lerno
dd8b850544
Support for "static" keyword.
2021-05-30 16:30:16 +02:00
Christoffer Lerno
3c4233f4d4
Fixes to failable return from expression and macro blocks. Allow division by float zero. Correct type promotion from compile time float.
2021-05-17 21:17:46 +02:00
Christoffer Lerno
9b86b00834
Compilation is now done with each module compiled together.
2021-05-11 14:58:21 +02:00
Christoffer Lerno
15a65d0c97
Allow use of pthreads to parallelize codegen.
2021-05-09 19:26:05 +02:00
Christoffer Lerno
3bd638bf77
Fixes to debug info in function pointer declarations. Incorrect x64 ABI code for structs by val. Change "Compiler" to "GlobalContext" storage of all types inside. Call debug symbol correct.
2021-05-02 16:42:28 +02:00
Christoffer Lerno
c6f671a6ca
A bit more global...
2021-04-29 22:44:00 +02:00
Christoffer Lerno
0e076234ca
Set stdlib library for testing and profit. Fix bugs when using void* to step. Make constants private linkage. Compare pointers using unsigned comparison without conversion. Use manual ptrdiff code. Fix issue returning "void!". Unify pointers when doing Foo* - void*. Allow comparing for example void* < Foo*
2021-04-29 03:12:25 +02:00
Christoffer Lerno
21d4ecf9b4
Splat/unsplat/typed varargs
2021-04-28 14:33:26 +02:00
Christoffer Lerno
4210f1ccb2
Some work on vararray. Fix span on post unary. Updated error recovery. Updated return analysis to handle void functions. "while" now disallows error prone next line statement. Working on auto linking. Failable load optimized. Optimization and corrections for call returns + documentation.
2021-04-05 23:34:40 +02:00
Christoffer Lerno
4f064e7da2
Initial checkin of docs parsing. char is now unsigned, and signed char is "ichar".
2021-01-29 18:46:17 +01:00
Christoffer Lerno
45c4f205bb
More correct alignment. Foreach added. Removed dynamic designated array initialization. Use 16 byte alignment on arrays >= 16 for x64
2021-01-27 00:14:16 +01:00
Christoffer Lerno
7fc12192f4
Added "distinct" types.
2021-01-24 21:10:57 +01:00
Christoffer Lerno
3a24fbfa6d
Moved examples around. Updated (and corrected) const initialization. Removed "in" keyword. Added "member" attribute domain. Many fixes in struct padding and alignment and tests. Fixed extern global.
2021-01-24 00:55:09 +01:00
Christoffer Lerno
564c93700e
Fixed bug that would intermittently arise from multiple contexts having the same pointer (should preferably be fixed in a different way later). Free all the arenas before codegen. Change "next" to "nextcase". Allow missing function parameters. Add "inline" structs.
2021-01-03 00:15:51 +01:00
Christoffer Lerno
781638d207
Bugfix to split arrays. Correctly generate const initializers on non globals for structs.
2020-12-27 22:13:45 +01:00
Christoffer Lerno
9a0b8aab0b
Small fixes
2020-12-22 23:12:32 +01:00
Christoffer Lerno
4da36dfed9
Optimized and improved aggregate initialization. Compound literal updated to Foo({ 1, 2 })-style. ".name = x" style initialization for named arguments and designated initializers. Added runtime messages on panics. subarrays convert implictly to pointers. len/len() functions. Fix taking slice of pointer. Vararg fixes
...
Consistent length typedef.
First stab at initializers.
Change compound literal to Foo({ 1, 2 }) style.
Fixed up some tests.
Optimize the zero struct codegen.
Optimize union empty initializer.
Fix issues with unions. Added alignment to globals. Added some union tests.
Use puts to emit error messages during runtime. Fixup of int[] -> int* style conversions.
Fix implicit conversion of int[3]* -> int*
Fix int[] size. Use () to invoke the length of a subarray. Fix taking a slice of a pointer. Limit the number of members in a struct.
Fixes to vararg using debug and cleanups to slices.
2020-12-22 21:55:52 +01:00