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
29730345b0
Moving llvm-emit / debug output separately. Started work on C headers. Started work getting packed unions and structs to work correctly. Also added some unfinished PIC code.
2020-11-27 23:43:39 +01:00
Christoffer Lerno
1057432913
Add CMake find order for multiple LLVM installs.
2020-11-23 20:04:15 +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
b45c866071
Adding $switch and rearranging parser somewhat. Removing the need for "store" of context.
2020-08-02 13:53:17 +02:00
Christoffer Lerno
21357c4fc1
Fix crash when having return value errors. Updated docs. Find and load builtin.c3 locate std lib.
2020-07-31 16:29:52 +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
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
8e80091da4
Create CI
2020-04-22 16:07:42 +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
ded367399e
Some work towards automated testing. Fixes to bigint. Removed implicit assign cast. Updated cast rules. Fixes *%=. Simplified case. Unified shift code. Major casts rework. Fixed error handling of pointer + integer adds. Removed &&= and ||=. Unified more expression handling and fixed bugs in sematic analysis on expressions.
2020-04-02 23:13:04 +02:00
Christoffer Lerno
b1aa64cdcc
TypeInfo gained a span. Hex lexing fixed. Basic block returns fixed. Removal of Ast.exit. Enum parameter list parses. Enum analysis improved. Exit deduction improved. Switch over a bool allowed. Switch analysis improved. Added -% operator. Updated implicit casts. Use of bigint. Signed-unsigned comparisons.
2020-03-29 17:41:31 +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
ae683d2811
Removed explicit targets from make file.
2020-03-27 09:32:02 +01:00
James Martin
a6235d2cc4
Added AVR components to LLVM_LINK_COMPONENTS to fix the build on Linux.
...
`-Werror` must still be removed from `target_compile_options` to build with GCC.
Presumably the build would work without any further modifications with Clang, but I have not tested it.
2020-03-26 15:42:48 -07:00
Christoffer Lerno
cdc1bfe267
Start using UnaryOp/PostUnaryOp ++/-- now works post/pre and also on pointers. Fix ++/-- on any number. Added examples. c3c now compiles files by default. Extended symbol resolution. Addition of 'extern'. Multi-level paths.
2020-01-16 21:28:13 +01:00
Christoffer Lerno
946ca18cee
Support for subscripts. Added helloworld.
2019-12-11 17:22:48 +01:00
Christoffer Lerno
aee3f99ea7
Added some codegen & .o generation and (hopefully correct) optimization. Hacked strings in together with i++/i--. Fixed up parsing of strings supporting \u \U \x => UTF8
2019-11-27 16:16:44 +01:00
Christoffer Lerno
990918b609
LLVM Codegen
2019-11-20 17:09:25 +01:00
Christoffer Lerno
5f00d4c2bc
More parsing, start working on packages.
2019-09-16 12:34:23 +02:00
Christoffer Lerno
0dba2b8569
Partial codegen
2019-09-04 12:51:01 +02:00
Christoffer Lerno
2eb91083a6
Refactor type handling, some extremely simple codegen, but mostly work on casts (not finished)
2019-09-01 01:58:21 +02:00
Christoffer Lerno
ebce81ad51
Parses most of C3.
2019-08-25 08:40:07 +02:00
Christoffer Lerno
386ef35f36
Started a bit on parsing. Picking pieces from Titanos and trying to do things better.
2019-07-31 23:19:45 +02:00
Christoffer Lerno
8f611a400d
Lexing up and running.
2019-07-27 17:20:31 +02:00
Christoffer Lerno
7439dccc53
Add a little testing and keyword parsing x2
2019-07-25 18:57:35 +02:00
Christoffer Lerno
bd7c743e93
Updated project structure. Updated README.
2019-07-15 16:38:31 +02:00
Christoffer Lerno
88b2dc547e
Project setup
2019-07-13 22:46:39 +02:00
Christoffer Lerno
1d02585c7a
Initial commit
2019-07-12 19:07:09 +02:00