rvcas
0d187fb53c
feat(wasm): use mono layout to figure out the correct intrinsic
2021-12-28 21:38:43 -05:00
rvcas
c4e6349714
fix(bitcode): leave a comment explaining why u64 is not used
2021-12-28 13:07:05 -05:00
Brian Carroll
37de499248
Reorganise code gen helper in roc_mono
2021-12-28 11:03:33 +00:00
rvcas
4298022a89
Merge branch 'trunk' into str_to_num
2021-12-27 19:11:55 -05:00
rvcas
cd42f034b5
feat(wasm): start StrToNum
2021-12-27 19:08:21 -05:00
rvcas
715c441b25
fix(int_instrinsic): these should be unsigned
2021-12-27 19:07:52 -05:00
Folkert
d1bf07fdcd
be a bit less string in debug assert
2021-12-28 00:10:26 +01:00
Folkert
b924f7e329
use new header type in a spot we missed
2021-12-27 23:58:56 +01:00
Richard Feldman
554570a232
Merge pull request #2284 from rtfeldman/roc-std-result
...
add RocResult to roc_std rust crate
2021-12-27 17:43:22 -05:00
Folkert de Vries
249878cbd9
Merge pull request #2281 from rtfeldman/i/2149
...
(llvm) Generate code for tag unions less than 64 bits in size correctly
2021-12-27 22:38:08 +01:00
Folkert de Vries
bb935948aa
Merge pull request #2276 from rtfeldman/i/2265
...
Parse "as" aliases into tag/args rather than arbitrary annotations
2021-12-27 20:56:48 +01:00
Folkert de Vries
565809063b
Merge pull request #2283 from rtfeldman/eq-linked-list-tce
...
Tail-call elimination for equality on linked lists
2021-12-27 20:40:03 +01:00
Folkert
007d777865
flesh out api for RocResult
2021-12-27 20:01:19 +01:00
Brian Carroll
c67b9e7a6f
clippy
2021-12-27 18:11:48 +00:00
Brian Carroll
0285cd88c5
Don't emit tail recursion loop for non-recursive unions
2021-12-27 18:08:43 +00:00
Brian Carroll
409a32b192
Test for equality on very long linked lists
2021-12-27 18:08:43 +00:00
Brian Carroll
0d8a2c8a49
Use tail call elimination where possible in ==
for tag unions
2021-12-27 18:08:43 +00:00
Brian Carroll
65a9464d98
Replace RecursivePointer todo with unreachable
2021-12-27 18:08:43 +00:00
ayazhafiz
4631ff96f5
Initialize stack pointer when it doesn't exist
...
I'm not sure this is right, but we have to do it somewhere.. and here
seems reasonable?
2021-12-26 17:46:06 -06:00
ayazhafiz
326bfe9aa3
Ensure WASM code gen uses proper tag ID alignment
...
We should use the alignment of the tag ID layout, not the alignment of
the rest of the data in the tag union. The reason is that the tag ID may
be smaller than the data.
2021-12-26 17:45:05 -06:00
ayazhafiz
b3ddfa7515
Parse destructured tag annotations as annotations rather than aliases
...
Closes #178
2021-12-26 16:11:29 -06:00
ayazhafiz
235d6a9e88
Fix gen_tags tests
2021-12-26 15:49:54 -06:00
ayazhafiz
a03f7fa46c
Update layout tests
2021-12-26 14:44:43 -06:00
Lucas
fe62e59e31
Merge pull request #2278 from rtfeldman/configure-zig-executable
...
use ROC_ZIG environment variable to configure which zig is used
2021-12-26 14:40:48 -05:00
ayazhafiz
c8ba554d8c
Clippy warning
2021-12-26 11:58:50 -06:00
ayazhafiz
5e5eb6dca8
(llvm) Generate code for tag unions less than 64 bits in size correctly
...
Previously, we assumed that a union layout always lived on >= 1 64-bit
boundary when generating an LLVM type for it. For small tags unions,
like `[ Ok i8, Err ]` this need not be the case; indeed, a tag union
like that is actually only 2 bits - 1 bit for the "i8" data, and one bit
of the tag kind.
This led to a discrepancy between what the layout IR and generated LLVM
code would assume about the size of tag unions. In the case above, the
layout IR would assume the tag data is 2 bits wide, and the tag id is 1
bit into the data. But the LLVM code would generate a type that was 65
bits wide, the first 64 bits being for the "i8" data and the last 1 bit
being for the tag kind.
Usually, just running the LLVM-emitted code would not present a problem.
But it does present a problem when we use the layout IR to inspect the
result of LLVM-run code, in particular when we try to look up the tag
ID, as the repl does. This patch fixes that issue.
Note that this bug did not present itself in `test_gen` previously
because the data that most tests check against is stored in the front of
the representation.
Closes #2149
2021-12-26 11:45:02 -06:00
ayazhafiz
0b6d3d2c55
Promote parse tests
2021-12-26 11:35:10 -06:00
ayazhafiz
b66543dd95
into_iter -> iter
2021-12-26 09:55:27 -06:00
ayazhafiz
966198a6e7
Coalesce inline and normal alias headers
...
Unifies `As` annotations and `Alias` defs to use a common struct for
defining alias header information, i.e. the name and type variables of
the alias.
2021-12-26 09:37:56 -06:00
ayazhafiz
597a1cef3b
Attach location to alias header name
2021-12-26 09:17:27 -06:00
ayazhafiz
11da888c07
Pull out alias header as its own struct
2021-12-26 09:07:12 -06:00
ayazhafiz
507f219d28
Satiate clippy
2021-12-26 08:44:10 -06:00
ayazhafiz
2cd5bf8c03
Parse "as" aliases into tag/args rather than arbitrary annotations
2021-12-26 08:44:09 -06:00
Folkert de Vries
4ddb8e10fb
Merge pull request #2272 from rtfeldman/joshuawarner32/parser-benchmark
...
Add simple benchmark for the parser: parse false-interpreter
2021-12-26 14:38:07 +01:00
Brian Carroll
44b4d2b3c9
Enable remaining gen_compare tests for wasm
2021-12-26 10:45:23 +00:00
Brian Carroll
e54ce0c975
Ensure procs are in the same order as the Symbols
2021-12-26 10:45:23 +00:00
Brian Carroll
9fb7048de0
Rename rec_ptr_layout -> recursive_union
...
I kept thinking it was of type Layout but it's not
2021-12-26 10:45:23 +00:00
Brian Carroll
ab7867d233
Separate specializations from procs
...
This was causing issues with recursive procs.
We need to be able to look up the proc's symbol
before we have finished generating it.
2021-12-26 10:45:23 +00:00
Brian Carroll
e10acd59ee
Debug config for Wasm backend
2021-12-26 10:45:18 +00:00
Brian Carroll
1f86ad3438
Fix Wasm function indices for generated helpers
2021-12-26 10:40:45 +00:00
Brian Carroll
d08b79295c
Fix unique names
2021-12-26 10:40:45 +00:00
Brian Carroll
da4cf721cc
Fix equality on empty structures
2021-12-26 10:40:45 +00:00
Brian Carroll
a0afb64cb0
Fix bug storing linker data for generated procs
2021-12-26 10:40:45 +00:00
Brian Carroll
0fbe49dce9
Shorten some variable names
2021-12-26 10:40:45 +00:00
Brian Carroll
ca501fdcf1
Restructure CodeGenHelp to generate IR immediately, in depth-first traversal
2021-12-26 10:40:45 +00:00
Folkert
022b1ca83a
use ROC_ZIG environment variable to configure which zig is used
2021-12-25 22:27:52 +01:00
Folkert
d70e803dff
add test
2021-12-24 21:19:09 +01:00
Folkert
a5957d9982
sort aliases before adding them to scope
2021-12-24 21:14:29 +01:00
Joshua Warner
a0cf5d0e70
Add simple benchmark for the parser: parse false-interpreter
2021-12-24 11:54:42 -08:00
Folkert
40e57142c4
add symbol creation helper
2021-12-24 15:16:27 +01:00