aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add support for `Addressing_OptionalOkPtr`gingerBill2021-06-061-90/+191
| | | | Allowing for `i, ok := &x.(T);` (type assertions) and `v, ok := &m[k];` (map indexing)
* Clean up lbAddr_Swizzle logic for load and storegingerBill2021-06-051-47/+73
|
* Use `shufflevector` when possible for lbAddr_Swizzle loadgingerBill2021-06-051-0/+39
|
* Improved `lb_build_assign_stmt_array` logicgingerBill2021-06-051-16/+36
|
* Fix `lb_build_assign_stmt_array` for `lbAddr_Swizzle`gingerBill2021-06-051-1/+28
|
* Experimental support for inline swizzling for array types of len <= 4 e.g. ↵gingerBill2021-06-051-56/+61
| | | | `v.xyz`, `v.argb`, `v.xxx`
* Make inline array arithmetic use `load+extractvalue` rather than ↵dev-2021-06gingerBill2021-06-011-7/+42
| | | | `getelementptr+load` to give the optimizer a better hint for vectorization
* Improves to array arithmetic on += etc assignment statementsgingerBill2021-06-011-68/+218
|
* Fix #992gingerBill2021-05-311-2/+4
|
* Fix #999gingerBill2021-05-311-1/+1
|
* Fix #1004gingerBill2021-05-311-36/+0
|
* Add intrinsics.{ptr_offset, ptr_sub}gingerBill2021-05-301-0/+31
|
* Improve logic for intrinsics.{mem_copy, mem_copy_non_overlapping, mem_zero} ↵gingerBill2021-05-301-10/+65
| | | | to use the `*.inline` LLVM variants when possible
* Fix comparison bug of enumerated arraysgingerBill2021-05-271-2/+6
|
* Disable copy elision on assignments for the time beinggingerBill2021-05-251-2/+2
|
* Minimize copying on getting the address of a call if requiredgingerBill2021-05-241-1/+5
|
* Add `intrinsics.mem_zero`gingerBill2021-05-241-2/+14
|
* Move the mem zero into a separate procedure for reusegingerBill2021-05-241-19/+27
|
* Refactoring of lbFunctionType retrievalgingerBill2021-05-241-15/+26
|
* Refactor backend code for assignments; Refactor some statements into ↵gingerBill2021-05-241-399/+335
| | | | separate procedures
* Heavily improve the copy elision logic in the backendgingerBill2021-05-241-44/+96
|
* Add `@(link_section=<string>)` for global variablesgingerBill2021-05-241-0/+3
|
* Handle #c_vararg correctlygingerBill2021-05-241-0/+6
|
* Modify ABI for the Odin calling conventions on SysV slightlygingerBill2021-05-221-6/+5
|
* Fix `..=` logic in the backendgingerBill2021-05-211-6/+6
|
* Add range-based error messages to `-verbose-errors`gingerBill2021-05-191-2/+2
| | | | | | | | Example: Cannot convert '(1 + 2)' to 'untyped bool' from 'untyped integer' x := (1 + 2) * true; ^~~~~~^
* Remove @(static) for global variablesgingerBill2021-05-191-1/+1
|
* More minor linkage changesgingerBill2021-05-191-22/+15
|
* Minor change to internal linkage stuffgingerBill2021-05-191-9/+27
|
* Add `intrinsics.mem_copy` and `intrinsics.mem_copy_non_overlapping`gingerBill2021-05-191-0/+38
|
* Add `intrinsics.sqrt` for floating-point valuesgingerBill2021-05-191-0/+22
|
* Improve untyped to typed logic for aiding the backendgingerBill2021-05-161-7/+53
|
* Add concrete type information for untyped values as procedure argumentsgingerBill2021-05-161-0/+1
|
* Allow `..=` alongside `..` as a "full range" operator; Update ↵gingerBill2021-05-161-2/+4
| | | | `core:odin/parser` etc
* Add custom basic dead instruction elimination passgingerBill2021-05-151-13/+15
|
* Remove old dead codegingerBill2021-05-151-51/+0
|
* Add name to aggregate result pointer to proceduresgingerBill2021-05-151-1/+5
|
* Change `for i in x..y {}` behaviourgingerBill2021-05-151-107/+89
| | | | | Adds an extra check before incrementation to prevent the possibility of overflowing of `y` is at the limit maximum size of the integer e.g. `for i in u8(0)..255 {}` (assuming `255` is not known at compile time)
* Disallow slicing of constant valuesgingerBill2021-05-151-1/+18
|
* Add minor ignoring hint on type assertions to get better code generation ↵gingerBill2021-05-131-2/+53
| | | | with no optimizations enabled
* Fix #741gingerBill2021-05-131-2/+3
|
* Fix #948gingerBill2021-05-121-27/+7
|
* Add `byval` with `align`, `sret` attributes for SysVgingerBill2021-05-111-3/+24
|
* Remove warning on \*nixgingerBill2021-05-111-4/+3
|
* Minor change (in preparation for something else) to opt passesgingerBill2021-05-111-8/+8
|
* Fix debug information for array types by setting the `DISubrange`gingerBill2021-05-101-4/+20
|
* Correct SysV ABI for `-> (f32, bool)`gingerBill2021-05-101-6/+21
|
* Improve type inference rules for implicit selector expressionsgingerBill2021-05-061-21/+29
| | | | | | New improvements: `(.A == x)` `a_union_containing_many_enums = .A;`
* Remove debug codegingerBill2021-05-051-3/+0
|
* Fix typogingerBill2021-05-051-2/+8
|