Commit graph

375 commits

Author SHA1 Message Date
Ayaz Hafiz
3a960e7809
Properly recast nested recursion pointers to their expanded layouts as needed
When we load a structure with a nested recursive pointer, the pointer
may be loaded opaquely. We need to refine it to the concrete type wanted
by the layout.

This conversion can be removed after we upgrade to LLVM 15.

Closes #5162
2023-03-22 08:21:08 -05:00
Folkert
fba66c03b7
temp fix to get this passing 2023-03-05 17:37:03 +01:00
Folkert
853c0387dc
cleanup 2023-03-05 17:33:48 +01:00
Folkert
769a4c415b
update remaining cli tests 2023-03-05 16:57:51 +01:00
Folkert
fa05c49693
correct the name of the size() exposed function 2023-02-26 14:23:10 +01:00
Folkert
1bf2cc3b8c
cleanup 2023-02-25 16:23:40 +01:00
Folkert
a3e759cc3c
fix generation of C signature when roc returns c_void 2023-02-25 16:05:09 +01:00
Folkert
35980e50b8
fix function getters 2023-02-25 15:47:20 +01:00
Folkert
033618f3f4
fixes to get rocLovesRust to work 2023-02-22 21:17:50 +01:00
Folkert
0d4135c57a
Merge remote-tracking branch 'origin/main' into glue-getters-rtfeldman 2023-02-22 21:11:39 +01:00
Folkert
68524ef07e
generate callers based on layout traversal 2023-02-20 22:05:35 +01:00
Folkert
edf557e480
fix for when C has to return an empty tag union 2023-02-15 15:34:02 +01:00
Folkert
178e80fa9a
fix for when C has to return an empty tag union 2023-02-15 15:30:26 +01:00
Folkert
b6bae82913
hello world works 2023-02-14 22:11:23 +01:00
Folkert
6c15284a8f
more wip; now we just need to generate the exposed procs at the right time 2023-02-08 22:56:38 +01:00
Folkert
0072192897
prepare for llvm 15 2023-01-28 14:51:47 +01:00
Ayaz Hafiz
f451ba49f1
Toss out when-recursive from llvm backend 2023-01-25 12:48:06 -06:00
Ayaz Hafiz
8750127111
Begin support for looping-back recursive pointers to their source layouts 2023-01-23 14:37:48 -06:00
Folkert
bb44063419
Merge remote-tracking branch 'origin/main' into glue-getters-rtfeldman 2023-01-18 20:06:26 +01:00
Folkert de Vries
e3a213c0dc
Merge pull request #4882 from roc-lang/weakening-3
Begin weakening let-bindings to non-function, non-number expressions
2023-01-14 15:32:27 +01:00
Ayaz Hafiz
5eda760f1c
Fix bug in loading host-exposed list pointers 2023-01-12 10:20:11 -06:00
Folkert
6ead631c82
generate the RocFunction struct 2023-01-11 23:05:32 +01:00
Ayaz Hafiz
03ece6e274
Update llvm backend 2023-01-11 14:39:10 -06:00
Folkert
98ba49baf6
WIP 2023-01-08 14:49:13 +01:00
Folkert
1c1112ec35
Merge remote-tracking branch 'origin/main' into glue-getters-rtfeldman 2023-01-04 20:45:01 +01:00
Ayaz Hafiz
50826d1a83
Inline interners into the layout interner module
I realized that we'll need to make the layout interner more complicated
to support things like recursive pointers pointing to their parents and
to support lambda set layout caching. Since the layout interner is the
only user of intern crate right now anyway, just inline the whole thing.
2023-01-03 14:19:39 -06:00
Ayaz Hafiz
972046445b
Lift Niche from just captures-niche to generic niche 2022-12-29 18:43:26 -06:00
Ayaz Hafiz
14ea3518dc
Unnecessary reference 2022-12-29 11:42:51 -06:00
Ayaz Hafiz
0011636ba9
Allow all the arguments 2022-12-29 11:42:24 -06:00
Ayaz Hafiz
759f8d86af
Fix lifetime errors due to interner
In the llvm backend, there are the lifetimes `'a` (lifetime of the
global arena) and `'ctx` (lifetime of constructed LLVM values). `'a`
lives longer than `'ctx`, but the compiler didn't enforce this until
the layout interner was introduced, for some reason. We have to make
sure that containers of lifetime `'a` have no `'ctx` references.
2022-12-29 11:38:34 -06:00
Ayaz Hafiz
512a1721ae
Push mutable layout interner through llvm backend 2022-12-29 10:04:43 -06:00
Folkert
f76df8a356
make dbg transparent to refcounting 2022-12-22 01:03:03 +01:00
Folkert
d765cae620
remove get_element_type in some C abi functions 2022-12-20 16:09:59 +01:00
Folkert
9bf8d65170
upgrade most build_load usages 2022-12-20 00:11:45 +01:00
Folkert
f2d0953e0a
upgrade build_in_bounds_gep 2022-12-19 20:21:27 +01:00
Folkert
bc9c813fec
already do some of the llvm struct_gep conversion work 2022-12-19 19:57:31 +01:00
Folkert
0f46ea83d0
standardize WhenRecursive 2022-12-19 19:05:25 +01:00
Folkert
3720c38e2b
convert to pointer_cast where we can 2022-12-17 23:21:19 +01:00
Folkert de Vries
f550f049db
Merge pull request #4768 from roc-lang/expects-store-specialized-variable
Support using dbg/expect in polymorphic functions
2022-12-16 00:10:40 +01:00
Ayaz Hafiz
fe90355265
Store specialized variables of expect lookups in expect frames 2022-12-14 17:00:36 -06:00
Ayaz Hafiz
16209ef866
Store specialized lookup variables in expects 2022-12-14 16:59:05 -06:00
Folkert
d287eafa3a
remove F128 2022-12-14 23:28:38 +01:00
Ayaz Hafiz
1962f2045e
Remove layouts from the mono AST for expects
This actually isn't needed, because the backends must lookup the layout
from the environment anyway. So it's enough to lookup the symbol and
find its layout, there is no need to additionally store it.
2022-12-14 14:10:02 -06:00
Folkert
a72556b927
refactor entry point 2022-12-09 15:10:25 +01:00
Folkert
95fe9cbccd
pass the pointer to shared memory around, instead of using a global 2022-12-08 23:22:26 +01:00
Ayaz Hafiz
3685ad2ed2
Ensure that llvm gen_ wrappers account different recursive pointers
Closes #2551
2022-12-02 13:38:32 -06:00
Ayaz Hafiz
803d7e30e3
Eliminate Stmt::RuntimeError in favor of crash 2022-11-24 14:46:53 -06:00
Ayaz Hafiz
f3a03ef6eb
Pass roc_panic msg by ref on 32 bit plats 2022-11-24 14:46:53 -06:00
Ayaz Hafiz
12d013c062
Remove unneeded param 2022-11-24 14:46:53 -06:00
Ayaz Hafiz
4202352b19
Update panic tags of builtins 2022-11-24 14:46:52 -06:00