Commit Graph

5194 Commits

Author SHA1 Message Date
Laytan Laats
ad80aa6d28 sys/info & odin report: rework macos version retrieval 2024-11-26 22:28:21 +01:00
Laytan Laats
767daf4a9c add macos 15.1.1 to odin report and sys/info 2024-11-26 18:46:27 +01:00
gingerBill
9115c7aa13 Convert mutex guard to "try lock" 2024-11-26 16:14:13 +00:00
Jeroen van Rijn
7c3ce334d6 Fix #4508 for abs, min, max (#4516)
* Fix #4508 for abs, min, max and the rest of the builtins.

None of these segfault now:
```odin
package bug

main :: proc() {
	p :: proc() {}

	// _ = len(p())
	// _ = cap(p())

	// _ = size_of(p())
	// _ = align_of(p())

	// T :: struct {}
	// _ = offset_of(p())
	// _ = offset_of(T, p())
	// _ = offset_of(p(), foo)
	// _ = offset_of(p(), "")

	// _ = type_of(p())
	// _ = type_info_of(p())
	// _ = typeid_of(p())

	// A: [4]int
	// _ = swizzle(p())    //  :: proc(x: [N]T, indices: ..int) -> [len(indices)]T ---
	// _ = swizzle(A, p()) //  :: proc(x: [N]T, indices: ..int) -> [len(indices)]T ---

	// _ = complex(p(), p())
	// _ = quaternion(p(), p(), p(), p())
	// _ = quaternion(w=p(), x=p(), y=p(), z=p())

	// _ = real(p())
	// _ = imag(p())
	// _ = jmag(p())
	// _ = kmag(p())
	// _ = conj(p())

	// _ = expand_values(p())

	// _ = min(p())
	// _ = max(p())
	// _ = abs(p())
	// _ = clamp(p(), p(), p())

	// _ = soa_zip(p())
	// _ = soa_unzip(p())
}
```
2024-11-25 15:27:35 +01:00
gingerBill
f213b8e5cf Allow for odin help build etc 2024-11-25 14:04:17 +00:00
Laytan Laats
83bf0c6ab8 checker: only error with -vet-cast when it is actually castable 2024-11-21 19:18:17 +01:00
gingerBill
3229f4668d Improve odin help -foo usage 2024-11-18 23:35:10 +00:00
jakubtomsu
71880eb1ff report error when builtin min/max has 1 (non-type) param 2024-11-17 21:02:30 +01:00
Laytan Laats
8f2766c4dc add missing macos version 2024-11-16 15:42:13 +01:00
gingerBill
2af014b960 Make lowercase 2024-11-14 17:42:21 +00:00
gingerBill
7adb4c91d4 Fix typo 2024-11-14 17:05:34 +00:00
gingerBill
b9886dfcc7 Add -linker:<string> to replace -lld and -radlink 2024-11-14 17:04:45 +00:00
gingerBill
8de6909198 Disallow -lld and -radlink to be used together 2024-11-14 16:35:48 +00:00
gingerBill
21a25bddde Add -radlink 2024-11-14 16:32:26 +00:00
gingerBill
e38a08013e Remove #relative types from the compiler 2024-11-14 16:17:24 +00:00
gingerBill
b3d1d7b835 Make #relative types an error in parsing 2024-11-14 16:08:53 +00:00
gingerBill
89a5decc33 Keep ASAN happy on type assertions 2024-11-13 18:32:50 +00:00
bayo-code
8585fdf25f Added support for odin build -target:? 2024-11-11 04:16:01 +01:00
bayo-code
d5b221f972 Revert "List the supported targets using odin targets"
This reverts commit b589e3c499.
2024-11-11 04:09:53 +01:00
bayo-code
b589e3c499 List the supported targets using odin targets 2024-11-10 07:16:13 +01:00
gingerBill
20a8c97d68 Remove duplicates in -defineables 2024-11-08 11:24:00 +00:00
Jeroen van Rijn
3bfe675a68 && 2024-11-07 15:02:19 +01:00
Jeroen van Rijn
deb562613f Phrasing! 2024-11-07 13:13:58 +01:00
Jeroen van Rijn
925d8749e0 Suggest -microarch:native if popcnt instruction is missing.
Fixes #4453.
2024-11-07 12:56:49 +01:00
gingerBill
f02d621a8e Merge pull request #4394 from seventh-chord/errormessages
Suggestion when assigning enum to bit_set
2024-11-06 13:10:17 +00:00
gingerBill
e8f231ee72 Merge pull request #4437 from dpoetzschke/fix/windows-args-escaping
fix windows args parser problem from issue #4393
2024-11-06 13:08:55 +00:00
Jeroen van Rijn
e6475fec4d Merge pull request #4449 from 0dminnimda/add-pie
Link as PIE for PIC by default
2024-11-04 14:25:31 +01:00
gingerBill
a0b35f67f8 Fix previous commit for arrays 2024-11-04 12:51:54 +00:00
0dminnimda
5e308cef5e Revert further simplifiction 2024-11-04 15:50:43 +03:00
gingerBill
bbf76fa43e Fix bug for foo().bar where foo() is a 0-value expression 2024-11-04 12:49:43 +00:00
0dminnimda
8ad5e46ff8 Simplify further 2024-11-04 15:44:07 +03:00
0dminnimda
c26e7e17a1 Simplify use of pie 2024-11-04 15:39:51 +03:00
gingerBill
31ea10490f Fix auto_cast matrix bug 2024-11-04 12:35:17 +00:00
0dminnimda
35f1b0f11e Add support for linking as pie 2024-11-04 02:35:49 +03:00
peachey2k2
04b000370b Add "-build-mode:dynamic" to the "odin help build" output 2024-11-01 15:51:18 +03:00
Dominik Pötzschke
f1de4804a5 added braces 2024-10-31 16:18:12 +01:00
Dominik Pötzschke
d74f215490 adjust memory allocation 2024-10-30 22:30:56 +01:00
gingerBill
8a00d85cea Merge branch 'master' of https://github.com/odin-lang/Odin 2024-10-30 14:12:57 +00:00
gingerBill
2392300ffb Add warning for unsigned >= 0 like conditions in a for loop 2024-10-30 14:12:49 +00:00
gingerBill
f469bbb004 Merge pull request #4425 from bobsayshilol/misc-fixes
Misc fixes
2024-10-30 12:24:23 +00:00
gingerBill
ee76acd665 Merge pull request #4427 from laytan/posix-additions
Finish sys/posix with Linux and partial Windows support & clean up other packages as a result
2024-10-30 11:43:47 +00:00
Dominik Pötzschke
6f966f30aa fix: fix windows params bug 2024-10-30 11:24:50 +01:00
Jeroen van Rijn
b46b34228e match_exact_value: return when type is compound
fixes #4431
2024-10-29 13:59:11 +01:00
Laytan
e064f8c6be fix #load_directory including nested directories 2024-10-28 18:59:39 +01:00
bobsayshilol
b59647084b Plug a memory leak
The call to |array_make()| always allocates and since this variable was
unused it lead to a leak. Simply plug it by removing it.
2024-10-27 22:02:34 +00:00
bobsayshilol
bb308b3ff4 Add missing guards around push/pop pragmas
This matches all the other places where we silence Windows warnings.
2024-10-27 22:02:34 +00:00
bobsayshilol
c1496ab6c0 Fix passing nullptr to args marked as non-null
libstdc++'s |memcpy| and |memset| both state that their inputs should
never be a nullptr since this matches the C spec. Some compilers act on
these hints, so we shouldn't unconditionally call these as it would
signal to the compiler that they can't be nullptrs.

