Folkert
5582644166
use str/list helpers to prepare for adding capacity
2022-02-18 22:23:05 +01:00
hafiz
91483dbf55
Merge pull request #2471 from rtfeldman/fix_args_order
...
Swap arg order in `List` builtins to put the more-complex types first
2022-02-13 23:25:05 -05:00
ayazhafiz
886e4e07f6
Update alias analysis, implementation for List.mapWithIndex
2022-02-13 22:50:27 -05:00
ayazhafiz
6e5c1d5914
Specialize Num.toFloat
for different target float types
...
Closes #2476
2022-02-13 20:20:25 -05:00
Richard Feldman
71f2444397
s/Int/Nat in a comment
2022-02-11 21:26:39 -05:00
Richard Feldman
e1cc4cbde6
Fix comment
2022-02-11 21:25:08 -05:00
Jan Van Bruggen
f47dbb5171
Swap List.mapWithIndex arg1 args order to put the element first
2022-02-11 16:10:29 -07:00
Jan Van Bruggen
92e0f8714f
Swap List.repeat args order to put the list first
2022-02-11 16:10:29 -07:00
ayazhafiz
1a1eaf7f68
Normalize c/Roc callconv parameters when C returns by pointer
...
Closes #2413
2022-02-06 21:57:14 -05:00
Richard Feldman
a8e3d5f9b6
Merge remote-tracking branch 'origin/trunk' into expect-dont-panic
2022-02-03 22:25:40 -05:00
Richard Feldman
9dea0e3a04
Automatically deallocate Failures in Rust
2022-02-03 22:17:53 -05:00
ayazhafiz
097c5afc73
Check lower bounds for numeric literals, and permit 128-bit literals
2022-02-02 23:35:57 -05:00
Richard Feldman
3e9eef4d0e
Add some TODO comments
2022-02-02 18:47:18 -05:00
Richard Feldman
dd8f63b1ab
Add some #[repr(C)] annotations
2022-02-02 18:47:02 -05:00
Richard Feldman
15969af53c
Use constant over string literal
2022-02-01 20:44:02 -05:00
Richard Feldman
e65e6c97d1
Use constant instead of hardcoded string
2022-02-01 09:17:28 -05:00
Richard Feldman
a55ff62e6c
Merge remote-tracking branch 'origin/trunk' into expect-dont-panic
2022-01-30 20:22:26 -05:00
Chelsea Troy
4f8d0776b3
We got a test working for panicking with the appropriate number fo failures. Ultimatly we want:
...
+ An error maessage that says what the failures were
+ Not panicking (so these are effectively error productions)
2022-01-30 18:55:09 -06:00
Brian Carroll
d7f10d80ae
repl: Change LLVM macro to use address instead of pointer
2022-01-29 11:24:13 +00:00
Folkert
684b873453
change name back ?!
2022-01-27 23:20:35 +01:00
Folkert
ee151c8f94
fix function name
2022-01-27 22:26:44 +01:00
Folkert
e31532360b
don't remove argument that is not pushed
2022-01-27 21:20:46 +01:00
Folkert
3ade77374a
Merge remote-tracking branch 'origin/trunk' into add_loop_examples
2022-01-27 16:49:47 +01:00
Folkert
7e28d557ec
improve how we generate the mainForHost function
2022-01-26 21:08:45 -07:00
Folkert
afd11e1cb1
move target -> roc_target
2022-01-26 23:33:29 +01:00
Folkert
0298013346
fix logical error
2022-01-26 17:03:49 +01:00
Folkert
c663a35e16
final phase
2022-01-26 15:44:24 +01:00
Folkert
74932a4cab
phase 2
2022-01-26 14:30:37 +01:00
Folkert
7e90812332
ptr_bytes -> target info, step 1
2022-01-26 14:28:26 +01:00
Mats Sigge
71f359fbdc
Move macros from roc_reporting to new roc_error_macros module
...
The `internal_error!` and `user_error!´ macros can't be used everywhere
when they live in `roc_reporting` due to circular dependencies.
2022-01-23 18:40:04 +01:00
Richard Feldman
638c56442c
Delete commented-out line
2022-01-22 22:41:41 -05:00
Folkert
38b03282fd
working version of joinpoints with phi nodes
2022-01-23 00:46:32 +01:00
Folkert
7baec2b201
make tag allocas at the function entry point block
2022-01-23 00:21:18 +01:00
Chelsea Troy
085c02ffee
Infrastructure to test and implement the replacement of an 'expect' failure with an error production
...
Last command run was 'cargo test expect_fail'
2022-01-16 22:01:22 -06:00
Richard Feldman
f83f50a9a7
Merge pull request #2337 from rtfeldman/i/2331
...
Use unsigned LLVM intrinsic arithmetic for unsigned integers
2022-01-12 08:29:30 -05:00
Folkert
1b149d215d
pass pointer to C as first argument
2022-01-11 22:08:58 +01:00
Folkert
b2e05b92d1
make fastcc wrapper return by pointer if return type is large
2022-01-11 21:03:57 +01:00
ayazhafiz
2c41c43aea
Implement saturated add/subtract
2022-01-10 22:37:08 -05:00
ayazhafiz
abe42781d5
Use unsigned LLVM intrinsic arithmetic for unsigned integers
...
Closes #2331
2022-01-10 19:20:51 -05:00
rvcas
d2f95bde63
chore(StrToNum): layout is always a Struct, we don't need the Union case
2022-01-03 18:15:46 -05:00
Chelsea Troy
922d8e57c7
trying to see if we have access to our testing modules elsewhere
2022-01-02 22:53:48 -05:00
Brian Carroll
aec8d1bf3d
Merge branch 'trunk' of github.com:rtfeldman/roc into str_to_num
2022-01-02 12:31:59 +00:00
ayazhafiz
983a9f7e17
Position correct basic block before calling error catcher
...
While building the main function for tests, we may need to generate
additional blocks while marshalling arugments to the error catcher into
the expected calling convention. This pushes the last block in the main
function down, so that the "entry" block may not be last BB in the
function. Instead, look up the last insertion block before generating
the catcher, and then add a call to the catcher at the end of this last
block.
Closes #2300
2021-12-30 20:55:43 -06:00
ayazhafiz
f52cca40b5
Dereference small (non recursive) tag unions before storing them elsewhere
...
Closes #2290
2021-12-29 17:55:21 -06:00
ayazhafiz
71bd77e3b2
Handle flat variants of recursive tag unions in repl
2021-12-29 17:55:21 -06:00
ayazhafiz
6da9a58b22
Remove some dead code
2021-12-29 17:55:21 -06:00
rvcas
d0c4072362
fix:(llvm): StrToNum is safer if we match on either a Union or a Struct
2021-12-29 16:26:15 -05:00
Folkert
d1bf07fdcd
be a bit less string in debug assert
2021-12-28 00:10:26 +01: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
Brian Carroll
e847c924dd
Lowlevels: replace RefCountGetPtr with the more general GetPtrAsInt.
2021-12-19 08:29:17 +00:00