Folkert
e2a7c970bc
refactor Access into AccessAtIndex
2020-03-23 17:55:02 +01:00
Richard Feldman
db502fe2e7
Revise some tests
2020-03-21 22:51:11 -04:00
Richard Feldman
ef38095003
Fix optimization test
...
The reason this was failing was that `x` was getting
dropped by dead code elimination, and therefore wasn't
considered a reason to share any values it used.
2020-03-21 21:19:18 -04:00
Richard Feldman
cc8683d241
Fix use of GEP (was using byte offset, not index)
2020-03-21 21:19:18 -04:00
Richard Feldman
3a6018d223
Reproduce List.set uniqueness bug
2020-03-21 21:19:18 -04:00
Folkert
9a0234e5dd
make bound variables available in guards
2020-03-22 01:11:19 +01:00
Folkert
1f3b8f7d68
guard exhaustiveness
2020-03-21 23:33:37 +01:00
Folkert
a16d48a6a9
code gen for simple guards
...
Guards cannot use variables bound in the pattern yet
2020-03-21 22:27:36 +01:00
Folkert
97acf1363d
cleanup after review
2020-03-21 12:52:10 +01:00
Folkert
c57b5c8bc3
make old tests pass again
2020-03-21 01:02:02 +01:00
Folkert
920928399a
type inference for pattern guards
2020-03-21 00:39:52 +01:00
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
f44fea42bb
Boolean and/or in cranelift
2020-03-20 00:59:26 +01:00
Folkert
82655556ab
exhaustiveness for record guards
2020-03-19 22:34:08 +01:00
Folkert
0985037754
expand record pattern matches to bind all unused fields with underscore
...
this will simplify exhaustiveness checking, because a record is not like a one-tag union
2020-03-19 20:42:58 +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
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
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
b28a6ffa33
optimize tag union layout calculation
2020-03-18 22:42:10 +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
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
6253d2d1af
pattern match on single-tag tag unions
...
in LLVM and crane
2020-03-17 19:44:59 +01:00
Folkert
b5abed5f54
variables in pattern matches on single tags
2020-03-17 16:27:09 +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
77bf2547ac
Add sfe_to_memcpy
2020-03-16 21:55:24 -04:00
Richard Feldman
f9e013793c
Drop unused mono::Expr::Pointer
2020-03-16 21:47:08 -04:00
Richard Feldman
bfe7c1b330
Update a comment
2020-03-16 21:27:49 -04:00
Folkert
c20f777dba
comment tests that fail for llvm
2020-03-17 00:36:58 +01:00
Folkert
ab332a37c3
take the maximum of all tags when calculating layout
2020-03-17 00:36:58 +01:00
Folkert
72ca6d675c
further tag support in Cranelift
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
Folkert
8c7124aba6
first pass
2020-03-17 00:36:58 +01:00
Richard Feldman
455fabbe88
c to the l to the i p p y
2020-03-15 15:21:33 -04:00
Richard Feldman
6cd8afd5d6
Fix using structs with records
2020-03-15 15:13:52 -04:00
Richard Feldman
010e390fd6
Make using records in defs work
2020-03-15 14:31:01 -04:00
Folkert
6e97734211
ensure Bit/Enum patterns are considered exhaustive
2020-03-15 14:42:57 +01:00
Folkert
8a46765fee
add debug assert for possible invariant
2020-03-15 14:42:57 +01:00