gingerBill
da7a9a3584
Improve type inference rules for implicit selector expressions
...
New improvements:
`(.A == x)`
`a_union_containing_many_enums = .A;`
2021-05-06 13:59:05 +01:00
gingerBill
278de3a92f
Unify AstTernaryExpr with AstTernaryIfExpr
...
Allow for both syntaxes `x if cond else y` and `cond ? x : y`
Removes the confusing semantics behind `?:` which could be `if` or `when` depending on the context.
2021-05-05 15:22:54 +01:00
gingerBill
abdf54800e
Improve ternary expression logic within parametric polymorphic parameter assignments
2021-05-05 15:14:39 +01:00
gingerBill
222bab501c
Disallow unnamed polymorphic records
2021-04-29 11:00:14 +01:00
gingerBill
e7e1866e50
Fix #893
2021-04-27 13:09:37 +01:00
gingerBill
1aa9c49172
Remove warning for "Redundant 'auto_cast' applied to expression"
2021-04-26 19:17:25 +01:00
gingerBill
cb2e6ea31d
Remove use_llvm_api related checks and other related things
2021-04-25 20:03:05 +01:00
gingerBill
6383714bff
Remove old procedure ABI code
2021-04-25 19:56:46 +01:00
gingerBill
c9b82a21e9
Move check_builtin_procedure to check_builtin.cpp
2021-04-23 10:01:52 +01:00
gingerBill
17bbb48d8a
Warn on redundant auto_cast, and make an error on -vet
2021-04-22 17:36:28 +01:00
gingerBill
b68b090f13
Add intrinsics: overflow_add, overflow_sub, overflow_mul; Change byte swap behaviour in -llvm-api to be the same as the intrinsic
2021-04-22 11:33:46 +01:00
gingerBill
542098dc6f
Add intrinsics: byte_swap (integers and floats); count_ones; trailing_zeros; reverse_bits
2021-04-22 11:06:16 +01:00
gingerBill
0a66f8c9a3
Remove intrinsics.x86_mmx type
2021-04-22 10:39:20 +01:00
gingerBill
47c7dc6a9b
Add new intrinsics: debug_trap, trap, read_cycle_counter, expect
2021-04-22 10:35:17 +01:00
gingerBill
6b45856e81
Remove useless error message for constant binary expressions with non-constant operations
2021-04-21 10:52:26 +01:00
gingerBill
201cad51a9
Fix typo
2021-04-19 22:41:52 +01:00
gingerBill
d21e522208
Add code that was accidentally removed
2021-04-19 22:35:59 +01:00
gingerBill
f1bdd2e60f
Improve #optional_ok logic for procedures; Add #optional_second for package runtime usage
2021-04-19 22:31:14 +01:00
gingerBill
0eb75886d1
Allow assignment of procedure calls with #optional_ok to single values
2021-04-19 16:02:36 +01:00
gingerBill
3612569624
Allow casting of #optional_ok call expressions
2021-04-19 15:46:12 +01:00
gingerBill
c83d13d0cb
Fix update_expr_type behaviour, along with fixing procedure groups updating the proc expr type
2021-04-19 15:12:10 +01:00
gingerBill
eb49b5f84a
Fix override_entity_in_scope behaviour to correctly to report the changes upstream better
2021-04-19 11:01:00 +01:00
gingerBill
9adec628c1
Add @(cold) attribute to procedure declarations
2021-04-14 17:15:28 +01:00
gingerBill
12296a0dcc
Allow intrinsics entities to be exported from other packages if wanted
2021-04-13 18:57:47 +01:00
gingerBill
cef698afd6
Implement fixed-point arithmetic intrinsics for -llvm-api backend
2021-04-01 14:36:06 +01:00
gingerBill
b3e788b9d9
Fix missing complex32/quaternion64 checks
2021-04-01 10:56:57 +01:00
gingerBill
b3dce34bc6
Add min(f16) and max(f16) support
2021-04-01 10:35:07 +01:00
gingerBill
54e6c50769
Implement f16 functionality
2021-04-01 10:06:00 +01:00
gingerBill
342761e83a
Refactor record polymorphic params code for unification
2021-03-27 17:21:12 +00:00
gingerBill
1e587d6635
Fix #883 - polymorphic specialization with target types of enumerated arrays
2021-03-27 15:22:05 +00:00
gingerBill
7028797d53
Implement soa_unzip
2021-03-24 19:29:25 +00:00
gingerBill
6c9d3715d8
Add type hinting to soa_zip
2021-03-24 18:08:34 +00:00
gingerBill
989a03dc77
soa_zip (-llvm-api only): creates an #soa[]struct from passed slices
...
x := []i32{1, 3, 9};
y := []f32{2, 4, 16};
z := []b32{true, false, true};
s_anonymous := soa_zip(x, y, z);
assert(s_anonymous[0]._1 == 2);
s_named := soa_zip(a=x, b=y, c=z);
assert(s_anonymous[0].b == 2);
2021-03-24 17:33:05 +00:00
gingerBill
fc1a352285
For bit_set, allow + and - to be aliases for | and &~, respectively
2021-03-23 23:34:01 +00:00
gingerBill
082381284c
Remove dead code
2021-03-23 23:23:40 +00:00
gingerBill
3ff7bded64
Add intrinsics.volatile_store and intrinsics.volatile_load
2021-03-09 11:40:36 +00:00
gingerBill
15dbc99cb9
Minimize TokenPos size by using i32 for line/column/offset and file_id instead of String
...
To make `i32` safe, the parser limits the file size of odin files to a maximum of 2GiB (which will be good enough for the vast vast majority of cases)
2021-03-04 16:45:30 +00:00
gingerBill
75f127af7c
Add -vet-extra (checks for unneeded casts and transmutes)
2021-03-03 14:17:48 +00:00
gingerBill
667aa3671e
Fix Addressing for SOA on store; Add intrinsics.type_struct_field_count(T)
2021-03-01 17:54:49 +00:00
gingerBill
54194af71c
Fix patch (yeah... I know)
2021-02-26 15:29:10 +00:00
gingerBill
575c7ff031
Patch issue with minimum dependency system and how it interacts with para poly procedures
2021-02-26 15:09:32 +00:00
gingerBill
8f9111e552
Build tag to make all declarations within a file private to the package //+private
2021-02-23 20:40:48 +00:00
gingerBill
41b854f192
Remove #opaque types
2021-02-23 15:45:06 +00:00
gingerBill
28f279329d
Remove bit_field keyword and parsing logic
2021-02-23 15:29:54 +00:00
gingerBill
28ed310f31
Remove "pure" and "pure_none" calling conventions
2021-02-23 13:10:23 +00:00
gingerBill
efdee0dafb
Remove bit_field type from Odin (keyword and dead runtime code still exists)
2021-02-19 11:31:14 +00:00
gingerBill
e64eb74eef
Fix #831
2021-01-27 15:27:38 +00:00
gingerBill
720f2c7c61
Allow check_expr_with_type_hint to allow assignment of types to typeid without requiring typeid_of
2020-12-17 14:23:45 +00:00
gingerBill
416051f17b
Fix #811
2020-12-14 16:39:31 +00:00
gingerBill
d7a5767aa3
If ir_type_requires_mem_zero is stored with zero, don't store again with the zeroinitializer
2020-12-08 15:43:57 +00:00