Christoffer Lerno
07595df412
Change cast and int rules: constant folding always starts. Promotion using left side on all operands to bit width. Implicit narrowing to max size on right hand side.
2021-03-17 18:25:00 +01:00
Christoffer Lerno
1d50beb330
Work on constant string and inferred array sizes.
2021-02-03 23:01:37 +01: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
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
ac89023a2d
Adding __free and __alloc as intrinsics (but maybe revisit that idea).
2020-12-02 22:02:36 +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
77ccfc1f7c
Added CT_SWITCH parsing in top level. Nil changed to null. Parsing more in line with grammar. Parse type as expressions. Zero init by default for locals. Corrected bool/fp conversion. Add memcpy pass to fix issue with value load/stores.
2020-09-21 11:38:12 +02:00
Christoffer Lerno
fb937156fe
Work on debug + fix of failable bug.
2020-09-02 10:18:30 +02:00
Christoffer Lerno
9709cb61a4
Struct constants stored in globals.
2020-08-09 19:01:46 +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
90ab4f07b9
Corrected ptr->bool conversion. Avoid checking function body if function is invalid. Switch defer 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
34c7df9ee1
Fixed multi line error reporting for tokens. Handle infinite empty for loops. Changed cast syntax to "cast(foo as Foo)". Completed enum casts. Added more tests.
2020-07-25 21:54:32 +02:00
Christoffer Lerno
ed01616f1e
Changed how structs/unions are parsed so that recovery becomes more robust. Allow for more complex error data. Fixed recursive structs/unions. Corrected prefix precedence rules. Begin work on checking initializer constant-ness. Fixed error on failed arithmetic promotion. Added checks on constant overflow of sub/add/mult. Allow "current_module_name::x" to refer to globals. Added many tests.
2020-07-23 18:04:18 +02:00
Christoffer Lerno
f45d6ef84b
Fix, separate out the function pass from the decl pass. Diagnose non-visible symbols as not visible rather than missing. Fix crash when module identifier is incorrect. !! operator added. New character literal parsing. Added simple test framework.
2020-07-21 23:43:28 +02:00
Christoffer Lerno
b4c661eaad
Pre lexing and mmap allocation together with exact exits.
2020-07-15 15:42:54 +02:00
Christoffer Lerno
c976dc3749
Removed fallthrough.
2020-07-09 16:13:25 +02:00
Christoffer Lerno
dc86c21210
New failable based error handling. Labelled break/continue/next.
2020-07-09 13:07:08 +02:00
Christoffer Lerno
50c36789bf
Fixes bug handling chained && ||. Work towards more macro functionality. Correctly emit stdcall. Corrected character parsing in escaped string entries.
2020-06-11 15:45:58 +02:00
Christoffer Lerno
3bdfe3e05e
Refactored structs.
2020-06-01 21:00:21 +02:00
Christoffer Lerno
1b69423f45
Method functions now work.
2020-05-27 12:26:38 +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
dbce72146f
More AST dumps fixed. Throw simplified by removing "DECL_THROW", which also unearthed a bug.
2020-05-07 11:46:16 +02:00
Christoffer Lerno
89ce6064e1
Started work on cleaning up dumping the AST. Lots still to do but... Split try expr further and fixed emit of statement.
2020-05-06 22:23:53 +02:00
Christoffer Lerno
93bd0fb337
Jumping on else added.
2020-05-05 11:28:49 +02:00
Christoffer Lerno
d23c271289
Throw/catch works correctly with defer.
2020-05-03 16:45:16 +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
8e80091da4
Create CI
2020-04-22 16:07:42 +02:00
Christoffer Lerno
982a9e7b58
Minor cleanup
2020-04-18 22:23:42 +02:00
Christoffer Lerno
6da6b0f571
Compound literal works properly.
2020-04-18 14:29:17 +02:00
Christoffer Lerno
2c573c8a15
Fixed accidental uses of global context.
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
7392b453a3
Work on unions and anonymous structs/unions.
2020-04-09 13:49:51 +02:00
Christoffer Lerno
f53b378b0c
Adding trap on debug builds.
2020-04-09 13:47:23 +02:00
Christoffer Lerno
bb806716e4
Unions and structs, including setting them should now work.
2020-04-08 21:59:10 +02:00
Christoffer Lerno
96c8c77e89
Work on unions and anonymous structs/unions.
2020-04-06 23:48:51 +02:00
Christoffer Lerno
400c38b95b
Use correct sizes and alignments. Fix designated initializers and literals. Added todo
2020-04-06 13:45:58 +02:00
Christoffer Lerno
60c60a3205
Enum fixes
2020-04-05 11:31:05 +02:00