Christoffer Lerno
890c4bc435
0.2.0. Build system improvements. Target changes x64-windows -> windows-x64, x64-darwin -> macos-x64. Improved mac support. LLD linking for Mac, Windows, Linux. Cross linking for Mac, Windows. Clean up string use. Fix of debug handling of multiple compilation units per module. MSVC CI
2022-04-26 13:20:33 +02:00
Christoffer Lerno
2802b2b96d
Ensure, $eval and $evaltype, @unreachable() replaces $unreachable. <Type>.sizeof
2022-03-04 15:49:17 +01:00
Christoffer Lerno
dce33ba5b5
Fixing #380 where const aggregates were copied by value.
2022-01-20 16:52:28 +01:00
Christoffer Lerno
4059d22315
Remove unnecessary load in LLVM statement lowering. Added more tests from Clang.
2022-01-17 17:08:28 +01:00
Christoffer Lerno
0f4a43717e
Fixes to the aarch64 ABI.
2022-01-15 01:37:43 +01:00
Christoffer Lerno
ea3b50d039
Codegen with better annotations on globals.
2022-01-10 13:58:15 +01:00
Christoffer Lerno
869aa7ed76
Do not store direct parameters that are only read.
2022-01-04 23:16:32 +01:00
Christoffer Lerno
a0be188902
Lexing updated with simpler code. Note: may have bugs.
2021-12-27 15:45:54 +01:00
Christoffer Lerno
680b077eb1
Flexible array member added, zero sized structs removed.
2021-12-14 19:00:33 +01:00
Christoffer Lerno
974cd0acc5
Rollback global.
2021-11-17 10:37:23 +01:00
Christoffer Lerno
b52b42d4da
Complete transition to fn. Introduce global/threadlocal
2021-11-16 17:46:44 +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
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
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
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
pitust
95836e98a2
Create {x86,x64}-elf targets, and make all targets more consistent ( #273 )
...
* Add triples for x86 and x64 targets
2021-08-16 18:38:56 +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
9f42ddb68d
Fix foreach body copy. Moved deref / addr into special functions. Cleaned up access. Remove .sizeof .alignof .qnameof .nameof, create $qnameof $nameof
2021-07-26 09:30:35 +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
dd8b850544
Support for "static" keyword.
2021-05-30 16:30:16 +02:00
Christoffer Lerno
97ac957cb7
"Public by default"
2021-05-30 16:30:16 +02:00
Christoffer Lerno
892c7e8874
Changed generic modules to internal templates.
2021-05-27 08:30:02 +02:00
Christoffer Lerno
1f676c135c
Removed func and rewrote typedefs.
2021-05-23 13:16:48 +02:00
Christoffer Lerno
460c0d04d7
Generic modules.
2021-05-12 17:25:59 +02:00
Christoffer Lerno
9b86b00834
Compilation is now done with each module compiled together.
2021-05-11 14:58:21 +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
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
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
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
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
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
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
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
75dd644e52
Corrected parsing for incremental arrays. Correctly handle failed declarations. More tests.
2020-07-25 21:54:32 +02:00
Christoffer Lerno
bd68380f06
Fixes to compile time integer conversions to to unsigned values, detecting negative values. Require cast on int -> pointer cast. Fixed check on array underflow. More tests.
2020-07-25 02:43:06 +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