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
Christoffer Lerno
6a5a0f2b94
Moved ABI lowering from codegen to semantic analysis. Fixes for failables in the ABI and the codegen.
2020-12-04 19:19:57 +01:00
Christoffer Lerno
0b00fe6988
Added round/ceil/trunc/sqrt intrinsics.
2020-12-03 15:53:42 +01:00
Christoffer Lerno
84eea12efe
Initial work on RISCV - completely untested.
2020-11-28 19:02:55 +01:00
Christoffer Lerno
31e9ec3d52
Optimize load of return & some parameter types. Fix issue with non-exapanding coerce. Add support for specific arch_os in tests.
2020-11-24 20:31:18 +01:00
Christoffer Lerno
3c15e495dd
Add macro arguments &foo $foo #foo.
...
C ABI compatibility aarch64, win64, x86, x64
Added debug info
2020-11-22 22:16:19 +01:00
Christoffer Lerno
4222f2731e
&&temp operator. Macro evaluation.
2020-10-16 18:11:30 +02:00
Christoffer Lerno
fb937156fe
Work on debug + fix of failable bug.
2020-09-02 10:18:30 +02:00
Christoffer Lerno
009ccfd730
Adding assert.
2020-08-01 20:53:47 +02:00
Christoffer Lerno
ce68bda86c
Corrected ptr->bool conversion. Avoid checking function body if function is invalid. Switch defer test cases. Slices with test cases.
2020-07-28 17:37:48 +02:00
Christoffer Lerno
7b7abf5d4a
Fixes to defer, allowing break in defer (instead of continue). Fixed bug in PTR->BOOL cast. Extended test system to support multi files and codegen.
2020-07-27 11:40:45 +02:00
Christoffer Lerno
b4c661eaad
Pre lexing and mmap allocation together with exact exits.
2020-07-15 15:42:54 +02:00
Christoffer Lerno
dc86c21210
New failable based error handling. Labelled break/continue/next.
2020-07-09 13:07:08 +02:00
Christoffer Lerno
b2bfd87a06
Started work on ranges. Added weak/noreturn/inline/cname/stdcall/section/alignment attributes. Some work on subarrays. Fixes to throws. Function pointers work.
2020-05-20 14:22:22 +02:00
Christoffer Lerno
f62a094f75
Simple globals now work correctly, but structs don't.
2020-05-05 16:57:11 +02:00
Christoffer Lerno
373001fd12
Error -> errset (temporarily). Catch / throw now works, but it will not yet correctly handle defer.
2020-05-03 02:04:13 +02:00
Christoffer Lerno
78aa49cc0e
Work on getting typeof up and running. Try-else now works.
2020-04-22 20:19:55 +02:00
Christoffer Lerno
6da6b0f571
Compound literal works properly.
2020-04-18 14:29:17 +02:00
Christoffer Lerno
6117a1be7c
Lots of fixes and optimizations to structs. Now there are no unnecessary intermediary types.
2020-04-18 14:29:17 +02:00
Christoffer Lerno
1d73338fb0
Order of function resolution is different. Function prototypes resolved first. Same with LLVM gen. Designated initializer and anonymous fields fixed mostly.
2020-04-12 21:35:25 +02:00
Christoffer Lerno
f53b378b0c
Adding trap on debug builds.
2020-04-09 13:47:23 +02:00
Christoffer Lerno
f4b4bab947
Restructuring the parser & split parser into parts. Parsing more constructs now, like enums with extended syntax. Corrected handling of function block to be an expression. Added expression block codegen.
2020-03-29 17:40:42 +02:00
Christoffer Lerno
ebbea2ac42
Lookahead cleanup. Start work on throws. Fix try expressions. Beginning work on initializer. Some fixes on LLVM types. Moving more target info into C3. Moving alignment into types Introducing a meta type (incomplete). Start work on macros. Splitting '@' from macro name.
2020-03-29 17:39:33 +02:00
Christoffer Lerno
b437cb545f
Improved defer functionality, handling goto, conditional defers, next, break, continue, fixed bugs with module path detection. Improved switch parsing. Better errors on unknown module.
2020-01-28 23:41:10 +01:00
Christoffer Lerno
7b4ed09517
Introduced a Lexer context, comment parsing now actually works properly. Token use in decl/ast/expr is moved to SourceRange instead. And the SourceRange used start/end, which is better than using start + len for many uses.
2020-01-25 17:56:17 +01:00