5f692debd8
core: Add PrimitiveStore into Unifier
...
This will be used during unification between a const generic variable
and a `Literal`.
2023-12-16 18:40:48 +08:00
a19f1065e3
meta: Refactor to use more let-else bindings
2023-12-12 16:31:14 +08:00
02933753ca
core: Apply clippy pedantic changes
2023-12-11 15:16:23 +08:00
a1f244834f
meta: Bringup some documentation
2023-12-11 15:16:23 +08:00
d304afd333
meta: Apply clippy suggested changes
2023-12-11 15:16:23 +08:00
5182453bd9
meta: Remove redundant path prefixes
2023-12-11 15:16:23 +08:00
0a84f7ac31
Add CodeGenerator::gen_block and refactor to use it
2023-11-04 13:42:44 +08:00
50230e61f3
core: Simplify loop condition check for list comprehension
2023-10-06 12:24:03 +08:00
a2fce49b26
core: Allocate exceptions at the beginning of function
...
Only one instance of exception is necessary, as exceptions will always
be initialized before being thrown.
2023-10-06 12:13:20 +08:00
1a54aaa1c0
core: Restore debug location when generating allocas
...
Debug location is lost when moving the builder cursor.
2023-10-06 11:11:50 +08:00
2a775d822e
core: Demote dead code into a stdout warning
2023-10-04 18:03:25 +08:00
2a38d5160e
meta: Respect opt flags when performing whole-module optimization
2023-09-28 19:58:54 +08:00
acdb1de6fe
meta: Improve documentation for various modified classes
2023-09-25 15:42:07 +08:00
31dcd2dde9
core: Use i8 for boolean variable allocation
...
In LLVM, i1 represents a 1-byte integer with a single valid bit; The
rest of the 7 upper bits are undefined. This causes problems when
using these variables in memory operations (e.g. memcpy/memmove as
needed by List slicing and assignment).
We fix this by treating all local boolean variables as i8 so that they
are well-defined for memory operations. Function ABIs will continue to
use i1, as memory operations cannot be directly performed on function
arguments or return types, instead they are always converted back into
local boolean variables (which are i8s anyways).
Fixes #315 .
2023-09-25 15:42:07 +08:00
fc93fc2f0e
core: Move bitcode verification error message into panic message
2023-09-22 17:16:29 +08:00
ab2360d7a0
core: Remove emit_llvm from CodeGenLLVMOptions
...
We instead output an LLVM bitcode file when the option is specified on
the command-line.
2023-09-22 17:16:29 +08:00
048fcb0a69
core: Switch to LLVM New Pass Manager
2023-09-18 11:35:15 +08:00
676d07657a
core: Add target field to CodeGenLLVMOptions
...
For specifying the target machine options when optimizing and linking.
This field is currently unused but will be required in a future
commit.
2023-09-18 09:46:24 +08:00
2482a1ef9b
core: Add CodeGenTargetMachineOptions
...
Needed in a future commit.
2023-09-18 09:41:49 +08:00
3993a5cf3f
core: Add LLVM options to WorkerRegistry
2023-09-12 10:57:05 +08:00
39724de598
core: Add CodeGenLLVMOptions
...
For specifying LLVM options during code generation.
2023-09-12 10:57:04 +08:00
e0de82993f
core: Preserve value of variable shadowed by for loop
...
Previously, the final value of the target expression would be one after
the last element of the loop, which does not match Python's behavior.
This commit fixes this problem while also preserving the last assigned
value of the loop beyond the loop, matching Python's behavior.
2023-09-06 20:09:36 +08:00
aead36f0fd
update dependencies
2023-03-08 15:19:09 +08:00
c1c45373a6
update dependencies
2023-01-12 19:31:03 +08:00
96b3a3bf5c
work around random segmentation fault ( #275 )
...
Reviewed-on: M-Labs/nac3#302
Co-authored-by: z78078 <cc@m-labs.hk>
Co-committed-by: z78078 <cc@m-labs.hk>
2022-07-04 18:06:36 +08:00
a18d095245
nac3core: codegen fix call parameter type error
2022-07-04 14:39:33 +08:00
c4ab2855e5
nac3core: pretty print codegen panic error
2022-05-30 04:09:21 +08:00
325ba0a408
nac3core: add debug info
2022-05-11 03:53:53 +08:00
7443c5ea0f
nac3core: add location information to codegen context
2022-04-05 18:21:46 +08:00
bf067e2481
nac3artiq: implement attribute writeback
...
We will only writeback attributes that are supported by the current RPC
implementation: primitives, tuple and lists of lists... of primitives.
2022-03-26 20:13:58 +08:00
80631fc92b
Option type support ( #224 )
...
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2022-03-26 15:09:15 +08:00
41d62f7325
nac3core/toplevel: fixed typevar substitution bug
2022-03-23 00:25:10 +08:00
2f85bb3837
nac3core: impl call attributes
...
sret for returning large structs, and byval for struct args in extern
function calls.
2022-03-09 22:09:36 +08:00
79c469301a
basic unsigned integer support
2022-03-08 13:34:02 +08:00
323d77a455
nac3artiq: improve error message for out of range error
2022-02-28 23:09:14 +08:00
e710b6c320
nac3core: fix exception final branch handling
...
According to https://github.com/m-labs/artiq/pull/1855
Passed the test cases from 1855.
Fixes #196 .
2022-02-25 17:42:47 +08:00
3ad25c8f07
nac3core: sort error messages for determinism
2022-02-22 14:33:43 +08:00
f97f93d92c
applied rustfmt and clippy auto fix
2022-02-21 18:27:46 +08:00
d9cb506f6a
nac3core: refactored for better error messages
2022-02-21 18:24:19 +08:00
7ea5a5f84d
nac3core: codegen refactoring
...
- No longer check if the statement will return. Instead, we check if
the current basic block is terminated, which is simpler and handles
exception/break/continue better.
- Use invoke statement when unwind is needed.
- Moved codegen for a block of statements into a separate function.
2022-02-12 22:13:59 +08:00
b267a656a8
nac3core: added exception type and fixed primitive representation
...
- Added `Exception` primitive type and some builtin exception types.
Note that all exception types share the same layout, and should
inherit from the base `Exception` type. There are some hacks in the
toplevel module for handling exception types, we should revisit and
fix them later.
- Added new primitive types to concrete type module, otherwise there
would be some weird type errors.
- Changed the representation of strings to CSlice<u8>, instead of
CString.
2022-02-12 22:13:59 +08:00
77608346b1
nac3core: handle tuple by value
2022-02-07 02:09:50 +08:00
4a65d82db5
introduce IRRT, implement power
...
based on code by Yijia
M-Labs/nac3#160
2022-01-09 00:57:50 +08:00
fa04768a77
redo "nac3core: fix #84 "
...
This reverts commit 86005da8e1
.
2021-12-27 22:56:26 +08:00
86005da8e1
Revert "nac3core: fix #84 "
...
This reverts commit 0902d8adf4
.
2021-12-26 08:35:27 +08:00
9e3f75255e
update inkwell. Closes #67
2021-12-25 22:17:06 +08:00
0902d8adf4
nac3core: fix #84
2021-12-23 15:26:48 +08:00
01d3249646
nac3core: add missing llvm range type
2021-12-09 01:16:05 +08:00
4b17511b4a
Merge branch 'master' into KernelInvariant
2021-11-27 21:29:27 +08:00
664e02cec4
nac3core: fix clippy warning
2021-11-22 14:55:39 +08:00