aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* Fix LLVM store point for nested types containing procedures (e.g. `^^proc()`)gingerBill2021-05-051-1/+33
|
* Unify `AstTernaryExpr` with `AstTernaryIfExpr`gingerBill2021-05-051-41/+0
| | | | | 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.
* Mark external thread local globalsgingerBill2021-05-051-0/+19
|
* Minor cleanupgingerBill2021-05-051-2/+5
|
* Move anonymous proc generation into `lbGenerator`gingerBill2021-05-041-7/+7
|
* Nearly approach full functionality for -use-separate-modules coupled with ↵gingerBill2021-05-041-88/+129
| | | | multithreading