aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_expr.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Use a `RwMutex` instead of `BlockingMutex`gingerBill2025-09-101-2/+3
|
* Add `-integer-division-by-zero:all-bits`gingerBill2025-08-101-0/+19
|
* Rename block names from `div` to `mod`.gingerBill2025-08-101-3/+3
|
* Add shortcut for `unsigned_x/power_of_two` -> `unsigned_x >> log2(power_of_two)`gingerBill2025-08-101-0/+11
|
* Add shortcut for division by a constantgingerBill2025-08-101-40/+87
|
* Handle `fixed_point_div` and `fixed_point_div_sat`gingerBill2025-08-081-0/+73
|
* Add `-integer-division-by-zero:self`gingerBill2025-08-081-4/+13
|
* Add `#+feature integer-division-by-zero:<string>`gingerBill2025-08-081-6/+24
|
* Define the behaviour of integer division by zerogingerBill2025-08-081-27/+161
|
* Fix `cstring != ""`gingerBill2025-08-021-2/+2
|
* Fix `string16 != ""` comparisongingerBill2025-08-021-4/+12
|
* Fix [^]u16 <-> cstring16 conversionsgingerBill2025-08-021-0/+61
|
* Cache const `string16` in LLVMgingerBill2025-08-021-6/+0
|
* Begin supporting `string16` across the core librarygingerBill2025-08-021-1/+2
|
* Add `string16` and `cstring16` (UTF-16 based strings)gingerBill2025-08-021-0/+72
|
* Allow -dynamic-literals for `[dynamic]T`Jeroen van Rijn2025-06-031-1/+1
|
* -dynamic-literalsJeroen van Rijn2025-05-191-1/+1
|
* Merge pull request #5064 from harold-b/hb/objc-classesgingerBill2025-05-081-8/+16
|\ | | | | Add support for Objective-C class implementation
| * Cleanup ivar generation for selector expressions.Harold Brenes2025-04-301-19/+5
| | | | | | | | Cleanup ObjC superclass resolution.
| * Fixes to Ivar pseudo fields.Harold Brenes2025-04-231-1/+7
| |
| * Include the ivar in the Objective-C class unconditionally of it being used ↵Harold Brenes2025-04-221-8/+24
| | | | | | | | | | | | or not. Allow pseudo-fields for ivar access.
* | Also allow comparing SOA pointers against each otherJeroen van Rijn2025-05-061-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This compares the data pointer *and* the index. ```odin package scratch import "core:fmt" Foo :: struct {a, b: int} main :: proc() { a := new(#soa[dynamic]Foo) a^ = make(#soa[dynamic]Foo, 12, 12) b := new(#soa[dynamic]Foo) b^ = make(#soa[dynamic]Foo, 12, 12) fmt.printfln("&a[0]: %p, &b[0]: %p, Same: %v", &a[0], &b[0], &a[0] == &b[0]) // Same: false fmt.printfln("&a[0]: %p, &b[0]: %p, Same: %v", &a[0], &b[1], &a[0] == &b[1]) // Same: false fmt.printfln("&a[0]: %p, &b[0]: %p, Same: %v", &a[0], &b[2], &a[0] == &b[2]) // Same: false fmt.printfln("&a[0]: %p, &a[1]: %p, Same: %v", &a[0], &a[1], &a[0] == &a[1]) // Same: false fmt.printfln("&a[1]: %p, &a[2]: %p, Same: %v", &a[1], &a[2], &a[1] == &a[2]) // Same: false fmt.printfln("&a[2]: %p, &a[3]: %p, Same: %v", &a[2], &a[3], &a[2] == &a[3]) // Same: false fmt.printfln("&a[0]: %p, &a[0]: %p, Same: %v", &a[0], &a[0], &a[0] == &a[0]) // Same: true fmt.printfln("&a[1]: %p, &a[1]: %p, Same: %v", &a[1], &a[1], &a[1] == &a[1]) // Same: true fmt.printfln("&a[2]: %p, &a[2]: %p, Same: %v", &a[2], &a[2], &a[2] == &a[2]) // Same: true } ```
* | Add support for SoaPointer nil comparison in lb_emit_comp_against_nilbogwi2025-05-061-0/+12
| |
* | fix variable NaN comparisonsLaytan Laats2025-04-301-2/+2
|/
* Simplify condition, op = Token_Sub was trivially trueJeroen van Rijn2025-04-101-1/+1
|
* Fixes #5026Jeroen van Rijn2025-04-101-0/+3
|
* Propagate `@(link_section=<string>)` to nested declarationsgingerBill2025-04-081-4/+3
|
* Fix #4952gingerBill2025-03-241-1/+2
|
* Fix #4573gingerBill2025-03-071-0/+6
|
* Try to make globally generated variables deterministic in namegingerBill2025-02-251-4/+4
|
* Fix #4819gingerBill2025-02-241-2/+2
|
* Fixed an issue with SIMD vector equality.Barinzaya2025-02-201-1/+10
| | | | | | Comparing SIMD vectors with `==` was checking that the mask of elements that matched was not 0, meaning it succeeded if *any* element was equal, rather than if *all* elements were equal.
* -obfuscate-source-code-locations on bounds checks and type assertionsLaytan Laats2025-02-051-6/+2
|
* Fix #4773 - Change order of evaluation for slicing indicesgingerBill2025-01-291-10/+11
|
* Make `-no-dynamic-literals` the default nowgingerBill2025-01-051-2/+2
|
* Add `#branch_location`gingerBill2025-01-011-3/+9
|
* Fix bug with comparisons with big endian typesgingerBill2024-12-121-0/+19
|
* Merge pull request #4440 from 0dminnimda/support_llvm19gingerBill2024-11-271-2/+10
|\ | | | | Add support for llvm version 19
| * Add support for llvm version 190dminnimda2024-10-311-2/+10
| |
* | Remove `#relative` types from the compilergingerBill2024-11-141-36/+1
| |
* | Fix `auto_cast` matrix buggingerBill2024-11-041-1/+12
|/
* Fix invalid union accessbobsayshilol2024-10-271-1/+1
| | | | | | | | | | | UBSan spotted that |src->Basic.kind| had a value outside the range of |BasicKind| due to it actually being a |Type_Pointer|. Since these are stored in a union there could be cases where the value of |kind| just so happens to be |Basic_string|, in which case the branch would have been taken when it shouldn't have been. To fix this simply check that it's a |Type_Basic| before treating it as a |Basic|.
* check packed load and set alignment on all loads, not just lb_emit_loadLaytan Laats2024-10-251-7/+6
|
* fix quaternion64 arithLaytan Laats2024-10-021-4/+4
| | | | Fixes #4282
* Fix union comparison buggingerBill2024-09-301-0/+6
|
* Fix for crash when emitting a comparison between a constant array and a ↵Karl Zylinski2024-09-251-3/+7
| | | | non-constant value.
* Fix #4229 for edge case `os.Error`/`os.Errno` legacy bodgegingerBill2024-09-111-1/+7
|
* Simplify #row_major matrix and `matrix_flatten` behaviourgingerBill2024-09-071-25/+31
|
* Use XOR directly rather than `(~x) & mask`gingerBill2024-08-301-2/+3
|
* Make `~some_bit_set` work on only the possible bits by doing a mask with the ↵gingerBill2024-08-301-1/+11
| | | | full set