As an example, the following code will always call |do_something()|
when compiled with optimisations since GCC version 4.9:
```
    void clear(void *ptr, int size) {
        memset(ptr, 0, size);
    }
    void example(void *ptr, int size) {
        clear(ptr, size);
        if (ptr != nullptr) do_something();
    }
```
2024-10-27 22:02:34 +00:00
bobsayshilol
4f800a7fda Avoid undefined arithmetic shifting
The result of a left shift on a positive signed integer (Rune) must fit
into an unsigned integer otherwise it's undefined behaviour, as is left
shifting a negative integer by any amount. This code can only be hit if
|x >= 0xf0| and hence a left shift of 31 will always be undefined
unless the input is 0 or 1.

To avoid hitting this we can instead extend the lowest bit to be the
mask if we assume that ints are 2's complement, which we already do
elsewhere. This generates identical code in testing on Compiler
Explorer and the Odin test suite passes locally with this change.

Note that the original code would change to be defined behaviour in
C++20, however we are currently build with |-std=c++14| in the build
scripts.
2024-10-27 22:02:34 +00:00
bobsayshilol
e67692b066 Avoid member access through nullptr in debug
If |result_count| is 0 then |results| will be a nullptr and hence the
access |results->Tuple| is undefined behaviour. There's already an
early return in the 0 branch so move that to be the first thing so that
we can guarantee that it's not a nullptr.

Note that technically we take the address of the result so it's not
actually dereferencing it, however UBSan doesn't care about that.
2024-10-27 22:02:34 +00:00
bobsayshilol
771d308d64 Fix invalid union access
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|.
2024-10-27 21:24:36 +00:00