David Mak
77de24ef74
core: Use BTreeMap for type variable mapping
...
There have been multiple instances where I had the need to iterate over
type variables, only to discover that the traversal order is arbitrary.
This commit fixes that by adding SortedMapping, which utilizes BTreeMap
internally to guarantee a traversal order. All instances of VarMap are
now refactored to use this to ensure that type variables are iterated in
the order of its variable ID, which should be monotonically incremented
by the unifier.
2024-03-04 23:56:04 +08:00
David Mak
12c0eed0a3
core: Fix compilation of tests
2024-01-17 09:49:49 +08:00
David Mak
32746c37be
core: Refactor to return errors by HashSet
2023-12-12 15:41:59 +08:00
David Mak
bd3d67f3d6
artiq: Apply clippy pedantic changes
2023-12-11 15:16:23 +08:00
David Mak
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
David Mak
3e430b9b40
core: Fix missing changes for codegen tests
...
Apparently the changes were dropped after rebasing.
2023-09-22 17:16:21 +08:00
David Mak
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
David Mak
3993a5cf3f
core: Add LLVM options to WorkerRegistry
2023-09-12 10:57:05 +08:00
ychenfo
a022005183
nac3core: fix broken tests
2022-05-11 03:53:53 +08:00
ychenfo
1f5826d352
fix ternary if ( #250 )
...
Use store and load to handle if expression as the blocks might be changed when generating sub-expressions.
Reviewed-on: M-Labs/nac3#250
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2022-03-29 06:54:00 +08:00
ychenfo
26a4834254
fix warnings
2022-03-26 18:52:08 +08:00
pca006132
63b0f29728
Fix broken tests
2022-03-05 00:27:51 +08:00
pca006132
f97f93d92c
applied rustfmt and clippy auto fix
2022-02-21 18:27:46 +08:00
pca006132
d9cb506f6a
nac3core: refactored for better error messages
2022-02-21 18:24:19 +08:00
pca006132
352831b2ca
nac3core: removed legacy location definition
2022-02-13 22:39:24 +08:00
pca006132
b18626b149
Fix compilation and test failures
2022-02-12 22:50:32 +08:00
ychenfo
ae8f82ccb0
nac3core: fix broken tests
2022-01-14 16:28:37 +08:00
ychenfo
9b3b47ce50
fix broken tests
2021-12-28 01:38:16 +08:00
pca006132
fa04768a77
redo "nac3core: fix #84 "
...
This reverts commit 86005da8e1
.
2021-12-27 22:56:26 +08:00
Sebastien Bourdeauducq
86005da8e1
Revert "nac3core: fix #84 "
...
This reverts commit 0902d8adf4
.
2021-12-26 08:35:27 +08:00
pca006132
0902d8adf4
nac3core: fix #84
2021-12-23 15:26:48 +08:00
pca006132
4b17511b4a
Merge branch 'master' into KernelInvariant
2021-11-27 21:29:27 +08:00
ychenfo
4587088835
Constant Default Parameter Support ( #98 )
...
Add support for constant default parameter
Reviewed-on: M-Labs/nac3#98
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2021-11-23 07:32:09 +08:00
pca006132
ba08deada6
nac3core: refactor codegen
2021-11-20 19:50:25 +08:00
Sebastien Bourdeauducq
bf7e2c295a
integrate nac3parser
2021-11-03 17:11:00 +08:00
pca006132
cc83bbc63a
nac3core/codegen: fix broken test
2021-10-17 13:07:45 +08:00
pca006132
279f47f633
nac3core/codegen: avoid sending unifiers
...
Previously, we have to copy types from one unification table to another,
and make the table sendable. This requires cloning (processing) the
whole table 3 times per function call which is not efficient and uses
more memory than required when the unification table is large.
We now use a concrete type table to only copy the type we need. This
reduces the overhead as we only need to process the unification table
for once (when we do the function codegen), and reduces memory usage by
a bit (but not noticeable when the unification table is small, i.e. the
types are simple).
2021-10-17 13:02:18 +08:00
pca006132
1f5bea2448
nac3core/codegen: refactor according to #23
2021-10-16 22:17:36 +08:00
pca006132
c4259d14d1
fixed some clippy warnings
2021-10-16 18:08:13 +08:00
pca006132
11144301ca
nac3artiq: added simple host value support
2021-10-06 16:07:42 +08:00
pca006132
f0fdfe42cb
nac3core: better impl of #24
2021-09-30 17:07:48 +08:00
pca006132
d4ed76d76e
nac3core: implementing #24
2021-09-26 22:17:09 +08:00
pca006132
693ac7d336
nac3core/toplevel: added personality symbol config
2021-09-25 21:44:00 +08:00
pca006132
7d48883583
fixed tests
2021-09-22 18:04:06 +08:00
pca006132
084efe92af
nac3core: use string interning
2021-09-22 18:04:06 +08:00
ychenfo
35a94a8fc0
nac3core: fix broken test
2021-09-20 01:58:07 +08:00
ychenfo
2b74895b71
nac3standalone, nac3core: can use top level composer to compile and run mandelbrot
2021-09-19 16:19:49 +08:00
ychenfo
2ac3f9a176
nac3core: separate top level compoer to a new file
2021-09-12 05:10:10 +08:00
ychenfo
1300b5ebdd
nac3core: clean up and format
2021-09-08 19:45:36 +08:00
ychenfo
87f25e1c5d
nac3core: remove mutex on dyn symbol resolve
2021-09-08 19:27:32 +08:00
ychenfo
54b4572c5f
nac3core: allow interior mutability to dyn symbolresolver, add add_id_def to symbolresolver trait, remove primitive from top level def list
2021-09-06 19:23:04 +08:00
pca006132
22a728833d
nac3core: fixed broken test
2021-08-27 16:50:53 +08:00
pca006132
8c1c7fcfc3
nac3core: fixed broken tests
2021-08-27 13:04:51 +08:00
pca006132
a24e204824
type_inferencer: check defined identifiers during inference
2021-08-27 11:13:43 +08:00
ychenfo
1a21fb1072
fix codegen test about top level composer return type change
2021-08-25 18:00:01 +08:00
pca006132
e2b11c3fee
codegen: fixed deadlock and added call test
2021-08-25 17:44:01 +08:00
pca006132
0608fd9659
fixed test and nac3standalone
2021-08-25 15:30:36 +08:00
ychenfo
32773c14e0
move top level related things to a separate module
2021-08-24 17:19:17 +08:00
pca006132
3279f7a776
codegen for simple function call, and various fixes
2021-08-19 15:30:15 +08:00
pca006132
6e424a6a3e
fixed codegen test
2021-08-19 11:32:22 +08:00