Commit Graph

417 Commits

Author SHA1 Message Date
Folkert
0f22cbbf7d fix incorrect layout for Switch 2020-03-20 19:56:50 +01:00
Folkert
d0da300042 fix equality/hash issue
lead to tests not being merged/shared
2020-03-20 16:23:56 +01:00
Folkert
e062404a63 support more complex nested patterns 2020-03-20 14:27:07 +01:00
Folkert
fbadd9d620 add pointer Layout 2020-03-20 11:53:21 +01:00
Folkert
e4566b9757 clean up comment 2020-03-20 11:47:22 +01:00
Richard Feldman
b33af811d0
Merge branch 'trunk' into unit-types 2020-03-19 22:05:22 -04:00
Folkert
14979ceb41 Merge remote-tracking branch 'origin/trunk' into unit-types 2020-03-20 01:02:13 +01:00
Folkert
f44fea42bb Boolean and/or in cranelift 2020-03-20 00:59:26 +01:00
Folkert
e6bee2656d add Bool.and for llvm 2020-03-19 23:18:44 +01:00
Folkert
82655556ab exhaustiveness for record guards 2020-03-19 22:34:08 +01:00
Folkert
5fc96c09ee Add record patterns 2020-03-19 17:08:29 +01:00
Folkert
9745d86efb add tests 2020-03-19 14:59:05 +01:00
Folkert
006b1f8696 Switch on floats in llvm 2020-03-19 14:58:28 +01:00
Folkert
9b81a94786 Switch on floats in crane 2020-03-19 14:43:58 +01:00
Folkert
6b7b393d32 Switch on tags in crane 2020-03-19 14:39:04 +01:00
Folkert
0075e3fb04 attempt at float switches
needs something more , will circle back later
2020-03-19 14:25:37 +01:00
Folkert
f30655a103 Switch on tags in llvm 2020-03-19 14:18:54 +01:00
Folkert
0593a39e0f uncomment test 2020-03-19 12:35:11 +01:00
Folkert
20dc928bfe fix test on maybe
used elm syntax instead of roc
2020-03-19 12:32:48 +01:00
Folkert
c31116af87 preparation for recursive tag unions 2020-03-19 12:20:12 +01:00
Folkert
9d1e2a0ef1 support zero-sized values (empty record, unit type)
They now use no stack space
2020-03-19 11:31:06 +01:00
Dan Bruder
2c630fd014 Use sorted fields from struct layout as well as layout.stack_size in crane and llvm access 2020-03-19 05:59:29 -04:00
Dan Bruder
59bcda21f5 tests pass for crane f64 2020-03-19 05:46:11 -04:00
Richard Feldman
04f8b93a9b the clippiest of clips 2020-03-18 21:31:01 -04:00
Richard Feldman
8f51b2d429 Don't hardcode elem_bytes in llvm 2020-03-18 21:31:01 -04:00
Richard Feldman
0a045ccec8 Don't hardcode List slots in Cranelift 2020-03-18 21:31:01 -04:00
Richard Feldman
43c4fadd6e Use usize length, no capacity for llvm List 2020-03-18 21:31:01 -04:00
Richard Feldman
59368caa0c Revert various attempts to use target_data 2020-03-18 21:26:51 -04:00
Richard Feldman
c425490317 Another failed attempt to use target_data 2020-03-18 21:26:51 -04:00
Richard Feldman
6e977d96fc Failed attempt to use target_data 2020-03-18 21:26:51 -04:00
Richard Feldman
eed9fb0e69 Have Env store TargetData instead of pointer_bytes 2020-03-18 21:26:51 -04:00
Folkert
b93fe4e341 make arbitrary AccessAtIndex work
it now uses that actual layout, not a hardcoded one
2020-03-19 00:25:16 +01:00
Folkert
f3f135eca5 make Layout Hash 2020-03-18 23:26:17 +01:00
Folkert
0996f264e7 simplify Byte layout 2020-03-18 22:22:32 +01:00
Folkert
c11f374eb0 simplify Bool layout 2020-03-18 22:15:03 +01:00
Folkert
f906c9b4b4 uncomment cranelift tests 2020-03-18 21:39:39 +01:00
Folkert
99db336033 Working pattern match on Result Int Int 2020-03-18 21:35:10 +01:00
Folkert
53bd47221c WIP things seem to work in theory 2020-03-18 16:44:53 +01:00
Folkert
845e30658e WIP 2020-03-18 02:20:21 +01:00
Folkert
165c5d8363 load/store all tags in llvm 2020-03-17 22:04:11 +01:00
Folkert
6253d2d1af pattern match on single-tag tag unions
in LLVM and crane
2020-03-17 19:44:59 +01:00
Folkert
ba69987c1a llvm one element tag store 2020-03-17 15:29:40 +01:00
Folkert
9d756a3b2c generate unpacked tags in Crane 2020-03-17 15:26:21 +01:00
Folkert
c3d550116b make patterns store their bound variables 2020-03-17 14:04:26 +01:00
Folkert
6310341b7e Merge remote-tracking branch 'origin/trunk' into pattern-compilation 2020-03-17 12:49:30 +01:00
Richard Feldman
9d950389f5 Implement list cloning and List.set in Cranelift 2020-03-17 00:45:07 -04:00
Richard Feldman
c0d0675919 Clean up some comments and names 2020-03-17 00:44:35 -04:00
Richard Feldman
97d084e224 Reproduce List.set on a shared list failing 2020-03-16 21:55:38 -04:00
Richard Feldman
f9e013793c Drop unused mono::Expr::Pointer 2020-03-16 21:47:08 -04:00
Folkert
c20f777dba comment tests that fail for llvm 2020-03-17 00:36:58 +01:00
Folkert
444e3063e0 reserve tag union as array of bytes in llvm 2020-03-17 00:36:58 +01:00
Folkert
6ff22de9dd store/define tags in llvm 2020-03-17 00:36:58 +01:00
Folkert
72ca6d675c further tag support in Cranelift 2020-03-17 00:36:58 +01:00
Folkert
74ec3682a2 add tests 2020-03-17 00:36:58 +01:00
Folkert
c9a90c32e3 prepare for Tag code gen 2020-03-17 00:36:58 +01:00
Folkert
e742b77e0b parity with old implementation 2020-03-17 00:36:58 +01:00
Folkert
d875f8bfce implement layout for Tag 2020-03-17 00:36:58 +01:00
Richard Feldman
505e69f956 Remove a stray space missed by cargo fmt 2020-03-15 15:25:54 -04:00
Richard Feldman
6cd8afd5d6 Fix using structs with records 2020-03-15 15:13:52 -04:00
Richard Feldman
d546f4340d Improve an error message 2020-03-15 14:31:13 -04:00
Richard Feldman
010e390fd6 Make using records in defs work 2020-03-15 14:31:01 -04:00
Folkert
cdf05bc425 remove (now unneeded!) default case 2020-03-15 14:42:57 +01:00
Folkert
5926ac2f01 stub out Tag layout 2020-03-15 14:42:57 +01:00
Richard Feldman
5c3c30ed09 Fix List.get and List.set 2020-03-14 21:17:09 -04:00
Richard Feldman
a54db8bf92 Merge remote-tracking branch 'origin/trunk' into array-wrappers 2020-03-14 20:49:59 -04:00
Richard Feldman
5bf82fa42c Fix Cranelift gen of nonempty lists 2020-03-14 20:44:39 -04:00
Richard Feldman
5beb65880c Fix List.len 2020-03-14 20:12:27 -04:00
Richard Feldman
e01db9b284 wip empty list 2020-03-13 23:33:32 -04:00
Richard Feldman
de25dc0484 Re-enable empty list test 2020-03-13 22:41:46 -04:00
Richard Feldman
8d4331f903 Merge remote-tracking branch 'origin/trunk' into array-wrappers 2020-03-13 22:20:35 -04:00
Richard Feldman
4c19dd86ff First pass at some List implementation stuff 2020-03-13 22:15:26 -04:00
Richard Feldman
80722b872a Update List.set to use wrapper 2020-03-13 22:15:02 -04:00
Richard Feldman
6f64bb2f9b Update List.getUnsafe to use wrapper 2020-03-13 22:15:02 -04:00
Folkert
1a8f380033 Merge remote-tracking branch 'origin/trunk' into mono-if 2020-03-14 01:00:25 +01:00
Folkert
1570e9b96e make mono patterns nicer 2020-03-14 00:10:11 +01:00
Folkert
c4c40ec878 fix cond generation
With Enum patterns (u8 in size), the size of the condition and the branches could disagree. (the branches would be i64).
we now cast the branches to the smaller integer type based on the layout
2020-03-14 00:07:32 +01:00
Folkert
05a3e8c3d8 equality for Byte and Bool 2020-03-13 17:01:18 +01:00
Folkert
242679b841 fix clippy complaints 2020-03-13 16:14:37 +01:00
Folkert
97f1548a24 add tests 2020-03-13 15:16:27 +01:00
Folkert
6651180283 implement Bool in llvm 2020-03-13 15:13:43 +01:00
Dan Bruder
c16d5cb3f1 struct creation and access in llvm 2020-03-13 10:13:32 -04:00
Dan Bruder
eea25429b6 uncomment llvm tests for basic_record 2020-03-13 09:16:04 -04:00
Dan Bruder
099145e4b4 Merge branch 'trunk' into access-record-fields 2020-03-13 09:07:41 -04:00
Folkert
a7af366c3a new code gen for Cond 2020-03-13 13:06:56 +01:00
Dan Bruder
bfd9150af4 access record fields progress 2020-03-12 10:37:07 -04:00
Richard Feldman
f74471012c Improve an error message 2020-03-12 00:53:24 -04:00
Richard Feldman
173ba925ff Formatting 2020-03-12 00:39:28 -04:00
Richard Feldman
db362f6df0 Reproduce named identity function bug 2020-03-12 00:31:53 -04:00
Richard Feldman
cf5e3f92a5 Have mono::Env store &mut Subs 2020-03-11 21:36:27 -04:00
Richard Feldman
df78068e81 Implement int and float subtraction 2020-03-11 21:10:41 -04:00
Richard Feldman
9fcfa90bff Change capitalization 2020-03-11 21:06:08 -04:00
Richard Feldman
21e4eb505a Implement and test Float.#add 2020-03-11 20:53:35 -04:00
Richard Feldman
523282e7bc Implement Int.#add 2020-03-11 20:53:32 -04:00
Richard Feldman
649575fab8 Improve some error messages 2020-03-11 19:48:19 -04:00
Folkert
bb9c9d423a make Procs a struct 2020-03-12 00:40:10 +01:00
Folkert
2d0649fa66 attempt fix for gen tests 2020-03-11 23:13:32 +01:00
Folkert
657901d760 bubble up pointer_size 2020-03-10 15:16:44 +01:00
Richard Feldman
8da2bebcde Remove some dbg! statements 2020-03-10 02:56:56 -04:00
Richard Feldman
28b50c00c0 Clean up some comments 2020-03-10 02:56:56 -04:00
Richard Feldman
21d6d1cbd9 Disable empty_list_len for now 2020-03-10 02:56:56 -04:00
Richard Feldman
913f18226b Got LLVM structs working 2020-03-10 02:56:56 -04:00
Richard Feldman
8da7f26237 Try a different Struct approach 2020-03-10 02:56:56 -04:00
Richard Feldman
8450597a07 Try an alloca approach for structs 2020-03-10 02:56:55 -04:00
Richard Feldman
f556f195d3 Handle more mono::Expr cases 2020-03-10 02:25:40 -04:00
Folkert
5237408b15 do what clippy wants 2020-03-09 23:51:48 +01:00
Richard Feldman
6ae1ee373e Use a tag on rtfeldman/inkwell 2020-03-08 17:51:13 -04:00
Mario Rogic
a5c2844f54 Float.div implemented, Int.div WIP-ish 2020-03-08 18:32:48 +00:00
Richard Feldman
17e9f0b8c3 Error early on a type mismatch in test_gen 2020-03-08 12:13:59 -04:00
Mario Rogic
c502aee10e Add test for potential multiplication and division order of ops ambiguity 2020-03-08 13:58:18 +00:00
Richard Feldman
be4abcf173 Fix List.set tests 2020-03-08 01:20:43 -05:00
Richard Feldman
74e92f35f1 Disable List.set tests for now 2020-03-08 00:33:13 -05:00
Richard Feldman
72ecb231f1 clip clop clip clop clippy 2020-03-07 23:11:42 -05:00
Richard Feldman
abe9b8efaa Use Layout over Variable for both build modules 2020-03-07 23:04:28 -05:00
Richard Feldman
db4ef45708 Upgrade to List.set_in_place when appropriate 2020-03-07 12:43:24 -05:00
Richard Feldman
0f79a3311d Upgrade bumpalo to 3.2 2020-03-07 11:20:35 -05:00
Richard Feldman
df4533296b fix some tests 2020-03-06 18:24:37 -05:00
Richard Feldman
363a7a0abd Mov gen to its own crate 2020-03-06 18:24:37 -05:00