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
76e4eea4a8
Fix missing support for array[] as return types. Fix bug with &&-folding. Added tests.
2021-10-20 11:57:41 +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
ae371d105d
Add vector ++ -- ! ~ - | & ^ ops and allow .c3t to be compiled.
2021-09-30 13:54:51 +02:00
Christoffer Lerno
020eba720b
Added initial (incomplete) support for vectors.
2021-09-28 14:19:28 +02:00
Christoffer Lerno
bcda6d71c9
AST printout removed. Split initializer types. Const list functionality.
2021-09-10 15:47:23 +02:00
Christoffer Lerno
63cff727b2
Removed use of ?:
2021-08-31 22:24:30 +02:00
Christoffer Lerno
69d9775876
Removed define for declaring ct vars and replaced it with var for declarations. Updated error messages. Added $defined.
2021-08-31 12:44:18 +02:00
Christoffer Lerno
6e386538dc
Fixed bool->bool casts. Fixed ternary with boolean "legs". Removed some superfluous code.
2021-08-28 13:39:15 +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
1751e7ece5
Remove old try/catch. Remove incorrect flattening. Basic asm. Start work on if-catch-switch.
2021-08-24 12:41:20 +02:00
Christoffer Lerno
64f20da080
Better handling of void/void*, unified local/global var analysis. Native base64 / hex data array (needs more checks)
2021-08-20 10:29:17 +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
afeb555e2f
Improved support for vectors that allows correct usage in C ABI.
...
To free keywords, half -> float16, i128 -> int128, u128 -> uint128, quad -> float128.
2021-08-10 22:45:53 +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
ce6e59483f
Unified function and macro call analysis.
2021-07-28 17:20:19 +02:00
Christoffer Lerno
f64c35214e
Change error -> anyerr / errtype
2021-07-18 14:11:39 +02:00
Christoffer Lerno
45a3c8ae50
Fix alignment on all indirect. Fixed incorrect preferred alignment. Added mingw regression tests.
2021-07-16 13:05:56 +02:00
Christoffer Lerno
a18f668fc4
Updated error messages on failed binary arithmetic promotion.
2021-07-14 23:48:43 +02:00
Christoffer Lerno
c0d8f7ba90
Incorrect error message when trying to subtract incompatible types from each other. Also, allowing ulong - int should just work. Issue #222 .
2021-07-13 23:26:08 +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
038ed7f9d5
Macro methods added.
2021-06-26 17:42:45 +02:00
Christoffer Lerno
9a202e3c3d
Remove predefined c type aliases.
2021-06-24 01:11:57 +02:00
Christoffer Lerno
5a6cdd25ef
Introduced ${...} syntax for constants. Fixed issue where constants were not correctly handled for macros. /* */ comments are nesting. Added LINE, FUNC, FILE defines. Corrected shallow resolution of subarrays. Added int defines. Removed Vararray.
2021-06-24 00:59:25 +02:00
Christoffer Lerno
cf58da4a3c
Remove the complex type.
2021-05-30 21:44:44 +02:00
Christoffer Lerno
892c7e8874
Changed generic modules to internal templates.
2021-05-27 08:30:02 +02:00
Christoffer Lerno
b99f8d644b
Beginning support for variable sized arrays at end of struct.
2021-05-24 17:57:00 +02:00
Christoffer Lerno
97f7d1288e
Function type updated inside of type code.
2021-05-24 00:53:35 +02:00
Christoffer Lerno
dbb067a005
Cleanup.
2021-05-23 21:32:32 +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
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
3a465a99b2
Removing warning due to issue with LLVM headers.
2021-04-29 18:17:55 +02:00
Christoffer Lerno
fd08c5c980
Revert "Remove suppressed warning."
2021-04-29 17:23:46 +02:00
Christoffer Lerno
c4585f9bbd
Remove suppressed warning.
2021-04-29 17:18:50 +02:00
Christoffer Lerno
01f7343945
Parsing of interface. Fix to unpacking arraypointers. Fix accidental unsplat.
2021-04-29 03:12:25 +02:00
Christoffer Lerno
954a90dae3
Fix of arch target. Experimental linker support.
2021-04-09 18:47:41 +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
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
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
49006217e8
Added WASM ABI
2020-11-28 20:48:47 +01:00
Christoffer Lerno
84eea12efe
Initial work on RISCV - completely untested.
2020-11-28 19:02:55 +01:00
Christoffer Lerno
669fd8c9a9
Incorrect index on sret. Explicit fallthrough annotation on type_is_homogenous_base_type.
2020-11-24 11:46:39 +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